Design Patterns 12

마이크로 서비스패턴 - 13장. 마이크로서비스로 리펙터링

이 블로그는 마이크로서비스패턴 (길벗) 책 내용을 스터디를 위해 정리 한 내용 입니다. 책구매는 바로가기 에서 구매 가능합니다. "스트랭글러 애플리케이션(Strangler application), 모놀리스테어 서비스를 하나씩 추출해 마이크로 서비스에 새기능으로 구현, 스트랭글러 애플리케이션을 점점 키우며 모놀리스를 고사시킨다." 이번장에서는 마이크로서비스로의 리팩터링의 필요성, 스트랭글러 애플리케이션 개방 방법, 모놀리스와의 연계등 다양한 주제를 훑어 본다. 마이크로서비스 리팩터링 개요 마이크로서비스로의 리팩터링은 모놀리식이 형편 없어서 가 아니라, 모놀리식 지옥에 빠져 갖가지 소프트웨어 개발 문제가 발생하기 때문이다. 모놀리스를 왜 리팩터링 하는가? 마이크로서비스 아키텍처는 유지보수성, 테스트성, 확장..

Design Patterns 2022.04.24

마이크로 서비스패턴 - 11장. 프로덕션 레디 서비스 개발

이 블로그는 마이크로서비스패턴 (길벗) 책 내용을 스터디를 위해 정리 한 내용 입니다. 책구매는 바로가기 에서 구매 가능합니다. 서비스가 배포되기 위해서는 보안, 구성성, 관측성이 보장 되어야 한다. 이번 장에서는 서비스가 정상적으로 배포되어야 할 요소들을 어떻게 제공하는지에 대해서 알아본다. 보안서비스 개발 애플리케이션 개발자는 주로 다음 네가지의 보안 요소를 구현한다. 인증 : 애플리케이션에 접근하는 애플리케이션이나 사람의 신원을 체크한다. 일반적으로 인증키나 로그인 계정과 비밀번호를 사용한다. 인가 : 어떤 주체가 요청을 보내왔을 경우 해당 요청을 수행할 수 있는 권한이 있는지 체크 한다.일반적으로 역할기반 (ROLE) 이나 접근제어리스트(ACL Access Control List) 를 함께 사용한..

Design Patterns 2022.04.17

마이크로서비스(Microservice?) 란?

이번 블로그는 보편적인 IT지식을 가지고 있지만 시스템 설계구조에 대해서는 그렇치 않은 IT담당자들을 대상으로, 마이크로서비스가 어떤 것인지에 대해 간략하게 설명 하고자 한다. 마이크로 서비스 (Microservice) 마이크로서비스, 혹은 마이크로서비스 아키텍처는 독립적으로 수행되는 소규모의 시스템들이 명확하고 절대적으로 분리된 인터페이스 정의에 의해 긴밀하게 통신하는 아키텍처 기반의 접근, 구현 방식이다. 좀 어렵게 들리겠지만, 간단히 말해 서비스를 작은 단위로 쪼개고, 그 작게 쪼갠 서비스는 독립적으로 수행되며, 독립적으로 수행되는 서비스끼리 정해놓은 규칙으로 인터페이스 하며 하나의 대규모 서비스를 제공한다 라고 이해하면 된다. 기존 시스템들은 하나의 시스템 자원을 공유하며 하나의 덩어리안에서 서비..

Design Patterns 2022.04.16

마이크로 서비스패턴 - 7장. 마이크로서비스 쿼리 구현

이 블로그는 마이크로서비스패턴 (길벗) 책 내용을 스터디를 위해 정리 한 내용 입니다. 책구매는 바로가기 에서 구매 가능합니다. 마이크로 서비스에서 쿼리는 API조합패턴과 CQRS 패턴으로 쿼리를 구현한다. 이번장에서는 이 두 API 에 대해 설명 한다. API 조합 패턴 응용 쿼리 findOrder() 쿼리 모놀리식 시스템은 전체 데이터가 하나의 DB에 있기 때문에 SELECT 문으로 쉽게 여러 테이블 데이터를 조회할 수 있다. 하지만 마이크로 서비스 어키텍처는 데이터가 여러 시스템에 뿔뿔이 흩어져 있기 때문에 조회가 어렵다. 주문ID를 기준으로 주문을 조회하여 주문 상세를 return 하는 findOrder() 가 있다고 하자. 다양한 정보를 모아 return 해주어야 한다. 이 시스템들이 여러군데 ..

