[정보관리기술사 137회 1교시 7번] 마이크로서비스 오케스트레이션(Orchestration)과 코레오그래피(Choreography) 비교

I. 개요

마이크로서비스 아키텍처에서 여러 서비스에 걸친 분산 트랜잭션을 어떻게 조율할 것인가는 핵심 설계 과제이다. ACID가 보장되지 않는 분산 환경에서 Eventually Consistent 방식의 Saga 패턴이 주로 사용되며, 이 Saga를 구현하는 방식으로 오케스트레이션(Orchestration)과 코레오그래피(Choreography) 두 가지 접근이 존재한다.

II. 오케스트레이션 vs 코레오그래피 비교

구분 오케스트레이션 코레오그래피
제어 방식 중앙 조정자(Orchestrator)가 각 서비스에 명령 전달 각 서비스가 이벤트를 구독·발행하며 자율 반응
결합도 오케스트레이터에 종속 (중앙 집중적) 느슨한 결합 (이벤트 브로커 경유)
가시성 전체 흐름 파악 용이 전체 흐름 추적 어려움 (분산 추적 필요)
단일 장애점 오케스트레이터 장애 시 전체 영향 브로커 이중화로 단일 장애점 감소
구현 도구 Apache Airflow, Temporal, AWS Step Functions Kafka, RabbitMQ, AWS EventBridge

III. Saga 패턴과의 연계

Saga 패턴은 분산 트랜잭션을 로컬 트랜잭션 시퀀스로 분해하고, 실패 시 보상 트랜잭션(Compensating Transaction)으로 롤백을 구현한다. 오케스트레이션 Saga는 조정자가 보상 트랜잭션을 직접 호출하고, 코레오그래피 Saga는 각 서비스가 실패 이벤트를 발행해 다음 서비스가 보상을 수행한다.

IV. 선택 기준 및 결론

  • 오케스트레이션 적합: 복잡한 비즈니스 프로세스, 가시성·감사 로그 요구, 팀 역량이 중앙 집중 관리에 익숙한 경우
  • 코레오그래피 적합: 서비스 간 느슨한 결합이 최우선, 이벤트 중심 아키텍처, 서비스 수가 많고 독립 확장이 중요한 경우
핵심 키워드: Orchestration, Choreography, Saga Pattern, Compensating Transaction, Event-Driven Architecture, Eventual Consistency, Distributed Transaction

오케스트레이션과 코레오그래피를 고르는 기준

마이크로서비스에서 여러 서비스가 협력하는 업무 흐름을 조율하는 방식은 두 가지입니다. 오케스트레이션은 중앙 조정자가 순서를 지시하고, 코레오그래피는 각 서비스가 이벤트를 발행·구독하며 스스로 반응합니다.

오케스트레이션은 전체 흐름이 한곳에 보여 이해와 디버깅이 쉽지만 조정자가 결합 지점이 됩니다. 코레오그래피는 서비스 간 결합이 느슨하고 확장이 쉽지만 전체 흐름을 파악하기 어렵고 순환 의존이 숨어들 수 있습니다.

  • 사가(Saga) 패턴: 분산 트랜잭션 대신 로컬 트랜잭션과 보상 트랜잭션으로 일관성을 맞추며, 두 방식 모두로 구현할 수 있습니다.
  • 오케스트레이션 도구: Temporal, AWS Step Functions, Camunda 등 워크플로 엔진.
  • 코레오그래피 기반: Kafka 같은 메시지 브로커와 이벤트 스키마 관리.
  • 선택 기준: 단계가 많고 복잡한 업무 흐름은 오케스트레이션, 단순하고 독립적인 반응은 코레오그래피.
  • 혼합: 도메인 내부는 오케스트레이션, 도메인 사이는 이벤트로 연결하는 구성이 흔합니다.
정리 포인트
두 방식을 중앙 제어 대 분산 반응으로 비교하고 사가 패턴과 선택 기준으로 마무리하세요.

※ 이 글은 학습·참고용 정리입니다. 제품 사양과 표준 개정 사항은 공식 문서에서 최신 내용을 확인하세요.

Leave a Comment