본문 바로가기
DDD

[Domain Event] 지연 시간 허용 (비동기, 결과적 일관성)

by kooangelo 2024. 9. 2.
메시지를 수신할 때 오래 소요될 수도 있는 지연 시간 (결과적 일관성까지 수 밀리초 이 상의 지연이 나타날 때)
이 문제를 유발하진 않을까? 

분명히 이는 신중히 고려해야 하는 문제이며, 
동기화되지 않은 데이터가 잘못된 영향을 미치거나 동작을 망가뜨리기도 한다. 
상태의 일관성을 달성하기 위해 얼마나 긴 시간을 허용할지, 감당할 수 없는 한계는 어디인지를 질문해봐야 한다. 

도메인 전문가라면 허용 가능한 지연과 가능하지 않은 지연의 기준에 대해 거의 같은 의견을 갖고 있다. 
(개발자가 생각하는 실시간 보다 훨씬 관대할수도 있다)
상태의 일관성을 달성하기까지 초나 분이나 시간 단위를 비롯해서 심지어는 하루가 넘는 기간도
허용 가능할 수 있다는 점은 대부분의 개발자에게 놀라움으로 다가온다.

그렇다고 이런 이야기가 항상 참은 아니다.
모든 도메인에서 일관성에 다다르는 시간의 범위가 반드시 필수적 이라고 가정해선 안 된다.
때론 다음과 같은 질문이 의미 있는 답으로 이어질 수 있다.

* 컴퓨터를 다루기에 앞서 비즈니스 관계자는 어떻게 일하는가?
* 컴퓨터 없이 작업하진 않는가?
* 아마도 종이에 기반한 아주 간단한 시스템조차도 즉각적으로 일관성을 획득할 순 없다.
  따라서 자동화된 컴퓨터 시스템도 허용 범위가 있어야 하고,
  결과적 일관성의 방식이 심지어 광범위하게 사용되고 있다는 사실도 이해할 수 있다.
* 결과적 일관성은 비즈니스적 맥락에서 더 잘 맞을지도 모른다.

 - Implementing Domain-Driven Design 도메인 주도 설계 구현, 반 버논 p401