---
id: P-REINFORCE-WIKI-9F08E403
category: "10_Wiki/💡 Topics/02_Architecture_Principles"
confidence_score: 0.95
tags: ['saga-pattern-(orchestration)', 'microservices-architecture', 'event-driven-architecture', 'mediator-topology', 'compensating-transaction', 'architecture-principles']
last_reinforced: 2026-05-02
---

# [[Saga Pattern (Orchestration)]]

## 📌 Brief Summary
Saga 패턴(Orchestration)은 여러 마이크로서비스에 걸친 분산 명령을 일련의 로컬 트랜잭션으로 구현하여 메시지 흐름을 안정적으로 관리하는 워크플로우 패턴이다 [1, 2]. 이 방식에서는 중앙의 이벤트 메디에이터(Event Mediator)가 여러 단계를 조율(Orchestration)하며 비즈니스 프로세스의 흐름을 중앙 집중식으로 제어한다 [3-5]. 분산 환경에서 데이터 일관성을 유지하고 복잡한 에러 처리 및 상태 관리를 수행하는 데 필수적으로 활용된다 [3, 6].

## 📖 Core Content
* **분산 트랜잭션의 국소화:** Saga 패턴은 각 마이크로서비스가 자체 데이터베이스를 가지는 느슨한 결합 환경에서 분산된 명령을 다수의 로컬 트랜잭션으로 나누어 구현한다 [2, 7]. 비동기 메시징을 활용하여 데이터를 업데이트하며, 각 서비스는 자신의 작업을 완료한 후 다음 단계를 처리한다 [2].
* **중앙 집중식 오케스트레이션(메디에이터 토폴로지):** Saga Orchestration은 이벤트 메디에이터 토폴로지를 기반으로 작동한다 [1, 3, 4]. 메디에이터는 전체 워크플로우를 중앙에서 관리하며, 프로세스의 각 개별 단계를 수행하기 위해 다양한 이벤트 채널로 비동기 이벤트(또는 명령)를 전송하여 실행을 지휘한다 [4-6].
* **상태 유지 및 워크플로우 제어:** 중앙의 메디에이터는 비즈니스 프로세스의 상태를 추적 및 유지하고, 트랜잭션 재시작 기능을 관리한다 [3, 6]. 시스템 전체에 무작위로 브로드캐스트하는 방식과 달리, 지정된 채널로 구체적인 명령을 전달하여 정교한 프로세스 제어를 수행한다 [3].
* **에러 핸들링과 보상 트랜잭션(Compensating Transaction):** 다수의 서비스에 걸친 비즈니스 프로세스에서 후속 단계가 실패할 경우, '보상 트랜잭션' 패턴을 사용하여 이전에 완료된 단계들을 논리적으로 되돌려(역방향 처리) 에러를 처리하고 시스템의 상태를 일관되게 복구한다 [1].

## ⚖️ Trade-offs & Caveats
* **장점 (제어력 및 데이터 일관성):** 중앙에서 이벤트를 통제하므로 분산 에러 처리가 뛰어나며, 데이터의 최종 일관성(Eventual Consistency)을 확보하기에 더 유리하다 [1, 3, 7]. 또한, 상태를 저장하고 에러 복구 후 프로세스를 재시작하는 등의 복잡한 비즈니스 로직을 구현할 수 있다 [6, 8].
* **단점 (결합도 증가 및 단일 장애점):** 메디에이터가 전체 워크플로우를 통제하므로 시스템 컴포넌트 간의 결합도가 증가한다 [3, 9]. 중앙의 이벤트 메디에이터 자체가 성능 병목(Bottleneck) 현상을 일으키거나 신뢰성 문제(단일 장애점 등)를 유발할 위험이 있다 [3, 9].
* **제약 사항 (구현 복잡성):** 각 마이크로서비스가 격리된 데이터베이스를 보유하므로 전통적인 강력한 일관성의 ACID 트랜잭션을 사용할 수 없다 [7]. 대신 복잡한 최종 일관성 트랜잭션 관리와 비동기 에러 처리에 의존해야 하므로 구현 및 디버깅, 모니터링 난이도가 상승한다 [1, 3, 7].

## 🔗 Knowledge Connections

### Related Concepts

#### [관계 유형 A: 아키텍처/기반 기술]
* [[Microservices Architecture]]
  * 연결 이유: Saga 패턴은 마이크로서비스 아키텍처에서 각 서비스가 고유의 데이터베이스를 보유함에 따라 발생하는 분산 트랜잭션 관리 문제를 해결하기 위해 고안된 패턴이다 [2, 7].
  * 이 개념을 통해 더 깊게 이해할 수 있는 부분: 분산된 환경에서 서비스의 독립성을 보장하면서 어떻게 비즈니스 트랜잭션을 설계해야 하는지에 대한 구조적 필요성.
