확실한 이벤트 기반 통신
코레오그래피 방식으로 사가를 구현하려면 두 가지 통신 이슈를 고려해야 합니다. 첫째, 사가 참여자가 자신의 DB를 업데이트하고, DB 트랜잭션의 일부로 이벤트를 발행하도록 해야 합니다. 코레오그래피 사가는 단계별로 DB를 업데이트한 후 이벤트를 발행합니다. 가령 주문 생성 사가에서 주방 서비스는 소비자 확인 이벤트를 받아 티켓을 생성한 후 티켓 생성 이벤트를 발행합니다. 여기서 DB를 업데이트하는 작업과 이벤트를 발행하는 작업은 원자적으로(atomically) 일어나야 합니다. 따라서 사가 참여자가 서로 확실하게 통신하려면 트랜잭셔널 메시징(3장)을 사용해야 합니다.
둘째, 사가 참여자는 자신이 수신한 이벤트와 자신이 가진 데이터를 연관 지을 수 있어야 합니다. 가령 신용카드 승인됨 이벤트를 받은 주문 서비스는 여기에 해당하는 주문을 찾을 수 있어야 합니다. 해결책은 데이터를 매핑할 수 있도록 다른 사가 참여자가 상관관계 ID가 포함된 이벤트를 발행하는 것입니다.
이를테면 주문 생성 사가에서 각 참여자가 orderId를 상관관계 ID로 삼아 다른 참여자에게 건네주면 됩니다. 신용카드 승인됨 이벤트를 받은 회계 서비스는 orderId로 주문 정보를 가져올 수 있고, 주방 서비스도 같은 방법으로 티켓 정보를 가져올 수 있겠죠.