반응형

Computer Engineering/컴퓨터 과학(CS: Computer Science) 17

[CS] 도메인 주도 설계(DDD: Domain-Driven Design)란?

DDD란? 애플리케이션을 개발함에 있어 성능, 생산성, 안정성 모두 뛰어난 애플리케이션을 만들기 위해서는 애플리케이션 설계를 잘하는 것이 중요하다. 어떻게 하면 더 나은 애플리케이션을 잘 설계할 수 있는지에 대해 고민하여 얻은 여러 결과물 중 하나가 DDD(Domain-Driven Design), 도메인 주도 설계이다. 의미 그대로 도메인 위주의 설계 기법이다. DDD는 굉장히 뛰어난 설계 및 구현 기법이지만, DDD의 개념을 완벽히 이해하는 것은 쉽지 않으며, 많은 학습과 설계 경험을 필요로 한다. 또한, DDD는 Spring Data JDBC라는 기술과 밀접한 연관이 있어 Spring Data JDBC를 사용하기 위해서는 DDD에 대한 개념을 이해하고 있어야 한다. 도메인(Domain) 애플리케이션 ..

[CS] 인증(Authentication)과 인가(Authorization, 권한 부여)

Intro 인증(Authentication)과 인가(Authorization, 권한 부여)는 컴퓨터에서 보안과 관련된 용어이다. 실생활에서 인증과 인가를 별도로 구분할 경우가 많이 없지만, 컴퓨터 세계에서는 이를 구분 지어 처리한다. 인증(Authentication)이란? 인증은 사용자 또는 디바이스 등의 신원 정보를 확인하는 과정이다. 특정 서비스에 회원 가입을 하고, 로그인하는 과정이 인증에 해당한다. 여러 웹 서비스들은 회원이어야 만이 이용할 수 있는 경우가 많다. 회원이 아닐 경우에는 해당 서비스를 이용하기 위해서는 회원 가입을 통해 아이디와 패스워드를 만들고, 회원 가입하려는 사용자가 본인이 맞는지 확인하는 절차를 가지게 된다. 회원일 경우에는 로그인을 함으로 회원이 맞음을 인증해야 한다. 아이..

[CS] 아키텍처(Architecture)란 무엇인가?

아키텍처(Architecture) 아키텍처는 건축 분야에서 유래된 용어로 요구 사항을 만족하는 건물을 짓기 위한 청사진과 같은 역할을 한다. 만약, 특정 건물을 짓는다면 여러 이해 관계자들이 만나 논의를 할 것이다. 이해 관계자들은 건물의 주인, 건물을 설계하는 건축가, 설계를 토대로 건물을 짓는 시공사 등이다. 이처럼 아키텍처는 이해 당사자들을 위한 어떤 건물이나 구조물에 대한 컨셉을 잡는 것으로부터 시작한다고 할 수 있다. 컴퓨터 공학에서도 이러한 아키텍처를 비슷한 의미로 사용하고 있다. 컴퓨터 분야에서는 크게 시스템 아키텍처, 소프트웨어 / 애플리케이션 아키텍처, 웹 애플리케이션 아키텍처 등이 있다. 시스템 아키텍처(System Architecture) 시스템 아키텍처는 하드웨어와 소프트웨어를 모두..

[CS] 프레임워크(Framework)란 무엇인가?

프레임워크(Framework) 디자인 패턴(Design Pattern)을 창시한 GoF의 한 명이자, 프레임워크 설계의 대가 랄프 존슨(Ralph Johnson)은 프레임워크를 “소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하도록 일련의 협업화된 형태로 클래스들을 제공하는 것”이라 정의했다. 하지만, 위 문장으로 소프트웨어 관점에서 프레임워크의 의미를 이해하기에는 쉽지 않다. Frame은 ‘뼈대’, ‘틀’, ‘구조’ 등의 의미를 가지고 있으며, 그림이나 사진을 담는 액자를 프레임이라 부르기도 한다. 자동차의 뼈대가 되는 강판으로 된 껍데기 또한 자동차의 프레임이라고 부른다. 이처럼 Frame은 어떤 대상의 큰 틀이나 외형적인 구조를 의미하는데, 프로그래밍에서도 Frame은 이와 비슷한..

[CS] 그래프(Graph)란 무엇인가?

그래프 (Graph) 그래프는 여러 개의 점들이 서로 복잡하게 연결되어 있는 관계를 표현한 자료구조이다. 컴퓨터 공학에서 사용하는 그래프는 X축과 Y축의 값을 나타내는 그래프와는 다른 모습을 가지고 있다. 여러 개의 점들이 선으로 이어져 네트워크 망과 비슷한 모습을 가지고 있다. 컴퓨터 공학의 그래프는 지하철 노선도, 전기 회로, 도로 교통망, 거미줄 등과 같은 모습과 유사하다. 그래프는 트리 그래프와는 달리 루트 노드의 개념이 없고, 사이클이 존재하며, 방향 그래프와 무방향 그래프로 나눌 수 있다. 또한, 부모-자식 관계의 개념이 없다. 그래프의 용어 정점 (Vertex) 하나의 점을 표현하는 것으로, 그래프의 위치를 나타낸다. 이를 노드라고도 한다. 간선(Edge) 위치 간의 관계를 선으로 나타낸 것..

