문제 발생
결제 승인 후, PG사의 응답 데이터를 결제 테이블에 갱신하고, 쿠폰 사용 완료, 좌석 예약 완료, 정산 등의 결제 완료 후 처리를 위한 메시지를 발행하는 과정에서 결제 테이블의 갱신 트랜잭션은 성공적으로 처리되었지만, 서버 재시작 등의 이유로 결제 완료 메시지가 발행되지 않는 데이터 일관성 문제 발생
해결 과정
- 문제 해결을 위해 Transactional Outbox 패턴을 적용하여, 결제 테이블 갱신과 발행할 결제 완료 이벤트 메시지를 동일 트랜잭션 내에서 Outbox 테이블에 저장하도록 처리
- 트랜잭션이 완료되면 Outbox 테이블에서 메시지를 조회하여 발행함으로써 데이터베이스 트랜잭션과 Kafka를 이용한 메시지 발행의 일관성을 보장
개발 효과
- Transactional Outbox 패턴 적용을 통해 메시지 손실을 방지하고, 결제 트랜잭션과 결제 완료 이벤트를 수신하는 Consumer 간의 데이터 일관성을 유지