TestForge | Aidevops | 📊 Plogger ✍️ Blog 📚 Docs
plogger

AI DevOps Korea

AI 서비스 개발, 운영, 성능개선을 하나의 루프로 연결합니다

aidevops.kr에서 LLMOps, RAG, AI Agent, 관측성, 평가, 비용-성능 최적화를 실전 운영 관점으로 정리합니다.

Saga 오케스트레이션 vs 코레오그래피

· 수정 4월 28일

Saga 오케스트레이션과 코레오그래피는 취향 차이처럼 보이기 쉽지만, 실제 운영에서는 서비스 자율성과 전체 흐름 가시성 사이의 선택에 가깝습니다.

코레오그래피는 초반에 단순해 보인다

각 서비스가 도메인 이벤트를 구독하고 다음 이벤트를 발행하는 구조는 처음에는 우아해 보입니다. 중앙 조정자가 없기 때문입니다.

특히 다음과 같을 때 잘 맞습니다.

  • 워크플로가 짧을 때
  • 서비스 경계가 이미 뚜렷할 때
  • 실패 경로가 단순하고 재처리가 쉬울 때

코레오그래피의 숨은 비용

흐름이 길어질수록 로직은 점점 보이지 않게 됩니다. 그 순간부터 다음 질문이 비싸집니다.

  • 현재 어느 단계가 전체 상태를 쥐고 있는가
  • 프로세스가 어디에서 얼마나 오래 멈췄는가
  • 다음 보상 작업은 무엇이어야 하는가
  • 고객지원이나 운영팀이 한 거래를 끝까지 어떻게 추적할 것인가

코드상으로는 분산돼 있어도 운영에서는 더 헷갈릴 수 있습니다.

오케스트레이션은 의도적으로 제어를 추가한다

오케스트레이터는 워크플로 상태를 명시적으로 가지고 다음 명령을 결정합니다. 그래서 다음이 좋아집니다.

  • 추적성
  • 타임아웃 처리
  • 재시도 정책 일관성
  • 장기 실행 플로우에 대한 운영 도구화

대신 워크플로 정의와 중앙 제어에 대한 결합은 높아집니다.

실전 선택 기준

전체 워크플로가 없어도 도메인 이벤트 자체가 의미 있다면 코레오그래피가 좋습니다. 반대로 비즈니스 프로세스 자체가 제품 핵심 단위이고, 그것이 보여야 하고 복구 가능해야 하며 감사 가능해야 한다면 오케스트레이션이 더 낫습니다.

패턴 이름보다 더 중요한 것

어떤 Saga 패턴도 약한 계약을 구해주지는 못합니다. 결국 필요한 것은 같습니다.

  • idempotent 핸들러
  • 명시적 재시도 경계
  • 안정적인 이벤트 스키마
  • 비즈니스 트랜잭션 id 기준의 관측성

정답은 멋진 패턴 이름이 아니라, 새벽 장애 때 팀이 흐름이 어디서 사라졌는지 추측하지 않고 찾을 수 있는 구조입니다.

Continue Reading

다음으로 읽기 좋은 글

다음 탐색

이 주제를 시스템 관점으로 더 이어서 보기