트랜잭션 아웃박스 패턴으로 안정적인 이메일 발송 시스템 구축!

by DD
5개월 전
조회수 12

트랜잭션 아웃박스 패턴을 통해 외부 서비스 장애 시 이벤트 유실을 방지함

Spring Batch Framework를 활용하여 실패한 이메일 발송 이벤트를 재처리

결과적으로 이메일 이벤트 유실 제로를 달성하고 모니터링 가시성을 확보함

트랜잭션 아웃박스 패턴의 핵심 원리

트랜잭션 아웃박스 패턴이벤트 유실을 막기 위해 고안되었다. 구체적으로, 이벤트를 DB에 먼저 저장하고, 동일 트랜잭션 내에서 발행한다. 따라서 이벤트 저장발행의 원자성을 보장하며, 외부 서비스 장애에도 데이터 무결성을 유지한다.

Spring Batch를 활용한 재처리 파이프라인

실패한 이벤트는 Spring Batch를 통해 주기적으로 재처리된다. Batch Pipeline은 실패 상태의 이벤트를 조회하고, 이벤트 재발행 모듈을 통해 재시도한다. 따라서 외부 서비스 장애로 인한 문제 발생 시에도 서비스 안정성을 확보하고, 데이터 손실을 방지한다.

아웃박스 패턴 적용 시 고려사항

트랜잭션 아웃박스 패턴 적용 시, DB 스키마 설계가 중요하다. 따라서 이벤트의 종류, 상태, 처리 결과를 명확하게 저장해야 한다. 모니터링 시스템을 구축하여 이벤트 처리 현황을 추적하고, 실패 이벤트 재처리 로직의 성능을 지속적으로 개선해야 한다.

트랜잭션 아웃박스 패턴으로 외부 서비스 이슈에도 이벤트 유실 없는 안정적인 서비스 만들기