728x90
반응형
개요
Saga 패턴은 마이크로서비스 아키텍처에서 데이터 일관성을 유지하기 위한 분산 트랜잭션 처리 전략입니다. 전통적인 2단계 커밋(Two-Phase Commit)의 복잡성과 결합도를 피하고, 각 서비스가 독립적으로 자신의 로컬 트랜잭션을 실행하고 상호 간 보상(Compensation) 방식으로 롤백을 구현함으로써 장애 복원력과 유연성을 높이는 설계 방식입니다.
1. 개념 및 정의
Saga Pattern은 하나의 트랜잭션을 여러 마이크로서비스의 로컬 트랜잭션 시퀀스로 분할하여 관리하고, 중간에 실패 시 이전 단계에 대해 보상 트랜잭션을 수행하는 구조입니다.
- Atomicity 보장 방식: 전체 실패 시 보상 트랜잭션으로 논리적 롤백
- 일관성 처리 방식: Eventually Consistent (최종적 일관성)
- 주요 유형:
- Choreography-based Saga
- Orchestration-based Saga
2. Saga 유형 비교
항목 | Choreography Saga | Orchestration Saga |
통제 방식 | 이벤트 기반, 분산 제어 | 중앙 오케스트레이터 존재 |
서비스 간 연결 | 이벤트 구독 및 발행 (Event-Driven) | 명령 기반 호출(Command Pattern) |
복잡성 | 서비스 자체가 흐름을 결정 | 중앙 집중으로 관리 단순화 가능 |
예시 도구 | Kafka, NATS, RabbitMQ | Temporal, Camunda, AWS Step Functions |
상황에 따라 두 방식을 혼합하여 적용하는 경우도 많습니다.
3. 동작 예시: 상품 주문 트랜잭션
- 주문 서비스: 주문 생성
- 결제 서비스: 결제 승인 요청
- 재고 서비스: 재고 감소 요청
- 배송 서비스: 배송 예약 요청
→ 배송 실패 시 이전 서비스들에 대해 순차적으로 보상 수행:
- 재고 롤백 → 결제 취소 → 주문 취소
4. 구성 요소 및 흐름
구성 요소 | 설명 |
로컬 트랜잭션 | 각 마이크로서비스 내에서 ACID 보장 |
보상 트랜잭션 | 실패 시 실행되는 롤백 작업 |
이벤트 브로커 | Choreography 방식에서 메시지 전달 담당 |
오케스트레이터 | Orchestration 방식에서 전체 흐름 제어 담당 |
설계 시 Idempotent 보상 처리, 에러 전파, 트랜잭션 상태 추적 고려 필요합니다.
5. 장점 및 한계
항목 | 장점 | 한계 |
느슨한 결합 | 서비스 간 독립성 보장 | 흐름 이해 및 디버깅 어려움 |
확장성 | 병렬 실행 및 메시지 기반 처리 가능 | 메시지 브로커 의존성 존재 |
장애 복원력 | 일부 실패 시 전체 시스템 멈춤 방지 | 복잡한 보상 로직 필요 |
일관성 확보 | Eventually Consistent 구조 | 즉시 일관성 보장 어려움 |
설계와 구현에 높은 수준의 도메인 이해와 메시지 안정성 관리가 요구됩니다.
6. 관련 기술 스택 및 도구
도구 | 설명 |
Kafka / RabbitMQ | 이벤트 기반 트랜잭션 처리용 메시지 브로커 |
Temporal / Camunda | 워크플로우 기반 Saga 오케스트레이션 프레임워크 |
Spring Boot + Axon | Choreography 기반 구현 가능 |
AWS Step Functions | 서버리스 환경에서 오케스트레이션 구성 |
클라우드 네이티브 환경에서는 서버리스 + 이벤트 기반 조합이 증가하고 있습니다.
7. 결론
Saga 패턴은 마이크로서비스 환경에서의 데이터 일관성과 트랜잭션 신뢰성을 확보하기 위한 핵심 패턴입니다. 실패 복원력, 서비스 독립성, 확장성을 동시에 고려한 설계 전략으로, 복잡하지만 안정적인 시스템 구축을 위한 필수 요소입니다. 비즈니스 프로세스를 서비스 간 흐름으로 나누고, 보상 트랜잭션을 설계하는 것은 복잡하지만, 분산 시스템의 본질적인 요구를 해결하는 중요한 방법입니다.
728x90
반응형
'Topic' 카테고리의 다른 글
BBR(Bottleneck Bandwidth and Round-trip propagation time) (0) | 2025.05.07 |
---|---|
WebAssembly System Interface(WASI) (1) | 2025.05.07 |
Bulkhead Pattern (1) | 2025.05.06 |
Circuit Breaker Pattern (1) | 2025.05.06 |
Lean Value Stream Mapping(VSM) (1) | 2025.05.06 |