[DDD] 커뮤니케이션 유형
크게 상태가 있거나, 없는 상태로 만들수 있다. Stateless,Stateful 이 두가지 방식으로 개발을 할 수 있다. 아래의 과정을 한번 보자 주문접수자는 주문목록을 가지고 있고, 바리스타는 주문접수자가 넘겨준, 제작 목록에 남겨서 커피를 만들어서 별개의 병행으로 작업을 하고 이벤트로 진동벨에 전달을 한다. 이벤트 생성, 이벤트 대응하는 모듈을 분리하고 상호 독립적으로 동작하여, 병령처리를 촉진한다. 발신자,수신자를 장소와 시간에서 쉽게 분리가 가능하다. 또한 각 모듈간의 필요에 의해 스케일 아웃 등의 확장에용이하고 동기,비동기가 선택이 가능하다. 비동기로 선택했을때 관련 문제들이 발생할 수 있다. - 네트워크 장애, 중요한 순간 서버 장애, 이벤트 순서가 꼬임, 이벤트 중복 등 - 데이터 소실 처..
[DDD] CQRS 및 아키텍처 패턴
* 명령 조회 책임 분리 * 커맨드 실행 모델 : 비즈니스 로직 구현, 강력한 일관성 * 읽기 모델 : 인메모리 캐시, 일반 파일, materialized view, 읽기 전용 * 동기화 필요 : 동기식, 비 동기식 * 확장, 읽기 성능,다양한 저장소 커맨드에서 들어온 저장소와, 읽기에서 들어간 저장소가 다른것이 좋은데 이 두개 다른 저장소에 대한 일관성을 유지해주는 것이 좋다. 따라서 쓰기 데이터 저장소와 읽기 데이터 저장소를 분리하지만, 해당 데이터에 대한 일관성은 유지해주는 것이 좋다. 데이터 동기화는 동기식이던, 비동기식이던 필요하다. 두개는 비동기식으로는 메시지 큐를 이용해도되고, CDC를 이용해서 동기식으로 해도된다. 일단 CQRS의 가장 큰 이유는 커맨드에 따른 일관적인 데이터 쓰기 이고 읽..