
생각해보면 현실에서 주문 연동을 할 때, 아래와 같은 문제가 자주 생길 수도 있다고 생각했다. 고객이 결제 버튼을 눌렀는데 네트워크가 끊김주문을 요청 받은 그 파트너 서버가 느리거나 불안정함지금 내가 만들 서버에 주문은 저장됐는데 파트너로 주문 정보 전송을 실패함실제

고객으로부터 주문 요청이 발생하면 본 서비스의 DB에 주문 정보를 INSERT 할 것이다. 그리고 그 주문 정보에 해당하는 외부 파트너 API를 호출해야 하는데, 이 과정은 둘 다 성공하면 COMMIT, 둘 중 하나라도 실패하면 둘 다 ROLLBACK해야 원자성을 지킬

지금 일련의 서비스 흐름을 정리하자면 아래와 같다.주문 생성 트랜잭션에서 orders 테이블에 주문 정보를 저장한다.같은 트랜잭션 내에서 outbox_events 테이블에 해당 주문 정보에 대한 이벤트도 저장한다.OutboxDispatcher가 outbox_events