오케스트레이터(Execution Orchestrator) 패턴과 코레오그래피(Choreography) 패턴의 개념 및 비교

1. 개요

마이크로서비스 아키텍처(MSA)에서는 여러 서비스 간의 업무 흐름(Workflow) 제어 방식이 중요하다. 오케스트레이터 패턴과 코레오그래피 패턴은 마이크로서비스 아키텍처에서 복잡한 비즈니스 트랜잭션을 관리하고 여러 서비스 간의 데이터 일관성을 유지하는 데 사용되는 두 가지 핵심 디자인 패턴이다. 

2. 오케이스트레이터 패턴

  • 개념: 중앙 집중형 제어(Orchestrator)가 각 서비스의 실행 순서와 호출 흐름을 명시적으로 제어하는 패턴이다.
  • 동작 방식: 오케스트레이터는 워크플로우를 정의하고, 각 단계에서 필요한 서비스를 직접 호출(명령)하여 작업을 지시한다. 서비스는 자신의 작업을 완료한 후 결과를 오케스트레이터에게 보고다.
  • 통신 방식: 주로 동기적 통신 방식(예: HTTP REST API 호출)을 사용하며, 오케스트레이터가 서비스 간의 상호 작용 순서와 상태를 모두 알고 있다.
  • 특징:
    • 워크플로 제어가 중앙에서 관리되어 흐름 가시성·제어성 높음
    • 비즈니스 로직의 집중화 → 유지보수 용이
    • 단일 장애점(Single Point of Failure) 위험 존재
  • 예시: “주문 생성 → 결제 → 재고 확인 → 배송 요청” 절차를 중앙 서비스가 순서대로 호출

3. Choreography 패턴의 개념

  • 개념: 중앙 통제 컴포넌트 없이, 각 서비스가 이벤트(Event)를 발행하고 구독함으로써 독립적이고 분산된 방식으로 프로세스를 진행한다.
  • 동작 방식: 서비스 A가 작업을 완료하면 이벤트를 발행하고, 이 이벤트를 구독하고 있는 서비스 B는 이벤트를 수신하자마자 자율적으로 다음 작업을 시작하고, 다시 이벤트를 발행한다. 각 서비스는 전체 흐름을 알지 못하고 자신의 역할에만 반응한다.
  • 통신 방식: 주로 비동기적 통신 방식(예: 메시지 브로커, 이벤트 버스)을 사용한다.
  • 특징:
    • 느슨한 결합(Loose Coupling)
    • 확장성 및 복원력 우수
    • 전체 흐름 파악 및 디버깅이 어려움
  • 예시: 주문 서비스 → 결제 이벤트 발행 → 재고·배송 서비스가 해당 이벤트를 구독하여 처리

4. 비교

구분 오케스트레이터 코레오그래피
제어 주체 중앙 오케스트레이터 각 서비스 (분산 제어)
통신 방식 명시적 호출(Call) 기반 이벤트(Event) 기반
결합도 높음 (중앙 집중 구조) 낮음 (느슨한 결합)
확장성 낮음 높음
장애 영향 중앙 장애 시 전체 영향 국소적 영향에 제한
가시성 / 추적성 높음 낮음
적용 예 순차적·업무흐름 중심 프로세스 비동기·분산 이벤트 중심 시스템
오류 처리 오케스트레이터가 보상 트랜잭션을 중앙에서 직접 호출하여 처리 각 서비스가 자신의 이벤트를 통해 자율적으로 보상 처리

 

5. 선택 기준

  • 오케스트레이터 패턴 선택 시:
    • 비즈니스 프로세스가 복잡하고 단계가 많으며, 반드시 엄격한 순서를 따라야 할 때.
    • 중앙 집중식 모니터링 및 디버깅이 매우 중요할 때.
    • 서비스 간의 의존 관계가 명확하고 통제가 필수적일 때.
  • 코레오그래피 패턴 선택 시:
    • 비즈니스 프로세스가 상대적으로 단순하고 서비스 간의 느슨한 결합이 중요할 때.
    • 확장성탄력성이 최우선이며, 중앙 실패 지점을 피하고자 할 때.
    • 이벤트 기반 아키텍처(EDA)를 구축하여 비동기 처리를 극대화하고자 할 때.

6. 결론 (시사점)

오케스트레이터 패턴은 업무 흐름이 명확하고 통제 필요성이 높은 프로세스에 적합하며,
코레오그래피 패턴은 확장성과 자율성이 중요한 대규모 분산 환경에 적합하다.
최근에는 두 방식을 혼합한 하이브리드 이벤트 오케스트레이션(Hybrid Orchestration) 형태로 발전하고 있다.

+ Recent posts