어떻게 말이 되나요?
짧은 대답 : 그렇지 않습니다 .
더 긴 대답 : 도메인 모델을 개발하기위한 헤비급 패턴은 데이터베이스에 불과한 솔루션 부분에는 적용되지 않습니다.
우디 다한 흥미로운 관찰했다 5 월 도움이 명확히 있음
Dahan은 서비스에 일종의 기능과 데이터가 모두 있어야한다고 생각합니다. 데이터가 없으면 함수일뿐입니다. 데이터에서 CRUD 작업을 수행하는 것이 전부라면 데이터베이스입니다.
결국 도메인 모델의 요점은 데이터에 대한 모든 업데이트가 현재 비즈니스 불변을 유지하도록하는 것입니다. 또는 달리 말하면 도메인 모델은 레코드 시스템 역할 을하는 데이터베이스 가 올바른지 확인해야합니다.
CRUD 시스템을 다룰 때는 일반적으로 데이터 기록 시스템이 아닙니다. 현실 세계는 기록의 책이며, 데이터베이스는 현실 세계의 단지 로컬로 캐시 된 표현입니다.
예를 들어, 이메일 주소 나 정부가 발행 한 식별 번호와 같이 사용자 프로필에 나타나는 대부분의 정보는 비즈니스 외부에 존재하는 진실의 원천을 가지고 있습니다. 다른 사람의 메일 관리자는 이메일 주소를 할당하고 취소하지 않습니다. 앱. 앱이 아닌 SSN을 할당하는 것은 정부입니다.
따라서 일반적으로 외부 세계에서 오는 데이터에 대해서는 도메인 유효성 검사 를 수행하지 않습니다 . 데이터가 올바르게 구성되고 적절하게 위생 처리 되었는지 확인하기위한 점검이있을 수 있습니다 . 그러나 귀하의 데이터는 아닙니다. 도메인 모델에는 거부권이 없습니다.
계층을 사용하는 DDD 방식에서는 CRUD 작업이 도메인 계층을 통과하는 것처럼 보입니다. 그러나 적어도 우리의 경우에는 이치에 맞지 않는 것 같습니다.
데이터베이스가 장부 인 경우에 맞습니다 .
Ouarzy는 이런 식으로 그것을 넣어 .
많은 레거시 코드를 작업하면서 도메인 내부와 외부를 식별하는 일반적인 실수를 관찰합니다.
데이터 모델 주위에 비즈니스 로직이없는 경우에만 애플리케이션을 CRUD로 간주 할 수 있습니다. 이 경우에도 데이터 모델은 도메인 모델이 아닙니다. 비즈니스 로직이 없기 때문에이를 관리하기 위해 추상화가 필요하지 않으므로 도메인 모델이 없습니다.
도메인 모델을 사용하여 도메인 내부에 속한 데이터를 관리합니다. 도메인 외부의 데이터는 이미 다른 곳에서 관리되고 있습니다. 우리는 단지 사본을 캐싱하고 있습니다.
Greg Young은 창고 시스템 을 다른 곳 (예 : 창고 층)에있는 솔루션의 기본 그림으로 사용합니다. 그가 설명하는 구현 방식은웨어 하우스에서 수신 한 메시지를 캡처하는 논리 데이터베이스와 메시지 분석에서 도출 된 결론을 캐싱하는 별도의 논리 데이터베이스와 비슷합니다.
어쩌면 여기에 두 가지 맥락이 있습니까? 각각 다른 모델로investment account
아마도. 다른 수하물과 함께 제공되는 것이 확실하지 않기 때문에 제한적인 컨텍스트로 태그를 지정하는 것을 꺼려합니다. 두 가지 컨텍스트가있을 수 있습니다. 아직 선택하지 않은 유비쿼터스 언어의 미묘한 차이가있는 하나의 컨텍스트 일 수 있습니다.
가능한 리트머스 테스트 :이 스펙트럼을 다루기 위해 두 명의 도메인 전문가가 필요하거나 여러 가지 방법으로 구성 요소에 대해 이야기하는 도메인 전문가가 필요한 도메인 전문가 수 기본적으로 Conway의 법칙을 거꾸로하여 얼마나 많은 제한적 맥락을 가지고 있는지 추측 할 수 있습니다.
제한된 컨텍스트가 서비스와 일치한다고 생각하면 더 쉬울 수 있습니다.이 두 가지 기능을 독립적으로 배포 할 수 있습니까? 그렇습니다. 두 가지 맥락이 있습니다. 그러나 동기화 상태를 유지해야하는 경우 그 중 하나 일 수 있습니다.