DDD 및 관련 과목의 방법을 배우려고합니다. 나는 "은행 (bank)"을 구현하기위한 단순한 제한적 맥락에 대한 아이디어를 생각 해냈다. 계좌가 있고, 자금이 입금, 인출 및 송금 될 수있다. 변경 기록을 유지하는 것도 중요합니다.
계정 엔티티를 식별 했으며 이벤트 소싱을 통해 변경 사항을 추적하는 것이 좋습니다. 다른 엔터티 또는 값 개체는 문제와 관련이 없으므로 언급하지 않습니다.
예금과 인출을 고려할 때, 하나의 집계가 수정되기 때문에 비교적 간단합니다.
전송할 때마다 다릅니다-두 개의 집계는 하나의 MoneyTransferred 이벤트 로 수정해야합니다 . DDD는 한 트랜잭션에서 여러 집계 수정을 더 이상 사용하지 않습니다. 반면 이벤트 소싱의 규칙은 이벤트를 엔티티에 적용하고이를 기반으로 상태를 수정하는 것입니다. 이벤트를 데이터베이스에 간단히 저장할 수 있으면 아무런 문제가 없습니다. 그러나 이벤트 소스 엔티티의 동시 수정을 방지하려면 트랜잭션 범위를 유지하기 위해 각 집계의 이벤트 스트림을 버전 화하는 것을 구현해야합니다. 버전 관리와 함께 또 다른 문제가 발생합니다. 간단한 구조를 사용하여 이벤트를 저장하고 다시 읽어 집계에 적용 할 수 없습니다.
내 질문은- "하나의 집계 하나의 트랜잭션", "이벤트-> 집계의 변경"및 "동시 수정 방지"라는 세 가지 원칙을 어떻게 통합 할 수 있습니까?