책 공부/DDD 도메인 주도 개발 시작하기
-
07. 도메인 서비스책 공부/DDD 도메인 주도 개발 시작하기 2024. 1. 30. 20:07
1. 여러 애그리거트가 필요한 기능 p. 234 도메인 영역의 코드를 작성하다 보면, 한 애그리거트로 기능을 구현할 수 없을 때가 있다. 한 애그리거트에 넣기 애매한 도메인 기능을 억지로 특정 애그리거트에 구현하면 안 된다. 억지로 구현하면 애그리거트는 자신의 책임 범위를 넘어서는 기능을 구현하기 때문에 코드가 길어지고 외부에 대한 의존이 높아지게 되며 코드를 복잡하게 만들어 수정을 어렵게 만드는 요인이 된다. 게다가 애그리거트의 범위를 넘어서는 도메인 개념이 애그리거트에 숨어들어 명시적으로 드러나지 않게 된다. 이런 문제를 해소하는 가장 쉬운 방법은 도메인 기능을 별도의 서비스로 구현하는 것이다. 2. 도메인 서비스 p. 237 도메인 서비스는 도메인 영역에 위치한 도메인 로직을 표현할 때 사용한다. ..
-
06. 응용 서비스와 표현 영역책 공부/DDD 도메인 주도 개발 시작하기 2024. 1. 29. 09:56
1. 표현 영역과 응용 영역 p. 200 표현영역 표현 영역은 URL, 요청 파라미터, 쿠키, 헤더 등을 이용하여 사용자가 실행하고 싶은 기능을 판별하고 그 기능을 제공하는 응용 서비스를 실행한다. 응용 서비스 응용 서비스는 기능을 실행하는 데 필요한 입력 값을 메서드 인자로 받고 실행 결과를 리턴한다. 응용 서비스의 메서드가 요구하는 파라미터와 표현 영역이 사용자로부터 전달받은 데이터는 형식이 일치하지 않기 때문에 표현 형역은 응용 서비스가 요구하는 형식으로 사용자 요청을 변환한다. 응용 영역은 사용자가 웹 브라우저를 사용하는지 REST API를 호출하는지, TCP 소켓을 사용하는지를 알 필요가 없다. 2. 응용 서비스의 역할 p. 202 응용 서비스는 사용자의 요청을 처리하기 위해 리포지터리에서 도메..
-
05. 스프링 데이터 JPA를 이용한 조회 기능책 공부/DDD 도메인 주도 개발 시작하기 2024. 1. 24. 08:39
1. CQRS 패턴에 대한 간단한 소개 CQRS에 대해서는 11장에서 학습 p. 174 명령(Command) 모델과 조회(Query) 모델을 분리하는 패턴 명령 모델 command 상태를 변경하는 기능 구현 ex : 회원 가입, 암호 변경, 주문 취소 엔티티, 애그리거트, 리포지터리 등 모델은 명령 모델로 주로 사용된다. 조회 모델 query 데이터를 조회하는 기능 구현 ex : 주문 목록, 주문 상세 정렬, 페이징, 검색 조건 지정과 같은 기능은 조회 기능에 사용된다. 이 장에서 사용하는 예제 코드는 리포지터리(도메인 모델에 속한)와 DAO(데이터 접근을 의미)라는 이름을 혼용해서 사용한다. 2. 검색을 위한 스펙 p. 175 검색 조건이 고정되어 있고 단순하면 다음과 같이 특정 조건으로 조회하는 기능..
-
DDD - 02. 아키텍처 개요책 공부/DDD 도메인 주도 개발 시작하기 2024. 1. 16. 22:12
응용 영역 p. 63 표현 영역을 통해 사용자의 요청을 전달받는 응용 영역은 시스템이 사용자에게 제공해야 할 기능을 구현한다. 응용 영역은 로직을 직접 수행하기 보다는 도메인 모델(도메인 영역)에 로직 수행을 위임한다. 인프라스트럭처 영역 p. 64 인프라스트럭처 영역은 구현 기술에 대한 것을 다룬다. 이 영역은 RDBMS 연동을 처리하고, 메시징 큐에 메시지를 전송하거나 수신하는 기능을 구현하고(Messging Service), 몽고DB나 레디스와의 데이터 연동(NoSQL 연동)을 처리한다. 이 영역은 SMTP를 이용한 메일 발송 기능을 구현하거나 HTTP 클라이언트(ex. RestTemplate, OpenFeign)를 이용해서 REST API를 호출하는 것도 처리한다. 인프라스트럭처 영역은 논리적인 ..
-
DDD - 01. 도메인 모델 시작하기책 공부/DDD 도메인 주도 개발 시작하기 2024. 1. 16. 21:40
p. 30 어플리케이션 아키텍처 일반적인 어플리케이션의 아키텍처는 네 개의 영역으로 구분된다. 사용자 인터페이스 또는 표현(Presentation) 사용자의 요청을 처리하고 사용자에게 정보를 보여준다. 여기서 사용자는 소프트웨어를 사용하는 사람뿐만 아니라 외부 시스템일 수도 있다. 응용 Application 사용자가 요청한 기능을 실행한다. 업무 로직을 직접 구현하지 않으며 도메인 계층을 조합해서 기능을 실행한다. 도메인 Domain 시스템이 제공할 도메인 규칙을 구현한다. 인프라스트럭처 데이터베이스나 메시징 시스템과 같은 외부 시스템과의 연동을 처리한다. p.41 문서화 문서화를 하는 주된 이유는 지식을 공유하기 위함이다. 코드는 상세한 모든 내용을 다루고 있기 때문에 코드를 이용해서 전체 소프트웨어를..