이번엔 SAGA 패턴에 대해 정리하고자 한다.
1. 개념
- 분산 시스템에서 장기 실행 트랜잭션을 처리하며 데이터의 (최종) 일관성을 보장하기 위한 설계 패턴
- 하나의 비즈니스 프로세스를 여러 단계의 트랜잭션으로 분할하고, 각 단계를 독립적으로 실행하도록 설계
2. 구현 방식
- 조정 기반
> 중앙에서 조정자가 각 단계의 트랜잭션 실행 제어
> 중앙 컨트롤러가 명시적으로 다음 작업을 호출하거나 롤백
> 구현이 비교적 간단하지만, 조정자의 단일 장애점(SPOF)의 발생 가능
- 중재 기반
> 각 서비스가 이벤트 기반으로 서로 통신하며 SAGA의 단계를 독립적으로 진행
> 한 단계가 완료되면 이벤트를 발행하여 다음 단계 트리거
> 분산 시스템 특성에 더 적합하지만, 설계 복잡 및 디버깅 어려움
3. 장점
- 각 서비스가 독립적으로 트랜잭션을 처리하므로 서비스 간 결합도가 낮아지며 분산 환경에 적합
- 분산 트랜잭션 관리 없이 개별 서비스의 독립적인 확장 가능
- 데이터 일관성 보장
4. 단점
- 보상 트랜잭션 설계와 장애 시의 복구 로직 추가 필요
- 지연 발생 가능성
- 이벤트 기반 시스템에서 실패 원인 추적 어려움
'IT > DesignPattern' 카테고리의 다른 글
[DesignPattern] CQRS 패턴 (1) | 2024.12.10 |
---|