[MSA] Transactional Outbox Pattern
·
Web
트랜잭셔널 아웃박스 패턴이란? 메시지를 DB 로컬 트랜잭션과 묶어서 커밋하여 비동기적으로 메시지 브로커 (message Relay)에 전달하는 방식 1. 아웃박스 패턴의 등장 배경: '이중 쓰기'의 비극모놀리식 환경에서는 결제가 완료되면 주문 테이블 저장과 배송 테이블 저장을 하나의 @Transactional로 묶어서 처리하면 끝이었습니다. 하지만 MSA 환경에서는 이를 분리해야 합니다. 아래 상황을 예시로 들겠습니다 주문 서비스가 주문 DB에 데이터를 저장한 뒤, 배송 서비스가 알 수 있도록 카프카(Kafka)에 이벤트를 던져야 합니다.@Transactionalpublic void createOrder(OrderRequest request) { // 1. DB에 주문 저장 (성공) order..