[CS] 트리(Tree)란 무엇인가?

트리란? 트리구조는 나무를 뒤집어 놓은 모습과 유사한 구조를 가지고 있어 붙여진 이름이다. 하나의 뿌리(루트 노드)로부터 가지를 뻗어 값을 이룬 형태가 나무와 닮아 있다. 트리는 그래프의 여러 구조 중 단방향 그래프의 한 구조이다. 트리구조는 데이터가 하나 이상의 다른 데이터에 무방향으로 연결된 계층적 자료구조이다. 데이터를 순차적으로 나열시킨 선형 구조가 아닌 하나의 데이터 아래에 여러 개의 데이터가 존재할 수 있는 비선형 구조이다. 또한, 단방향으로 연결되어 아래로만 뻗어 나가기 때문에 사이클이 존재하지 않는다. 트리의 구조와 특징 루트(Root) 최상위에 존재하는 데이터는 루트(Root)라고 한다. 루트부터 시작하여 여러 개의 데이터를 간선(edge)으로 연결한다. 노드(Node) 노드는 루트를 포..

[CS] 큐(Queue)란 무엇인가?

큐(Queue) 큐는 ‘줄을 서서 기다리다.’, ‘대기행렬’이라는 의미를 가진다. 마치 영화표를 예매하기 위해 줄을 서서 기다리는 것과 비슷한 형태의 자료구조이다. 프로그래밍에서도 마치 데이터가 영화표를 예매하기 위해 큐라는 자료구조에 줄을 서서 대기한 다음, 예매를 성공한 데이터부터 빠져나가는 것이다. 또한 실생활에서 톨게이트를 지나가는 자동차와 빗대어 표현할 수도 있다. 따라서 큐는 스택과 반대되는 개념으로 가장 먼저 들어간 데이터가 가장 먼저 나오는 선입선출(FIFO : First In First Out) 구조로 되어 있어, 프로그래밍에서의 큐 자료구조는 데이터가 입력된 순서대로 처리할 때 주로 사용한다. 큐의 특징 선입선출 (FIFO : First In First Out) 먼저 들어간 데이터가 먼..

[CS] 스택(Stack)이란 무엇인가?

스택(Stack) 스택은 ‘쌓다.’, ‘쌓이다.’와 같은 뜻을 가진 용어로, 접시를 높이 쌓아 놓은 형태와 비슷한 자료구조이다. 즉, 데이터를 순서대로 쌓는 자료구조이다. 실생활에서 흔히 접할 수 있는 스택은 프링글스와 같은 원통에 들어가 있는 과자를 떠올리면 이해하기 쉽다. 가장 위에 있는(가장 나중에 들어간) 과자를 먼저 꺼내어 먹는 구조이기 때문이다. 스택은 가장 나중에 들어온 데이터가 가장 먼저 빠져나가는 후입 선출(LIFO : Last In First Out) 구조로 되어 있어, 프로그래밍에서 데이터가 입력된 순서대로 처리되는 것이 아닌, 가장 나중에 들어온 데이터를 먼저 처리할 때 사용한다. 스택의 특징 후입선출 (LIFO : Last In First Out) 먼저 들어간 데이터는 나중에 나오..

[CS] 자료구조란 무엇인가?

자료구조(Data Structure) 자료구조란 여러 데이터의 묶음을 저장하고, 사용하는 방법을 정의한 것이다. 데이터는 문자, 숫자, 소리, 이미지, 동영상 등 실생활을 구성하고 있는 모든 정보의 값을 말한다. 데이터들은 분석하고 정리하여 활용해야만 의미를 가질 수 있다. 이러한 데이터들의 규칙을 정하고, 체계적으로 정리하여 저장하는 등 여러 상황에 맞게 데이터를 효율적으로 다룰 수 있도록 만든 것이 자료구조이다. 자료구조의 종류 자료구조는 크게 단순 구조, 선형 구조, 비선형 구조, 파일 구조 네 가지로 분류할 수 있다. 단순 구조는 2진수, 정수와 실수, 문자, 문자열 등의 데이터를 나타내는 구조를 말하며, 파일 구조는 순차 파일, 색인 파일, 직접 파일 등이 있다. 다음은 효율적인 알고리즘을 사용..

Open API와 API Key

Open API Open API는 누구에게나 열려있는 API를 뜻한다. 그러나 완전 무료라는 의미는 아니다. API 마다 정해진 이용 수칙이 있으며, 해당 이용 수칙에 따라 가격이나 제한사항 등이 있을 수 있다. Open API는 정부에서 제공하는 공공 데이터나 기업체에서 개발한 API 등이 있다. Open API 예시 다음 링크는 날씨 정보를 제공하는 Open API이다. https://openweathermap.org/api Weather API - OpenWeatherMap Please, sign up to use our fast and easy-to-work weather APIs. As a start to use OpenWeather products, we recommend our One Cal..

반응형