
253
6
장
워크플로
(이렇게 간단한 비즈니스 프로세스라고 해도 간단하지 않다 ).
우리의 비즈니스 프로세스를 명시적으로 표현하지 못하는 것도 문제지만, 사가가 어떤 상태에
있는지를 파악할 방법도 부족하므로 필요한 경우 보상 조치를 취할 기회조차 놓칠 수 있다. 보
상 조치를 수행하려고 개별 서비스에 일부 책임을 떠넘길 수 있지만, 근본적으로 복구를 위해
사가의 현재 상태를 파악할 방법이 필요하다. 사가의 상태를 둘러볼 중심이 되는 서비스가 없
다는 점이 큰 문제다. 앞서 오케스트레이션을 도입해 중심이 되는 서비스를 확보했는데, 여기
서는 이 문제를 어떻게 해결할 수 있을까?
이 문제를 해결하는 가장 쉬운 방법 중 하나는 발행된 이벤트를 사용해 사가의 상태에 대한 뷰
view
를 투영하는 것이다. 사가에 대한 고유
ID
, 즉
상관관계 ID상관관계 ID
correlation
ID
를 생성하면, 이
ID
를 사
가의 일부로 방출되는 모든 이벤트에 넣을 수 있다. 서비스 중 하나가 이벤트에 반응한다면 상
관관계
ID
가 추출돼 로컬 로깅 프로세스에서 사용되고, 추가적인 호출이나 발송된 이벤트들과
함께 다운스트림으로 전달된다. 그런 다음 이러한 모든 이벤트를 정리하고 각 주문의 상태 보
기를 제공하며, 다른 서비스가 스스로 처리하지 못할 경우에는 풀필먼트
fulfillment ...