DDD(5)
-
[DDD] Chap 06 응용 영역과 표현 영역
이번 장에선 사용자와 도메인을 연결해주는 매개체인 표현 영역과 응용 영역을 다뤄보겠습니다. 표현 영역 HTTP 요청 해석 같은 사용자와 긴밀히 상호작용하는 영역입니다. 표현 영역의 주요 기능은 다음과 같습니다. URL, 파라미터, 쿠키, 헤더 정보로 사용자가 어떤 기능을 실행하고 싶어하는지 판별 후 응용 서비스를 실행 응용 서비스가 요구하는 형식에 맞게 데이터를 파싱 또는 사용자에 알맞은 형식(HTML, JSON, XML 등)으로 응답 응용 영역(응용 서비스) 실제 기능을 제공하고 실행 결과를 표현 영역에 전달하는 영역입니다. 응용 영역의 주요 기능은 다음과 같습니다. 표현 영역과 도메인 영역을 연결해주는 Facade 역할(흐름 제어) 트랜잭션으로 도메인 상태 변경 관리(일관성 유지) 접근 제어와 이벤트..
2021.09.21 -
[DDD] Chap 04 리포지터리와 JPA중심 모델 구현
리포지터리는 애그리거트의 저장소를 말하며, 애그리거트를 어떤 DBMS를 사용하여 저장하냐에 따라 리포지터리 구현 방법이 다릅니다. RDBMS와 객체 기반 도메인 모델을 매핑하는데 사용하는 대표적인 ORM기술로서 JPA가 있습니다. 이번 장에선 JPA 중심으로 리포지터리 구현과 엔티티, 밸류, 애그리거트 매핑 구현 방법에 대해서 알아보겠습니다. 모듈 위치 2장에서 살펴보았듯이, Repository 인터페이스는 도메인 영역에 속하고 Repository를 구현하는 구현 클래스는 Infra Structure 영역에 존재합니다. 리포지터리의 기본 기능 ID로 애그리거트 조회하기 애그리거트 저장하기 Repository 인터페이스는 애그리거트 루트를 기준으로 작성합니다. public interface OrderRep..
2021.08.21 -
[DDD] Chap 03 Aggregate
이번 장에선 애그리거트 개요, 애그리거트 설계 원칙, 애그리거트간 참조 방식에 대해서 정리해보겠습니다. 애그리거트란? 애그리거트는 특정 도메인에 관련된 엔티티와 밸류 객체들의 묶음입니다. 프로그래밍 세계에선 항상 극단적으로 생각해볼 필요가 있습니다. 특정 시스템에 구성된 객체가 10억 개가 있다면 개발자가 미로같이 얽힌 시스템을 이해하기 매우 어려울겁니다. 따라서 애그리거트 단위로 도메인을 관리하면 객체 수준이 아닌 상위 수준에서 시스템을 바라볼 수 있어서 개발자가 시스템을 이해하기 쉽게 됩니다. 애그리거트 설계 원칙 한 애그리거트에 속한 객체는 동일한 라이프 사이클를 가짐 애그리거트 루트를 통한 일관성 보장 ID를 통해 애그리거트간 참조 애그리거트는 동일한 라이프 사이클을 가진 객체들끼리 묶는 것을 원..
2021.08.15 -
[DDD] Chap 02 아키텍처 개요
이번 장에선 도메인 아키텍처, DIP, 도메인 모델 구성에 대해서 알아보겠습니다. 표현 영역 클라이언트의 받은 HTTP 요청을 응용 계층에 필요로 하는 형식으로 파싱해서 전송합니다. 반대로 응용 서비스가 리턴한 결과를 JSON 형식으로 파싱해서 브라우저로 전달합니다. Controller의 역할을 수행하는 영역입니다. 응용 계층 도메인 모델을 이용해서 사용자에게 제공할 기능을 구현합니다. 단, 로직 수행은 도메인 모델에게 위임합니다. Service의 역할을 수행합니다. 도메인 계층 도메인의 핵심 로직을 구현한 영역입니다. 인프라 스트럭처 계층 RDBMS 연동, SMTP, Kafka 등 구현 기술의 실제 구현을 다루는 영역입니다. Repository, DAO의 역할을 수행합니다. 각 계층은 상위 계층이 하위..
2021.08.14 -
[DDD] Chap 01 도메인 모델 시작
도메인이란? 도메인이란 소프트웨어로 해결하고자하는 문제의 영역을 말합니다. 도메인은 여러 하위 도메인들로 구성됩니다. 주문 도메인을 예를 들면, 주문 도메인 하위 도메인들로 결제, 정산, 배송, 할인, 리뷰 등이 존재합니다. 도메인 모델 도메인 모델은 특정 도메인을 개념적으로 표현한 것입니다. 표현 방식에는 필드와 메서드를 가진 객체들간의 매핑을 나타낸 객체 기반 방식이나 상태 전이의 흐름도를 나타낸 상태 다이어그램 방식 등이 있는데 도메인을 이해하기 위한 목적이라면 어떠한 방식이라도 상관 없습니다. 단, 여러 하위 도메인들로 구성된 도메인 모델을 하나의 다이어그램으로 표현하면 안되고 하위 도메인들마다 별도로 모델을 만들어야 합니다. 예를 들어서 주문 도메인 모델안에 결제, 정산, 배송, 할인, 리뷰 등..
2021.08.14