Topic

Saga Pattern

JackerLab 2025. 5. 6. 22:32
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. 동작 예시: 상품 주문 트랜잭션

  1. 주문 서비스: 주문 생성
  2. 결제 서비스: 결제 승인 요청
  3. 재고 서비스: 재고 감소 요청
  4. 배송 서비스: 배송 예약 요청

→ 배송 실패 시 이전 서비스들에 대해 순차적으로 보상 수행:

  • 재고 롤백 → 결제 취소 → 주문 취소

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