Spring 트랜잭션 동기화로 레거시 알림톡 발송 시스템 한계 넘어서기
두줄요약
레거시 알림톡 발송을 트랜잭션 커밋 이후 Kafka 기반 구조로 분리했습니다. 데이터 정합성과 확장성을 높이며 공통 발송 체계를 만들었습니다.
문제 상황
- 주문, 결제, 배송 알림톡 발송 로직이 여러 비즈니스 코드에 흩어진 레거시 구조
- 서비스별 테이블과 조건이 달라 데이터 조회 기준이 불일치
- 발송 성공 후 비즈니스 로직이 실패하면 알림과 실제 상태가 어긋나는 정합성 문제
원인 분석
- 알림톡 발송이 비즈니스 트랜잭션과 강하게 결합된 구조
- 레거시 환경의 Spring 버전 제약으로 일반적인 트랜잭션 이벤트 처리 방식 사용 어려움
- 배송 유형과 주문 유형별 조건이 복잡해 공통 쿼리 하나로 모두 커버하기 어려운 상황
해결 방법
- TransactionSynchronizationManager로 트랜잭션 커밋 이후 Kafka 메시지 발행
- 레거시에서는 발송 시점만 결정하고, Delivery Consumer에서 발송 전담하도록 역할 분리
- 배송 유형과 공통 기준에 따라 조회 로직을 통합하고, 단일 발송 API로 일원화
성능/운영 포인트
- 실패 메시지 DB 저장 후 재처리 가능한 구조 마련
- 알림톡 관련 코드와 조회 기준의 공통화로 유지보수성 향상
- 알림 추가 시 템플릿 등록과 메시지 발행만으로 확장 가능



