1. Saga 패턴이란?
: Saga 패턴은 분산 트랜잭션을 여러 개의 로컬 트랜잭션(Local Transaction) 시퀀스로 나누어 처리하고,
만약 실패 시 보상(Compensation) 작업을 통해 전체 일관성을 맞추는 패턴.
2. 동작 방식
1) 하나의 비즈니스 프로세스 = N개의 로컬 트랜잭션
2) 각 로컬 트랜잭션은 자신의 DB에서 커밋됨 → 분산 락 불필요
3) 중간에 실패하면, 이미 완료된 트랜잭션을 보상 트랜잭션으로 되돌림
3. 구현 방식
1) Choreography (코레오그래피)
- 이벤트 기반
- 각 서비스가 이벤트를 발행하고, 다른 서비스가 그 이벤트를 구독하여 다음 트랜잭션 실행
- 장점: 단순, 중앙 오케스트레이터 불필요
- 단점: 서비스 수 많아지면 이벤트 플로우 복잡 → 관리 어려움
2) Orchestration (오케스트레이션)
- 중앙 Saga Orchestrator 가 전체 흐름 제어
- 각 서비스에 명령(Command) 요청, 성공/실패 이벤트를 수신하며 Saga 진행
- 장점: 흐름 명확, 관리 용이
- 단점: 오케스트레이터가 단일 장애 지점(SPOF)이 될 수 있음
'Kotlin Spring > Kotlin Spring 강의 내용' 카테고리의 다른 글
9) Kafka 기반 도메인 분리 (4) Transactional Outbox 패턴이란? (0) | 2025.09.05 |
---|---|
9) Kafka 기반 도메인 분리 (2) 결제 시 쿠폰도메인을 완전하게 분리하기 (0) | 2025.09.05 |
9) Kafka 기반 도메인 분리 (1) Kafka 란? (0) | 2025.09.05 |
8) Spring 캐시 (4) Redis 로 캐싱 관리 (0) | 2025.09.05 |
8) Spring 캐시 (3)redis란? (0) | 2025.09.05 |