Skip to content

Latest commit

 

History

History
43 lines (30 loc) · 2.92 KB

MSA를_이해하기_위한_#2.md

File metadata and controls

43 lines (30 loc) · 2.92 KB

MSA(Micro Service Architecture)를 이해하기 위한 #2


MSA 핵심 디자인 패턴


Saga Pattern

사가 패턴은 MSA에서 분산 트랜잭션 문제를 처리하는 방법.
여러 서비스에서 트랜잭션을 처리하는 경우 모든 서비스가 정상적으로 처리되어야 하지만, 어떤 서비스에서 오류가 발생하면 모든 트랜잭션을 취소 (롤백) 해야 한다.
이를 위해 사가 패턴에서는 하나의 큰 트랜잭션을 여러 개의 로컬 트랜잭션으로 분리하고, 각각의 로컬 트랜잭션이 성공적으로 완료되면 다음 로컬 트랜잭션을 실행한다.
만약 오류가 발생하면 지금까지 완료된 로컬 트랜잭션을 보완하는 로직을 실행하여 일관성을 유지합니다.


Event Sourcing Pattern

이벤트 소싱 패턴은 상태 변화를 이벤트로 캡쳐하고, 이 이벤트들을 순서대로 저장함으로써 상태를 재구성하는 방식.
이벤트 소싱은 이벤트 저장소에 모든 상태 변화를 저장하므로, 시스템의 상태를 과거 어느 시점으로도 롤백 하거나 이해하는데 유용.
또한, 이벤트를 기반으로 비즈니스 인텔리전스, 통계 등을 생성하는 것도 용이합니다.


CQRS (Command Query Responsibility Segregation)

CQRS는 시스템을 명령(Command)을 처리하는 부분과 조회(Query)를 처리하는 부분으로 분리하는 패턴.
이 방식은 명령과 조회 작업이 서로 다른 성능과 스케일 요구사항을 가질 수 있기 때문에 유용.
명령 모델은 상태를 변경하고, 조회 모델은 상태를 읽는데 집중합니다. 이렇게 분리함으로써 각각의 모델을 독립적으로 최적화하고 확장할 수 있다.


BFF (Backend For Frontend)

BFF는 특정 사용자 인터페이스에 대한 모든 서버 사이드 로직을 캡슐화하는 아키텍처 패턴.
이 패턴은 각 사용자 인터페이스(예: 모바일 앱, 웹 페이지 등)가 필요로 하는 데이터와 상호작용만을 제공하는 API를 생성하는 데 목적이 있다.
이렇게 함으로써 사용자 인터페이스가 사용하기 쉽고, 성능이 좋은 API를 사용 -> 사용자 경험 개선.


API Gateway

API 게이트웨이는 마이크로 서비스 구조에서 클라이언트와 각각의 마이크로 서비스 사이의 중심적인 진입점 역할.
이 API 게이트웨이는 클라이언트의 요청을 적절한 서비스로 라우팅하고, 여러 서비스의 응답을 집계해서 클라이언트에 반환하는 역할을 한다.

또한 인증, 페일 오버, SSL 종료 등의 역할을 수행.
API 게이트웨이는 마이크로 서비스를 묶는 중심적인 역할을 하므로, 클라이언트는 마치 하나의 서비스와 대화하고 있는 것처럼 느낄 수 있다.