Design Patterns 2022.04.07

마이크로 서비스패턴 - 6장. 비즈니스 로직 개발 : 이벤트 소싱

이 블로그는 마이크로서비스패턴 (길벗) 책 내용을 스터디를 위해 정리 한 내용 입니다. 책구매는 바로가기 에서 구매 가능합니다. 이 장은 이벤트 소싱의 작동 원리를 살펴보고, 비즈니스로직을 작성하는 방법에 대해 설명한다. 이벤트 소싱 응용 비즈니스 로직 개발 이벤트 소싱이란? 이벤트 소싱은 데이터를 저장하는 방식중의 하나로 발생한 이벤트를 저장하는 기법이다. 주로 비즈니스 로직을 구성하고, 애그리거트를 저장하는 기법이다. 이벤트는 애그리거트의 상태 변화를 나타낸다. 이벤트의 최종 결과값이 아니라, 이벤트로 발생된 모든 상태를 저장한다. 이벤트의 모든 상태를 저장하기때문에 조회가 쉽지 않아 CQRS 패턴을 적용해야 한다. 기존 영속화의 문제점 기존 영속화는 클래스는 테이블, 필드는 컬럼, 인스턴스는 각 R..

Design Patterns 2022.03.27

마이크로 서비스패턴 - 5장. 비즈니스 로직 설계

이 블로그는 마이크로서비스패턴 (길벗) 책 내용을 스터디를 위해 정리 한 내용 입니다. 책구매는 바로가기 에서 구매 가능합니다. 5장은 DDD 설계의 전술적설계를 설명하는 단원이다. 전략적 설계를 통해 도출된 바운디드 컨텍스트와 도메인 모델을 기반으로 좀더 상세한 도메인 모델을 정의한다. 전술적 패턴은 단일 컨텍스트를 기반으로 적용된다. 비즈니스 로직 구성패턴 비즈니스 로직 설계 : 트랜잭션 스크립트 패턴 절차적 트랜잭션 스크립트 패턴. 객체지향적 설계를 하지 않고, 하나의 트랜잭션으로 구성된 로직을 단일 함수 또는 단일 스크립트에서 처리 하는 구조를 갖는다. 예를 들어, 주문생성 -> 결제 -> 주문승인 -> 완료 순의 순서가 하나의 로직에서 처리되어야 하고, 중간에 오류가 발생하면 모두 취소된다. 트..

Design Patterns 2022.03.19

마이크로서비스 패턴 - 4장. 트랜잭션 관리 : SAGA

이 블로그는 마이크로서비스패턴 (길벗) 책 내용을 스터디를 위해 정리 한 내용 입니다. 책구매는 바로가기 에서 구매 가능합니다. SAGA란? SAGA는 약자가 아닌, 1987년 처음 지정된 공통 용어이다. LLT (Long Lived Transactions) 을 의미 하는 단어이다. 사실 SAGA 는 사전적인의미로 '말해진것', '말로 전하다' 등으로, 아마 SAGA 패턴도 데이터 적으로 봤을때 '발생한 데이터' 로 그 데이터를 전달 한다로 이해 할수 있다. 마이크로서비스 아키텍처에서의 트랜잭션관리 분산 트랜잭션의 필요성 모놀리식 서비스에서의 트랜잭션 관리는, DB에게 위임하기때문에 어렵지 않다. 그러나 마이크로서비스 패턴에서의 트랜잭션은 DB를 여러개 사용하기도 하고, IPC 를 이용해 개별 DB를 가..

Design Patterns 2022.03.09

마이크로 서비스 패턴 - 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