Chapter 1 도메인 모델 시작하기
1.1 도메인이란?
∘ 도메인 : 소프트웨어로 해결하고자 하는 문제 영역
∘ 한 도메인은 하위 도메인으로 나눌 수 있음
∘ 한 하위 도메인은 다른 하위 도메인과 연동해서 완전한 기능 제공
∘ 소프트웨어가 도메인의 모든 기능을 제공하는 것은 아님. 외부 시스템과 기능 연동해서 제공하기도 함.
∘ 상황을 고려해서 하위 도메인이 구성됨
1.2 도메인 전문가와 개발자 간 지식 공유
∘ 개발자가 기능 구현을 위해 코드를 작성할 때 맨 첫 단계는 요구사항 분석
∘ 요구사항을 올바르게 이해하기 위해서 개발자는 전문가와 직접 대화해야 함
1.3 도메인 모델
∘ 도메인 모델 : 특정 도메인을 개념적으로 표현한 것. 도메인 자체를 이해하기 위한 개념 모델.
∘ 개념 모델인 도메인 모델에 구현 모델을 추가해야 함
∘ 각각의 하위 도메인마다 별도로 모델을 만들어야 함
1.4 도메인 모델 패턴
∘ 애플리케이션의 아키텍처는 사용자 인퍼테이스(UI) 또는 표현(Presentation), 응용(Application), 도메인, 인프라스트럭처(Infrastructure)로 구성됨
∘ 도메인 모델 : 아키텍처 상의 도메인 계층을 객체 지향 기법으로 구현하는 패턴
∘ 도메인 계층은 도메인의 핵심 규칙을 구현
∘ 도메인 모델 패턴 : 도메인 규칙을 객체 지향 기법으로 구현하는 패턴
∘ 핵심 규칙을 구현한 코드가 도메인 모델에만 위치하기 때문에 나중에 규칙을 변경할 때 다른 코드에 가는 영향이 줄어듦
1.5 도메인 모델 도출
도메인 모델링의 기본 작업은 모델을 구성하는 핵심 구성요소, 규칙, 기능을 찾는 것
1.6 엔티티와 밸류
∘ 도출한 모델은 엔티티와 밸류로 구분됨
1.6.1 엔티티
∘ 각각의 엔티티는 고유의 식별자를 가짐
∘ 엔티티 객체 : 주문, 엔티티의 식별자 : 주문 번호
∘ 엔티티 생성 후 삭제할 때까지 엔티티의 식별자는 유지됨
1.6.2 엔티티의 식별자 생성
∘ 식별자 생성 방식
- 특정 규칙에 따라 생성 ex. 주문번호, 운송장번호, 카드번호
- UUID나 Nano ID와 같은 고유 식별자 생성기 사용
- 값을 직접 입력 ex. 회원 아이디, 이메일
- 일련번호 사용(시퀀스나 DB의 자동 증가 칼럼 사용) ex. 데이터베이스가 제공하는 자동 증가 기능 사용
자동 증가 칼럼을 사용할 경우 리포지터리는 DB가 생성한 식별자를 구해서 엔치치 객체에 반영
1.6.3 밸류 타입
∘ 밸류 타입은 완전한 하나를 표현할 때 사용 ex. receiverName 필드와 receiverPhoneNumber 필드는 서로 다른 두 데이터를 갖지만 개념적으로는 둘 다 받는 사람을 의미함
∘ 밸류 타입을 이용하면 코드의 의미를 더 잘 이해할 수 있음
∘ 안전한 코드 작성을 위해 밸류 타입을 불변으로 정하기도 함
1.6.4 엔티티 식별자와 밸류 타입
∘ 식별자의 도메인에서의 의미를 드러내기 위해 밸류 타입을 사용할 수 있음
1.6.5 도메인 모델에 set 메서드 넣지 않기
∘ 도메인 모델에 get/set 메서드를 무조건 추가하는 것은 좋지 않음
∘ set 메서드는 도메인의 의도가 코드에서 드러나지 않게 만들기도 하고, 도메인 객체가 불완전한 상태로 사용되도록 할 수 있음
1.7 도메인 용어와 유비쿼터스 언어
∘ 도메인에서 사용하는 용어를 코드에 반영해야 함
∘ 개발에 관여하는 사람들이 공통으로 사용할 수 있는 언어
'Back-End > 도메인 주도 개발 시작하기' 카테고리의 다른 글
[DDD] 도메인 주도 개발 시작하기 Ch3 (0) | 2024.03.18 |
---|---|
[DDD] 도메인 주도 개발 시작하기 Ch2 (0) | 2024.03.10 |
[DDD] 도메인 주도 개발 시작하기_Ch11 (0) | 2023.05.08 |
[DDD] 도메인 주도 개발 시작하기_Ch10 (0) | 2023.05.08 |
[DDD] 도메인 주도 개발 시작하기_Ch8 (0) | 2023.04.02 |