전체 글 94

마이크로 서비스 패턴 - 3장. 프로세스 간 통신

이 블로그는 마이크로서비스패턴 (길벗) 책 내용을 스터디를 위해 정리 한 내용 입니다. 책구매는 바로가기 에서 구매 가능합니다. 마이크로 서비스 아키텍처 IPC 개요 IPC (Inter-Process Communication, 프로세스간 통신) : 프로세스들 사이에 서로 데이터를 주고 받는 행위, 또는 그에 대한 방법이나 경로를 뜻한다. (위키백과) 이 장에서는 마이크로서비스 / 프로세스간에 통신 방법에 대해서 설명한다. REST, gRPC 등과 같은 동기방식, AMQP, STOMP 등 비동기방식의 통신 방법에 대해서 설명한다. 상호작용 스타일 클라이언트 / 서버간의 인터페이스는 상호작용에 따라 두가지 기준으로 분류할 수 있다. 첫번째 일대일 / 일대다 여부이다. 일대일 : 하나의 클라이언트 요청은 하나..

Design Patterns 2022.03.01

도메인 주도 설계 (Domain Driven Design )

도메인 주도 설계 란? " 도메인과 일치하도록 소프트웨어를 모델링하는 데 중점을 둔 소프트웨어 설계 접근 방식. 중요한 특징은 소프트웨어 코드의 구조와 언어(클래스 이름, 클래스 메소드, 클래스 변수 )가 비즈니스 도메인의 용어를 일치시켜 나간다는 점 " 도메인 주도가 필요한 이유 모놀리식으로 개발시 마구잡이식으로 영역 구분없이 어플리케이션을 개발하면, 추가 개발 등의 업무를 진행할때, 영역 구분이 없는 어플리케이션을 수정해야 하므로, 영향범위를 파악하기 어렵고, 최악의 경우는 하나의 수정을 위해 이미 개발해놓은 모든것을 수정해야 할 수도 있다. 도메인 도메인 실 세계에서 사건이 발생하는 집합이다. 실제 소프트웨어로 구현되어야 할 행동 영역이다. 도메인 주도 설계에서 도메인을 먼저 정의 한다. 실제 구현..

Design Patterns 2022.02.19

마이크로 서비스 패턴 - 2장. 분해전략

이 블로그는 마이크로서비스패턴 (길벗) 책 내용을 스터디를 위해 정리 한 내용 입니다. 책구매는 바로가기 에서 구매 가능합니다. 마이크로 서비스 아키텍처란 무엇인가? 마이크로 서비스 아키텍처의 핵심 사상은 기능 분해이다. 간단히 애플리케이션을 여러 서비스로 구성 하는 것이다. 소프트웨어 아키텍쳐는 구성요소 및 그들간의 디펜던시 로 엮은 구조물이다. 어플리케이션 아키텍쳐는 다차원적이므로 기술하는 방법이 다양하다. 아키텍처가 주요한 이유는, 소프트웨어의 속성 지표가 아키텍처에 의해 결정되기 떄문이다. 소프트웨어는 신뢰, 확정, 보안등이 목표였지만 지금은 신속/안전하게 소프트웨어를 전달 하는 능력도 중요해지고 있다. 소프트웨어 아키텍처의 정의와 중요성 소프트웨어 아키텍처의 정의 "컴퓨팅 시스템의 소프트웨어 아..

Design Patterns 2022.02.13

Spring Cloud Gateway 3.1.0

