Post
KO

도메인 주도 설계 및 구현 (2)

모델 내의 모든 애그리게잇 인스턴스가 어떤 사건으로 인해 생성됐는지 알 수 있게 해주고,

시간의 흐름에 따라 해당 애그리게잇 인스턴스에 어떤 일이 일어 났는지를 오퍼레이션 별로 확인해 주는 방법을 개발하고자 한다. 이런 수준의 변경 추적은 이벤트 소싱이라는 패턴의 핵심이다.

![]()

애그리게잇 저장소.

데이터 페브릭과 그리드 기반 컴퓨팅

엔티티

  • 비즈니스 관계자는 보통 근사한 데이터베이스 테이블 편집기를 개발하는데만 너무 많은 노력을 들인다.

올바른 도구를 선택하지 않았다면 공들여 다룬 CRUD 기반 솔루션의 비용이 커진다. CRUD가 타당한 선택일 때가 그루비 앤 그레일스(Groovy and Grails), 루비온 레인스 (Ruby on Rails)과 같은 언어 및 프레임워크가 비로소 합리적인 순간이다.

UUID는 상대적으로 생성이 빠른 식별자이고, 영속성 메커니즘과 같은 외부와의 상호 교류가 필요하지 않다. 1초 동안 특정 종류의 엔티티가 무수히 생성 되더라도 UUID 생성기는 그 속도를 유지할 수 있다.

유비쿼터스 언어 용어집

식별을 할 수 있도록 용어 선정을 신중히 한다.

* 역할과 책임

모델링의 한 측면은 객체의 역할과 책임을 발견하는 것이다.

역할과 책임의 분석은 도메인 객체 전반에 적용할 수 있다.

-> 객체지향 프로그래밍에서 일반적으로 인터페이스는 구현 클래스 의 역할을 결정한다.

위임은 복잡하게 만들지 않으며 단순하게 해줄 때에만 좋은 설계다.

객체 정신 분열증 (object schizophoenia)

아리송한 객체 이름의 뒤편에 숨어있는 실제 문제는 객체 식별자의 혼란이다.

(따라서 객체 명명을 잘 정해야 한다.)

DDD에서는 비즈니스 도메인의 모델이 가장 중요하다.

에서는 행 길이 최대값이 65,535 바이트이다. ​ *** 유효성 검사** 모델 내의 유효성 검사를 사용하는 주 이유는 하나의 특성/속성, 전체 객체, 객체의 컴포지션 등 정확성을 확인하기 위해서이다. ​ *** 자가 캡슐화 (마틴 파울러)** ​ 자가 캡슐화는 심지어 같은 클래스 내에서 부터 모든 데이터로의 액세스가 접근 제어가 메소드를 거쳐가도록 설계하는 방법이다. -> Lombok을 한번 생각해봐야 함. ​ 일부 개발자에게 거부감을 주는데, 유효성 검사는 도메인 객체가 아닌 유효성 검사 클래스의 별개의 문제이기 때문이다. 계약에 의한 설계 접근법 측면에서의 assertion이다. ​ **설계 패턴과 계약 ( design patterns and contract )** **​** **와드 커닝햄 (Ward Cunningham)의 첵스 패턴 언어** **->** 지연 유효성 검사 (Deferred validation) ​ 유효성 검사 클래스는 명세 패턴이나 전략 패턴을 구현 할 수 있다. ​ 이후 작성..
This article is licensed under CC BY 4.0 by the author.