본문 바로가기

cs(with 매일메일)

[251217수] 트랜잭셔널 아웃박스 패턴에 대해서 설명해주세요.

분산 시스템에서 단일 작업에 데이터베이스 쓰기 작업과 메시지 혹은 이벤트 발행이 모두 포함된 경우 발생하는 이중 쓰기 문제를 해결하기 위해서 사용할 수 있다. 

 

DB저장 > [메모리 실행] > 이벤트 발행 : 중간과정에서 실패 시, 데이터가 유실되거나 이중으로 쓰여질 수 있음

 

Outbox 방식 : 이벤트 역시 DB에 저장하여 영속성 보장

DB저장 > [DB에 이벤트도 저장] > 나중에 안전하게 발행 : 중간과정에서 실패해도, DB를 기준으로 안전한 이벤트 발행 가능