* [[Event-Driven Architecture]]
  * 연결 이유: Saga의 비동기 메시징 및 워크플로우 제어는 이벤트 생산자, 소비자, 채널 등을 활용하는 이벤트 기반 아키텍처에 근간을 두고 있다 [1-3].
  * 이 개념을 통해 더 깊게 이해할 수 있는 부분: 서비스 간의 비동기 통신과 이벤트의 전달 메커니즘.
* [[Mediator Topology]]
  * 연결 이유: 중앙에서 이벤트 흐름을 제어하고 에러 및 상태를 관리하는 토폴로지로, Saga Orchestration의 핵심 동작 원리이다 [3, 4, 6].
  * 이 개념을 통해 더 깊게 이해할 수 있는 부분: 오케스트레이터가 워크플로우를 어떻게 조율하고, 브로커(Broker) 방식에 비해 어떤 통제력을 갖는지에 대한 이해.

#### [관계 유형 B: 구현/연관 패턴]
* [[Compensating Transaction]]
  * 연결 이유: Saga 워크플로우 진행 중 특정 단계가 실패했을 때, 데이터 일관성을 맞추기 위해 이전 단계들의 작업을 취소(논리적 역변환)하는 데 필수적인 패턴이다 [1].
  * 이 개념을 통해 더 깊게 이해할 수 있는 부분: 최종 일관성 모델에서 에러 발생 시 롤백(Rollback)을 구현하는 구체적인 메커니즘.
* [[Transaction Outbox Pattern]]
  * 연결 이유: 영구적인 비즈니스 엔티티(DB)를 업데이트하는 동시에 비동기 메시지를 원자적(Atomically)으로 전송하기 위해 Saga 패턴과 함께 필수적으로 사용되는 패턴이다 [2].
  * 이 개념을 통해 더 깊게 이해할 수 있는 부분: 분산 시스템에서 데이터 손실 없이 안전하게 메시지를 발행하고 처리하는 방법.

### Deeper Research Questions
* Saga 패턴의 Orchestration 방식(Mediator 기반)과 Choreography 방식(Broker 기반) 간의 성능 및 복잡성 트레이드오프는 어떤 기준에 의해 선택되어야 하는가?
* 보상 트랜잭션(Compensating Transaction) 자체가 실패했을 경우, 시스템은 어떻게 에러를 핸들링하고 최종 일관성을 달성하는가?
* 단일 장애점이 될 수 있는 이벤트 메디에이터의 성능 병목을 예방하기 위한 아키텍처 수준의 분산/스케일링 전략은 무엇인가?
* 비동기 환경에서 Transaction Outbox 패턴은 다수의 마이크로서비스 간 메시지 전송의 원자성을 어떻게 기술적으로 보장하는가?
* 강력한 데이터 일관성(ACID)이 요구되는 금융 트랜잭션 등에서, 최종 일관성에 기반한 Saga 패턴의 한계는 어떻게 극복될 수 있는가?

### Practical Application Contexts
* **Implementation:** 마이크로서비스 환경에서 비동기 메시지 큐와 중앙의 이벤트 메디에이터를 활용해 분산 트랜잭션을 순차적인 로컬 트랜잭션 집합으로 구현.
* **System Design:** 이커머스의 주문-재고확인-결제-배송과 같이 여러 도메인(서비스)이 연계된 복잡한 비즈니스 로직을 설계할 때, 흐름을 통제하고 에러를 롤백하는 중앙 오케스트레이터 계층 구성.
* **Operation / Maintenance:** 중앙 집중식 메디에이터의 로그와 상태(State)를 통해 트랜잭션의 진행 및 실패 상황을 모니터링하고, 에러 핸들러를 통한 보상 트랜잭션 처리를 운영 요소로 관리.
* **Learning Path:** 분산 데이터 관리(Database per Service) -> 이벤트 기반 통신(Mediator/Broker Topology) -> 트랜잭션 제어(Saga Pattern & Compensating Transaction) -> 패턴 고도화(CQRS & Outbox Pattern).
* **My Project Relevance:** 다중 마이크로서비스로 분할된 프로젝트 내에서 서비스 결함 발생 시 전체 트랜잭션을 롤백하고 데이터 일관성을 회복하기 위한 핵심 설계 전략으로 적용 가능.

### Adjacent Topics
* [[CQRS Pattern]] (Command Query Responsibility Segregation)
  * 확장 방향: Saga 패턴이 분산 시스템의 명령(Command/Transaction) 흐름을 관리한다면, CQRS는 흩어진 데이터를 효율적으로 조합하고 쿼리(Query)하는 구조를 다루므로 MSA 데이터 관리 전략으로 함께 연구되어야 함 [2, 10].
* [[Choreography Pattern]] (Broker Topology)
  * 확장 방향: 중앙 조정자(Mediator) 없이 서비스들이 이벤트를 직접 주고받으며 워크플로우를 형성하는 구조로, Orchestration의 대안적 패턴으로서의 장단점 비교 및 학습.

---
*Last updated: 2026-05-02*