Transactional Outbox 패턴으로 메시지 발행 보장하기
9
AI 요약

이 글은 AI가 원문을 분석하여 핵심 내용을 요약한 것입니다.

Transactional Outbox Pattern

Transactional Outbox 패턴은 Event Driven Architecture에서 메시지 발행의 신뢰성을 보장하기 위한 방법입니다. 이 패턴은 메시지를 Message Broker에 발행하기 위한 트랜잭션을 데이터베이스(DB) 트랜잭션에 포함시켜 원자적으로 처리합니다. 리디의 경우, Kafka를 통해 메시지를 전달하며, 초기에는 DB 트랜잭션 후 별도로 메시지를 발행하는 방식이었습니다. 그러나 이 방식은 메시지 발행의 실패를 초래할 수 있어 Transactional Outbox 패턴을 도입하게 되었습니다. 구현 방법으로는 Polling Publisher와 Transaction Log Tailing이 있으며, 리디에서는 Polling Publisher 방식을 선택했습니다. 메시지는 Outbox DB 테이블에 저장되며, 각각의 노드에서 Redis lock과 MySQL record lock을 활용하여 중복 처리를 방지합니다. 또한, 메시지 삭제 시에는 processed_message 테이블을 활용하여 lock 경합을 줄이고 성능을 개선했습니다.

연관 게시글