커밋 후 발행 vs 발행 후 커밋: 왜 둘 다 충분하지 않은가TL;DRDB에 쓰고, Kafka에 쓴다. 이 두 쓰기를 원자적으로 묶을 수 없다면? 하나만 쓰고 나머지는 비동기로 전파한다. Transactional Outbox Pattern은 이벤트를 DB에 함께 저장하여 단일 트랜잭션으로 원자성을 확보하고, Relay가 비동기로 Kafka에 발행하는 구조다. 이 글에서는 "커밋 후 발행"과 "발행 후 커밋"이 왜 근본적으로 불완전한지 분석하고, Outbox Pattern으로 해결한 실제 구현과 부하 테스트 결과를 공유한다.1. 이벤트 발행, 언제 해야 하는가?주문이 생성되면 재고를 감소시켜야 한다. Event-Driven Architecture(EDA)에서는 주문 서비스가 재고 서비스를 직접 호출하는 대..