기술 공부 끄적끄적/시스템 설계

Transactional outbox pattern

띠리링구 2024. 1. 7. 21:53

 요약 : 분산처리 환경에서 DB의 트랜잭션 기능을 이용해 메시지 발행의 트랜잭션을 보장하는 방법 (?)

 

서비스에서 도메인DB에 쿼리를 날리고 쿼리가 성공한 뒤 메시지가 발행되는게 보장되어야 할때

1. 도메인 테이블에 쿼리를 날림

2. outbox테이블에 발행할 메시지를 저장 (outbox=임시저장소라고 보면 됨)

3. 위 두개를 하나의 트랜잭션으로 묶음.

4. 별도의 메시지 프로세서가 outbox 테이블에서 메시지를 꺼내 kafka 등의 메시징 시스템으로 전송

 

참고

1. https://blog.gangnamunni.com/post/transactional-outbox/

2. https://velog.io/@eastperson/Transaction-Outbox-Pattern-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0

3. outbox에서 메시지 폴링하는 패턴 : https://giron.tistory.com/156