도메인 이벤트와 메시지 버스 돌아보기
-
- 한곳에서 여러 관심사를 처리하면 코드가 꼬여버린다.
- 이벤트를 사용하면 주된 유스 케이스와 부수적인 유스 케이스를 분리해 모든 것을 깔끔하게 유지할 수 있다.
-
- 메시지 버스를 이벤트와 이벤트 소비자를 연결하는 사전으로 생각할 수 있다
- 메시지 버스는 이벤트의 의미를 전혀 모른다.
- 메시지 버스는 단지 시스템에서 메시지를 전달하기 위한 둔한 인프라일 뿐이다.
-
- 시스템에서 이벤트를 사용하는 가장 쉬운 방법은 작업 단위를 커밋한 직후
bus.handle
(어떤 새로운 이벤트)를 호출하는 것이다.
- 두번째 선택지: 도메인 모델이 이벤트를 발생시키고 서비스 계층이 메시지 버스에 이벤트를 전달한다.
- 이벤트를 언제 발생시킬지 결정하는 논리는 모델과 함께 있어야 한다.
- 따라서 도메인 모델에서 이벤트를 발생시키면 시스템 설계와 시스템의 테스트 가능성으르 높일 수 있다
- 모델이 commit을 한 다음 핸들러가 이벤트를 찾아서 이벤트 버스에 싣는 것운 쉬운 일이다.
-
bus.handle(aggreate.events)
를 모든 핸들러에 추가하는 작업은 성가시므로, 메모리에 적재한 객체들이 발생시키 이벤트를 작업 단위가 발생하도록 시스템을 간결하게 만든다.- 이 방법은 가장 복잡한 설계이며 어쩌면 ORM의 마법에 의존하는 것일 수 있지만, 일단 설정하고 나면 사용하기 쉽고 깔끔하다
관련 문서
Plugin Backlinks: 아무 것도 없습니다.