[MSA 트랜잭션 #1] 오케스트레이션 vs 코레오그래피 — 여러 서비스의 흐름을 누가 지휘하나

MSA 트랜잭션 시리즈

  1. #1 오케스트레이션 vs 코레오그래피 — 지금 이 글
  2. #2 분산 트랜잭션 4가지 & Temporal

여러 마이크로서비스가 하나의 업무(예: 주문 → 결제 → 재고 → 알림)를 함께 처리할 때, “이 흐름을 누가, 어떻게 이어 붙이느냐”는 두 갈래로 나뉜다. 오케스트레이션(orchestration)코레오그래피(choreography)다. 다음 편에서 다룰 분산 트랜잭션 이야기의 토대가 되는 개념이라, 먼저 이 둘부터 정리한다.

1. 한 장으로 보는 차이

오케스트레이션(중앙 지휘) vs 코레오그래피(이벤트 연쇄) — 원본 제작
오케스트레이션(중앙 지휘) vs 코레오그래피(이벤트 연쇄) — 원본 제작

2. 코레오그래피 (안무) — 중앙 없이 이벤트로 연쇄

지휘자가 없다. 각 서비스는 다른 서비스가 낸 이벤트를 듣고 자기 일을 한 뒤, 다음 이벤트를 낸다. Order가 OrderCreated를 내면 Payment가 그걸 듣고 결제한 뒤 PaymentSettled를 내고, Inventory가 다시 그걸 듣는 식이다. (EDA 편에서 본 pub/sub 구조 그대로.)

  • 장점 — 서비스 간 결합이 느슨하다. 소비자를 새로 붙여도 기존 서비스는 그대로다.
  • 단점전체 흐름이 어디에도 한눈에 안 보인다. 로직이 여러 서비스에 흩어져, “지금 이 주문이 어디까지 갔지?”를 추적하기 어렵고 순환 의존이 생기기도 한다.

3. 오케스트레이션 (지휘자) — 중앙이 순서를 지시

오케스트레이터(orchestrator)라는 중앙 조율자가 흐름을 지휘한다. “Payment 호출 → 성공하면 Inventory 호출 → 실패하면 이렇게” 같은 순서와 분기를 한곳에서 관리하고, 각 서비스를 명령으로 부르고 결과를 취합한다.

  • 장점 — 전체 흐름이 한곳에 모여 보이고, 바꾸기·모니터링하기 쉽다. 실패 처리·재시도·타임아웃을 중앙에서 일관되게 건다.
  • 단점 — 오케스트레이터가 결합점이 된다. 이 지점의 설계·가용성이 전체를 좌우한다.

4. 언제 무엇을

코레오그래피 오케스트레이션
흐름의 소재 여러 서비스에 분산 오케스트레이터 한곳
결합도 느슨함 중앙에 집중
가시성/추적 어렵다 쉽다
적합 단순·독립적인 파급 순서·분기·보상이 복잡한 업무

둘은 배타적이지 않다. 큰 시스템은 대개 섞어 쓴다 — 느슨한 파급은 이벤트로, 순서가 중요한 핵심 업무는 오케스트레이터로. 다음 편에서 다룰 분산 트랜잭션이 바로 이 “순서가 중요한 핵심 업무”의 대표 사례다.

참고

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다