혹시 Transaction Outbox Pattern 을 들어보신적이 있으신가요?
여러개의 시스템이 산재되어 있고 각 시스템끼리 소통할 때 이벤트 혹은 메시징을 발행하여 소통할 경우 데이터의 일관성을 확보하기 위한 고민이 필요한데요,
이러한 고민을 해결할 수 있는 방안 중 하나가 바로 Transaction Outbox Pattern 입니다.
이벤트 혹은 메시징을 발행하여 분산된 각 시스템에 전달할 경우 다음과 같은 이슈가 발생할 수 있습니다.
✔️ Database 처리와 관련된 Transaction 이 끝나지 않아 발행되지 않아야 하는 메시지가 발행될 수 있다.
✔️ 발행되어야 하는 이벤트 혹은 메시지가 발행되지 않고 누락될 수 있다.
이러한 이슈가 발생하는 이유는 이벤트 혹은 메시지를 발행하는 시스템과 이를 소비하는 시스템, Database 처리 등이 모두 분산되어 있기 때문에 하나의 Transaction 으로 묶기 어려워서 그런건데요
Transactional Outbox Pattern 은 Database 와 같은 Transaction 원자성을 보장하는 솔루션을 사용하여 이벤트 발행을 At-Least Once Delivery 로 보장함으로써 위의 이슈를 해결하는 Pattern 입니다.
강남언니 기술 블로그에서 이러한 Transactional Outbox Pattern 에 대한 내용과 이를 활용해 분산된 시스템에서 데이터의 일관성을 확보한 방법을 자세히 정리하였으니 관심있으신 분께서는 한번 보시면 좋겠습니다.
📚 원문 링크
https://blog.gangnamunni.com/post/transactional-outbox/?fbclid=IwAR0xbxBfnusipaPg7gzhw1-Dz-w0SF0NotG0fKG7SUye8Mg6_68AdsHrq4E