Transactional Outbox 패턴: 마이크로서비스에서 신뢰성 있는 이벤트 발행하기
현대 이벤트 기반 마이크로서비스 아키텍처(Event-Driven Architecture)에서 서비스 간 상태 변경을 알리기 위해 OrderCreated나 PaymentProcessed 같은 도메인 이벤트를 발행합니다.
하지만 이벤트 발행 시 심각한 문제가 발생할 수 있습니다: 데이터베이스 업데이트와 이벤트 발행이 모두 성공하거나 모두 실패하도록 보장하는 방법은 무엇일까요?
마이크로서비스가 로컬 데이터베이스(PostgreSQL, MySQL)를 업데이트한 직후 네트워크를 통해 메시지 브로커(Apache Kafka, RabbitMQ)로 이벤트를 전송할 때 네트워크 장애나 타임아웃이 발생하면 데이터 불일치가 발생합니다.
Microservices
Outbox Pattern
Distributed Systems
Kafka
Debezium
Event-Driven Architecture
System Design