-
part 1. 도메인 모델 시작하기책 정리/도메인 주도 개발 시작하기 2023. 7. 8. 00:44
도메인 모델 시작하기
도메인이란
- 비즈니스 도메인 [온라인 서점]
- 하위도메인 [주문]
- 하위도메인 [회원]
- 하위도메인 [혜택]
- 하위도메인 [배송]
- 하위도메인 [결제]
- 하위도메인 [정산]
- 하위도메인 [카탈로그]
- 하위도메인 [리뷰]
- 회사에 적용한다면?
도메인 전문가와 개발자 간 지식 공유
- 개발에 앞서서 각 하위도메인들이 어떤 역할을 하게 되는지 파악할 수 있음
도메인 모델
- 어떻게 하면 개념 모델을 잘 작성할 수 있는가?
- 예시에서는 상태 다이어그램을 이용한 주문 산태 모델링을 통해 의미를 전달한다.
- uml을 이용해 개념모델 표현하여 도메인 자체를 이해할수있도록 작업한다.
- [추가] uml은 어떨때 사용해야하는가? (UML 실전에서는 이것만 쓴다.)
- 언제 다이어그램을 그려야 하며, 어떻게 그려야 하는가
- 언제 다이어그램을 그려야 하며 언제 멈춰야 하는가
- 프로젝트가 완료된 후
- 프로젝트를 시작하기 전 의사사통할때
- CASE 도구
- 하지만 문서화는 어떻게 합니까
- 그러면 Javadoc은?
- 결론
- 언제 다이어그램을 그려야 하며 언제 멈춰야 하는가
- 언제 다이어그램을 그려야 하며, 어떻게 그려야 하는가
- [추가] mermaid를 이용한 상태도 표현하기
stateDiagram-v2 [*] --> Still Still --> [*] Still --> Moving Moving --> Still Moving --> Crash Crash --> [*]
Online FlowChart & Diagrams Editor - Mermaid Live Editor
도메인 모델 패턴
- 표현계층 : 사용자의 요청을 처리하고 사용자에게 정보를 보여준다. 여기서 사용자는 소프트웨어를 사용하는 사람뿐만아니라 외부 시스템일 수도 있다.
- 응용계층 : 사용자가 요청한 기능을 실행한다. 업무로직은 직접적으로 구현하지않으며 도메인 계층을 조합해서 기능을 실행한다.
- 도메인 : 시스템이 제공할 도메인 규칙을 구현한다.
- 인프라스트럭처 : 데이터베이스나 메시징 시스템과 같은 외부시스템과의 연동을 처리한다.
💡 @transaction “usecase layer” vs “presentation layer”
- 개념모델과 구현모델
- 완벽한 개념모델을 만들기보다는 전반적인 개요를 알 수 있는 수준으로 개념 모델을 작성해야한다.
도메인 모델 도출
- 비즈니스 요구사항은 domain 에서 구현한다
💡 글을 통해서 작성하는 문서화를 경계하고 코드를 통해 문서화하라
엔티티와 벨류
- 엔티티
- 식별자를 가진다.
- 밸류 타입
- Money, ObjectId와 같은 데이터도 클래스를 만들어서 밸류 타입을 이용하도록 한다.
- 도메인은 aggregate를 통해 움직이기고 이때 해당 데이터를 일관된 데이터로 최신화한다
- 만약 setter가 존재하게 된다면 도메인의 aggregate없이 데이터를 수정하는 상황이 발생할 수 있는 코드라 setter의 존재를 경계한다.
create table shop.purchase_order ( order_number varchar(50) not null primary key, version bigint, orderer_id varchar(50), orderer_name varchar(50), total_amounts int, shipping_zip_code varchar(6), shipping_addr1 varchar(100), shipping_addr2 varchar(100), shipping_message varchar(200), receiver_name varchar(50), receiver_phone varchar(50), state varchar(20), order_date datetime ) character set utf8mb4; create table shop.order_line ( order_number varchar(50) not null, line_idx int not null, product_id varchar(50) not null, price int, quantity int, amounts int ) character set utf8mb4;
도메인 용어와 유비쿼터스 언어
- 전문가, 관계자, 개발자가 도메인과 관련된 공통의 언어를 만들고 이를 대화, 문서, 도메인모델, 코드, 테스트 등 모든곳에서 같은 용어를 사용해야한다.
'책 정리 > 도메인 주도 개발 시작하기' 카테고리의 다른 글
part 6. 응용 서비스와 표현 영역 (0) 2023.08.13 part 5. 스프링 데이터 JPA를 이용한 조회 기능 (0) 2023.08.06 part 4. 리포지터리와 모델 구현 (0) 2023.07.29 part 3. 애그리거트 (0) 2023.07.23 part 2. 아키텍처 개요 (0) 2023.07.16 - 비즈니스 도메인 [온라인 서점]