분산 시스템을 위한 아웃박스(Outbox)패턴에 대하여
주문을 DB에 저장한 뒤 카프카로 이벤트를 발행하는 흔한 패턴, 그런데 DB 커밋은 성공했는데 카프카 전송 직전에 네트워크 장애가 나면? 주문은 존재하는데 이벤트는 유실되어 알림·정산이 전부 누락됩니다. 이게 바로 듀얼 라이트 문제입니다. 아웃박스 패턴은 2PC 없이 DB 트랜잭션만으로 이 문제를 해결하는 핵심 패턴입니다. 이번 영상에서는 듀얼 라이트 문제와 @TransactionalEventListener의 한계부터 시작해서, 비즈니스 데이터와 이벤트 메시지를 같은 DB 트랜잭션으로 저장하는 아웃박스 패턴의 핵심 구조, 아웃박스 테이블 설계(aggregate_type·aggregate_id·payload·status·인덱스 전략), 스프링에서 @Transactional로 주문과 이벤트를 원자적으로 저장하는 구현, Polling Publisher 방식(스케줄러가 주기적으로 조회)과 CDC 방식(Debezium이 binlog를 읽어 카프카로 전송)의 트레이드오프 비교, 멱등 소비자 구현, 아웃박스 테이블 정리 전략까지 프로덕션에서 바로 적용할 수 있는 내용으로 정리했습니다. 📌 이런 분들에게 추천합니다 - 마이크로서비스에서 이벤트 유실 문제로 고민 중인 백엔드 개발자 - 면접에서 "듀얼 라이트 문제", "이벤트 발행의 원자성 보장"을 답하고 싶은 분 - @TransactionalEventListener의 AFTER_COMMIT으로는 부족한 이유가 궁금한 분 - Polling과 CDC(Debezium) 중 어떤 방식을 선택해야 할지 기준이 필요한 개발자 #아웃박스패턴 #OutboxPattern #CDC #Debezium #백엔드개발
Download
0 formatsNo download links available.