입력받은 명령은 어디서 왔을까? 그리고 출력한 이벤트는 어디로 가는 걸까?

→ 이는 바운디드 컨텍스트의 바깥의 메시지 큐나 웹 요청 등의 인프라에서 오고 감

→ 이 인프라는 도메인을 알지 못하므로, 도메인 모델을 인프라가 이해하는 JSON, XML 또는 바이너리 형식인 protobuf 등으로 변환해야 함

→ 또한, 주문의 현재 상태처럼 작업 흐름에서 필요한 내부 상태를 추적할 방법이 필요하므로, 데이터베이스 같은 외부 서비스를 사용할 가능성이 큼.

→ 따라서 외부 인프라와 함께 작업할 때에는 도메인을 모델을 쉽게 직렬화하고 역직렬화할 수 있는 형식으로 변환하는 것이 중요함

11.1 영속화와 직렬화


ex) 주문 접수 작업 흐름은 ‘주문서가 도착했다’는 이벤트가 발생할 때마다 작업 흐름을 새로 수행함. 작업 흐름을 마치면 그 출력이 사라지는 것이 아니라, 어떻게든 남아서 다른 비즈니스에서 활용되기를 바람

→ 여기서 남는다는 말이 꼭 데이터베이스에 저장해야 한다는 뜻은 아님

→ 파일에 저장하거나 큐에 넣을 수도 있음

이 장에서는 직렬화에 집중하고, 다음장에서 지속에 대해 논의

11.2 직렬화를 위한 디자인


여러 타입이 선택 타입을 이루며 제약 조건까지 복잡하게 섞인 도메인 타입들은 직렬화하기에 적합하지 않음.