도메인 패턴을 중심에 놓고 설계하는 DDD(Domain-Driven Design)도메인별로 분리를 시켜

높은 응집력과 낮은 결합도로 변경과 확장에 용이한 설계를 할 수 있도록 한다.

 

일반적으로 Layered Architecture는 Presentation -> Application -> Domain -> Infa 의 구조를 가진다.

 

Presentation

- 표현 계층 (Controller)

- 사용자의 요청을 해석하고 응답

- Client로부터 request를 받고 response를 반환하는 API 정의

 

Application

- 응용 계층 (Service)

- 비즈니스 로직을 정의하고 정상적으로 수행될 수 있도록 Domain 계층과 Infra 계층을 연결해주는 역할

- 많은 정보를 가지고 있지 않게 유지하는 것이 중요

- 실질적인 데이터 처리는 Domain 계층에 위임

- 트랜잭션의 단위, Entity 조회/ 저장

 

Domain

- 도메인 계층 (Model)

- 비즈니스에 대한 실질적인 Domain에 대한 정보를 가지고 책임지는 계층

- Entity를 활용하여 상태를 제어하는 역할에 집중

 

도메인 객체에 비즈니스 로직을 구현하면 객체지향적인 설계(객체에 요청)와 도메인 객체의 응집도를 높일 수 있다. 도메인 객체만 봐도 이 객체가 어떤 상태를 가지고 어떤 동작을 하는지 파악할 수 있다. 그리고 서비스 계층의 코드가 간결해져서 비즈니스 로직의 흐름이 자연스러워진다.

 

Infastructure

- 인프라 계층 (Repository)

- 외부와의 통신(DB)을 담당하는 계층

- 얻어온 정보를 Application 또는 Domain 계층에 전달하는 역할

 

Repository는 Domain을 영속화하는데 필요한 일종의 명세로 도메인 관점에서 정의를 하고 실제 구현에 대한 부분은 Infa로 분리시킨다.

DIP(고수준 모듈이 저수준 모듈에 의존하지 않도록 하기 위함)를 이용해서 도메인 계층에 Repository 추상화를 만들고 실제 구현은 Infra 계층에서 하는 것이다.

 

아직 DDD를 잘 이해하고 있진 않은데 한번 개인 프로젝트에 써보면서 공부해봐야겠다.

 

 

 

[DDD] Repository Pattern 이란, 이론편

이 글은 이론과 실습, 두 파트로 나뉘어져 있습니다. Repository Pattern 에 대해서, 이론편

wonit.tistory.com

 

인터페이스와 구현체의 패키지 관련 질문입니다 - 인프런 | 질문 & 답변

안녕하세요. 영한님. 복슴겸 해서 강의를 다시보다 궁금한 점이 있어 질문드립니다. 강의에서 member 패키지에 MemoryRepository 인터페이스를 작성하셨고 해당 인터페이스의 구현체는 다른 패키지에

www.inflearn.com

 

[Spring] 도메인 주도 설계 및 개발과 도메인 계층(도메인 객체 중심 개발)

이 내용은 토비의 스프링 1권의 797부터 시작하는 내용을 참고하며 작성하였습니다. 1. 도메인 주도 설계 및 개발(도메인 객체 중심 개발) [ 도메인 객체 중심 개발 ] 도메인 객체 중심 아키텍처란

mangkyu.tistory.com

 

 

DDD(Domain-Driven Design) 계층구조(Layered Architecture) 알아보기

시작하기 앞서 도메인이 무엇인지, 도메인 주도 설계(Domain-Driven Design)란 무엇인지부터 가볍게 알고 넘어가자. 도메인이란 사전적 의미는 '영역', '집합'이다. '실세계에서 사건이 발생하는 집합'

dev-coco.tistory.com

 

+ Recent posts