# DB 업데이트는 성공했는데 Kafka 메시지 전송이 실패한다면? [Transactional Outbox 패턴]

> Clean Markdown view of GeekNews topic #25392. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=25392](https://news.hada.io/topic?id=25392)
- GeekNews Markdown: [https://news.hada.io/topic/25392.md](https://news.hada.io/topic/25392.md)
- Type: news
- Author: [yoonwoosik12](https://news.hada.io/@yoonwoosik12)
- Published: 2025-12-28T23:54:10+09:00
- Updated: 2025-12-28T23:54:10+09:00
- Original source: [fredly.dev](https://fredly.dev/transactional-outbox/)
- Points: 3
- Comments: 1
- Status: flagged

## Topic Body

[블로그] 데이터 정합성을 위한 '보낸 편지함': 트랜잭셔널 아웃박스 패턴 정리  
(원문: https://fredly.dev/transactional-outbox/)  
  
분산 시스템에서 DB 업데이트와 메시지 발행의 원자성을 보장하는 '트랜잭셔널 아웃박스 패턴(Transactional Outbox Pattern)'을 상세히 분석한 글입니다. 분산 트랜잭션(2PC)의 복잡성을 피하면서도 데이터의 최종 정합성을 확보하는 실질적인 엔지니어링 설계 방안을 제시합니다.  
  
주요 내용:  
* 이중 쓰기(Dual-Write)의 늪: DB와 메시지 브로커가 서로 다른 트랜잭션 범위를 가질 때 발생하는 데이터 불일치 사례 분석.  
* 패턴의 핵심 구조:  
  - 아웃박스(Outbox) 테이블: 발행할 이벤트를 비즈니스 데이터와 동일한 DB 트랜잭션 내에 저장하여 '원자성' 확보.  
  - 메시지 릴레이(Message Relay): 저장된 이벤트를 읽어 외부 브로커로 안정적으로 전달하는 역할.  
* 구현 전략 비교:  
  - 폴링 퍼블리셔(Polling Publisher): 주기적 쿼리 기반의 단순하고 직관적인 구현.  
  - 로그 테일링(Log Tailing): CDC(Change Data Capture) 기술을 활용하여 DB 성능 저하 없이 실시간 이벤트 추출.  
* 전달 신뢰성: "적어도 한 번(At-least-once)" 전달을 보장하기 위한 메커니즘과 수신측의 멱등성 처리의 중요성 강조.

## Comments



### Comment 48372

- Author: moderator
- Created: 2025-12-29T09:58:28+09:00
- Points: 3

투표 어뷰징으로 flag 되었습니다
