데브허브 | DEVHUB | Saga Choreography in Microservices 🔥 Movie Ticket Booking System Explained @JavatechieSaga Choreography in Microservices 🔥 Movie Ticket Booking System Explained @Javatechie
- 분산 시스템에서 각 마이크로서비스가 자체 데이터베이스를 가질 때 데이터 일관성을 유지하는 것이 가장 큰 과제입니다. 🤯
- Saga 디자인 패턴은 마이크로서비스 아키텍처에서 실패를 보상하여 데이터 일관성을 유지하는 데 사용됩니다. 🛡️
- Saga 패턴에는 Choreography와 Orchestration 두 가지 접근 방식이 있으며, 이 영상에서는 Choreography에 중점을 둡니다. 👯
- Choreography 방식에서는 서비스들이 Kafka와 같은 이벤트 브로커를 통해 직접 이벤트를 주고받으며, 각 서비스가 자신의 롤백을 책임집니다. 🔄
- 영화 티켓 예매 시스템 예시: 예약 서비스 -> 좌석 재고 서비스 -> 결제 서비스 순으로 이벤트가 발생합니다. 🎬
- 결제 서비스 실패 시 (Saga 미적용): 예약 및 좌석 재고 서비스는 이미 데이터를 저장하여, 결제는 실패했지만 예약은 확정되고 좌석은 예약된 상태로 남아 데이터 불일치가 발생합니다. 💸
- Saga Choreography를 통한 실패 보상: 실패한 서비스(예: 결제 서비스)는 '결제 실패'와 같은 실패 이벤트를 발행합니다. 🚨
- 다른 서비스(예: 좌석 재고 서비스, 예약 서비스)는 이 실패 이벤트를 수신하여 좌석 해제, 예약 롤백과 같은 보상 작업을 수행하여 시스템 일관성을 유지합니다. ✅
- 핵심은 각 마이크로서비스가 명시적으로 실패를 보상하기 위한 이벤트를 발행하고, 다른 서비스들이 이를 처리하는 양방향 이벤트 기반 통신입니다. 💬
- Kafka를 활용하면 이러한 이벤트 기반 통신 및 Saga Choreography 패턴 구현이 용이합니다. 🚀