더북(TheBook)

코레오그래피 사가의 장단점

코레오그래피 사가는 다음과 같은 장점이 있습니다.

단순함: 비즈니스 객체를 생성, 수정, 삭제할 때 서비스가 이벤트를 발행합니다.

느슨한 결합: 참여자는 이벤트를 구독할 뿐 서로를 직접 알지 못합니다.

 

하지만 다음과 같은 단점도 있습니다.

이해하기 어렵다: 오케스트레이션 사가와 달리, 사가를 어느 한곳에 정의한 것이 아니라서 여러 서비스에 구현 로직이 흩어져 있습니다. 어떤 사가가 어떻게 작동되는지 개발자가 이해하기 어려운 편입니다.

서비스 간 순환 의존성: 참여자가 서로 이벤트를 구독하는 특성상, 순환 의존성(cyclic dependency)이 발생하기 쉽습니다. 그림 4-4도 가만 보면 순환 의존성(주문 서비스 → 회계 서비스 → 주문 서비스)이 형성되어 있습니다. 이것이 반드시 문제라고 할 수는 없지만, 순환 의존성은 잠재적인 설계 취약점입니다.

단단히 결합될 위험성: 사가 참여자는 각자 자신에게 영향을 미치는 이벤트를 모두 구독해야 합니다. 이를테면 회계 서비스는 소비자 신용카드를 과금/환불 처리하게 만드는 모든 이벤트를 구독해야 합니다. 따라서 이 서비스는 주문 서비스에 구현된 주문 주기와 맞물려 업데이트되어야 하는 위험이 있습니다.

 

간단한 사가라면 코레오그래피 방식으로도 충분하지만 복잡한 사가는 아무래도 오케스트레이션 방식이 적합합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.