오케스트레이션형 사가
오케스트레이션형 사가는 중앙 조정자(오케스트레이터)를 사용해 실행 순서를 정의하고 필요한 보상 조치를 트리거한다. 오케스트레이션 기반 사가는 명령과 제어 방식이라고 생각할 수 있다. 오케스트레이터는 어떤 일이 언제 일어나는지를 제어하며, 이를 통해 사가에서 어떤 일이 일어나는지를 충분히 파악할 수 있다.
- 장점: 워크플로 로직이 중앙 집중화되어 이해하고 관리하기 비교적 쉽고, 전체 프로세스의 상태를 추적하기 용이하다.
- 단점: 오케스트레이터가 단일 실패 지점(Single Point of Failure) 또는 병목 지점이 될 수 있다. 참여 서비스들은 오케스트레이터에 종속될 수 있다.
코레오그래피형 사가
코레오그래피형 사가는 여러 협력 서비스 사이에서 사가 운영에 대한 책임을 분산시키는 것을 목표로 한다. 오케스트레이션 기반 사가가 명령과 제어 방식이라면, 코레오그래피형 사가는 신뢰하지만 검증된 아키텍처를 나타낸다. 코레오그래피형 사가는 종종 서비스 간 협업을 위해 이벤트를 많이 사용한다.
중앙 컨트롤러 없이 각 서비스가 이벤트를 발행하고, 다른 서비스들이 이 이벤트를 구독하여 반응하는 방식으로 워크플로를 진행한다. 예를 들어, 주문 서비스가가 'OrderCreated' 이벤트를 발행하면, 재고 서비스는 이 이벤트를 듣고 재고를 확인한 후 'StockReserved' 이벤트를 발행하고, 결제 서비스는 이를 듣고 결제를 시도하는 식이다.
- 장점: 서비스 간의 결합도가 낮아(Loosely Coupled) 유연하고 확장성이 좋다. 중앙 컨트롤러가 없어 단일 실패 지점 문제가 없다.
- 단점: 전체 워크플로를 파악하기 어렵다. 어떤 서비스가 어떤 이벤트에 반응하는지 추적하기 복잡하며, 디버깅이나 모니터링이 어려울 수 있다. 이벤트 순서 보장이나 중복 처리 등 고려할 점이 많다. (사가에 대한 고유 ID인 상관관계 ID-correlation Id-로 관리하자)
'기타' 카테고리의 다른 글
[MSA] 분산 트랜잭션의 문제 해결 - 사가(Saga) (0) | 2025.05.01 |
---|---|
3-Way Handshake & 4-Way Handshake (0) | 2025.05.01 |
(Synchronous || Asynchronous) || (Blocking || Non-Blocking) (0) | 2025.05.01 |
지식이 값싼 시대 (0) | 2025.04.30 |
[MSA] 마이크로서비스 통신 방식 (0) | 2025.04.22 |
댓글