트를 항상 도메인 언어로 이름을 붙여야 한다. 항상 이벤트를 도메인 모델의 일부분으로 간주
한다.
model
.
py
에 이벤트를 저장할 수도 있지만 이벤트만 다루는 파일에 별도로 저장할 수도 있다.
따라서 지금
domain
/
model
.
py
와
domain
/
events
.
py
로 분리할 수 있게 기존 코드를
도메인
이라는 이름의 디렉터리로 리팩터링하기에 좋은 시점이다.
이벤트 클래스(
src
/
allocation
/
domain
/
events
.
py
)
from dataclasses import dataclass
class Event: # ①
pass
@dataclass
class OutOfStock(Event): # ②
sku: str
① 이벤트 수가 늘어나면 공통 애트리뷰트를 담을 수 있는 부모 클래스가 유용하다는 사실을 깨닫게 된다.
곧 살펴보겠지만 타입 힌트를 사용하면 메시지 버스에서 유용하게 쓸 수 있다.
②
dataclasse
는 도메인 이벤트의 경우에도 아주 유용하다.
8.3.3
모델은 이벤트를 발생한다
도메인 모델은 발생한 사실을 기록하기 위해 이벤트를 발생시킨다.
외부에서 볼 때 이벤트 발생이 어떻게 보이는지는 다음 예제를 통해 알 수 있다.
Product
할당
을 요청했을 때 할당이 불가능하면 이벤트가 발생해야 한다.
애그리게이트가 이벤트를 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month, and much more.