본 문서는 3.1.0 버젼을 기준으로 번역 되었습니다. 1. Spring Cloud Gateway Spring Cloud Gateway 는 Spring 5, Spring Boot2, 그리고 Project Reactor 를 포함한 Spring 생태계를 기반으로 구축 되었다. Spring Cloud Gateway는 단순하게 제공되고, 효과적인 방법으로 라우팅되며, 모니터링, 메트릭, 복원력등 크로스컷 관심사를 제공하는데 목표를 둡니다. 2. 용어 Route (라우트, 경로) : 게이트웨이의 기본 단위입니다. ID, 목적지 URI, 서술어 모음 (predicates) , 필터 모음 (filters), 등으로 정의 됩니다. 라우트가 일치하면 해당 요건을 처리 하게 됩니다. Predicate (프레디케이트, 조건..

Framework/Spring 2022.01.18

MongoDB - Text Index

MongoDB 텍스트 인덱스 MongoDB 의 텍스트 검색은 텍스트 매칭이 다가 아니다. 형태소를 분리 한다음, 단어를 끄집어낸뒤, 각 단어와 유사한 단어를 검색 하는 기능이다. 웹사이트의 검색처럼 형태소를 분리 해서 검색하는 유사한 검색 방식을 제공하지만 검색 엔진처럼 유사어 등과 같이 파워풀한 기능을 제공하지는 못한다. MongoDB 지원기능 컬렉션은 하나의 인덱스만 가질 수 있다. 인덱스 지정은 다음과 같이 한다. db.products.createIndex({ name: 'text', description: 'text', tags: 'text' }); * 인덱스 필드 지정시 -1 이나 1이 아닌 text 로 지정한다. * 텍스트 인덱스가 될 필드를 지정 할 수 있으며, 지정된 필드는 단일 필드인 것..

Database/MongoDB 2022.01.12

MongoDB - 6. INDEX

인덱스 인덱스는 MongoDB 의 쿼리를 더 효과적으로 수행할수 있게 도와주는 기능이다. Document 를 주어진 조건에 맞게 색인 한다음, 해당 색인을 기준으로 데이터를 조회 하는 방식이다. 만약 이 인덱스가 존재 하지 않는다면, 마치 특정 단어를 찾기위해 사전의 첫장부터 단어가 나올때까지 한 단어씩 검색하는 FULL-SCAN 방식으로 조회 해야 하기때문에 시간과 비용이 많이 발생 한다. MongoDB 는 Document의 특정 부분 (지정한 부분) 을 B-TREE 구조로 저장 해둔다. 그리고 저장된 값을 이용해 데이터를 조회, 정렬한다. B-TREE 는 이진 트리 형태로 데이터를 저장하는 방식이다. 각 값들은 자기보다 작은 값을 앞에, 자신보다 큰값을 뒤에 저장한다. 자세한 B-TREE 설명은 따로..

Database/MongoDB 2021.12.20

MongoDB - 5. Aggregation

이전 보다 더 심도 있게 쿼리를 사용해보자. 이번장에서는 두 컬렉션과의 관계 데이터를 추출하는 방식과, 보다 나은 성능을 위한 쿼리까지 알아 볼것이다. 참고 : https://docs.mongodb.com/manual/aggregation/ Aggregation(집계/집합) 프로세스는 데이터를 처리하고, 처리된 결과를 반환하는 프로세스를 말한다. 여러개의 데이터를 를 하나의 기준에서 그룹으로 묶고 하나의 결과로 return 할 수 있다. 이러한 작업을 위해 MongoDB 는 Aggregation Pipeline, map-reduce funtion, 그리고 Single Purpose Aggregation method 를 제공한다. Aggregation Pipeline 참고 : https://docs.mon..

Database/MongoDB 2021.10.24

MongoDB - 4. Qeury

이전까지는 샘플로 Query 를 작성해 간단한 데이터 조회만 담당 했다면, 이번에는 다양한 조회 옵션을 이용해 조금더 심도 있게 Query 를 조회 해 보자. FIND - 기본 조회 METHOD 조회된 Document 를 여러개 출력할 것인지, 단 하나만 출력할것인지에 따라 find 와 findOne 을 골라 사용할 수 있다. findOne Document 를 반환함 조회된 결과중 하나의 객체만 조회 여러개일 경우 자연정렬(삽입순서) 대로 1개의 데이터만 출력 find Cursor 를 반환함 조회된 모든 객체를 조회 findOne 의 경우 하나의 Document 만 출력되므로 그대로 사용하면 되지만, find 의 경우 조회된 Document 들의 위치값을 반환하므로 커서를 반복해서 조회된 Document..

Database/MongoDB 2021.10.21

MongoDB - 3. Data Model

데이터 베이스 스키마 모델링 우리는 어플리케이션 개발시 데이터베이스는 거의 필수로 사용하고 있다. 데이터베이스를 사용하기로 결정한 뒤, 구성하기 위해서는 다양한 고민이 필요하다. 다음은 데이터베이스를 구성할 때 일반적으로 고민 하는 몇개의 판단이다. 첫번째, 데이터 베이스에 대한 선택이다. MongoDB 가 어플레케이션에서 사용하기에 가장 편한 구조인 Document 형을 사용하고, 대량의 데이터를 빠르게 찾고, Insert 를 할 수 있는 장점이 많은 데이터베이스 이지만, 관계형 데이터를 사용할 수 없고, 트랜잭션 처리가 힘든 단점이 있다. 때문에, 데이터베이스를 선택할때 이 장점과 단점을 고려해 알맞게 선택 해야 한다. 두번째, 데이터베이스에 대한 사용성이다. MongoDB 는 realation 을 ..

Database/MongoDB 2021.10.12

Docker로 GIT Server 설치 와 셋업

사전환경 CentOS 8 Docker CE DOCKER GITLAB 설치 gitlab 도커 이미지를 pull 받는다. Docker HUB 에서 CE 버젼은 (https://hub.docker.com/_/gitlab-community-edition) 이다. EE 버젼의 주소는 (https://hub.docker.com/_/gitlab-enterprise-edition) 이곳이다. CE와 EE는 라이센스 버젼 차이이며, EE 일경우에 30일 지나도 라이센스를 구매 하지 않으면 core 만 사용가능하며, 다른 기능은 이용 할 수 없다. 우리는 CE 를 설치 한다. docker pull store/gitlab/gitlab-ce:11.10.4-ce.0 설치를 확인하고, 다음 명령어로 실제 docker 를 수행한다..

Solution/GIT 2021.10.04