DDD란?
DDD(Domain Driven Design)은 비즈니스 도메인을 중심으로 소프트웨어를 설계하는 개발방법론이다.
기술이나 프레임워크 중심이 아니라, 해결하려는 비즈니스 문제(도메인)을 코드에 잘 반영하는것을 목표로 한다.
DDD에서는 단순히 기능 단위로 코드를 작성하는 것이 아니라, 비즈니스 규칙과 개념을 기반으로 시스템 구조를 설계한다.
DDD를 사용하는 이유
DDD는 프로젝트가 커질수록 복잡해지는 비즈니스 로직을 명확하게 구조화하기 위해 사용된다.
도메인 중심으로 설계를 하면 다음과 같은 장점이 있다.
- 비즈니스 로직이 한 곳(Domain)에 모여 이해하기 쉬워진다.
- 코드 구조가 명확해져 유지보수가 쉬워진다.
DDD 계층구조
DDD에서는 시스템을 여러 계층으로 나누어 각 계층의 책임을 분리한다.
Presentation
사용자의 요청을 처리하는 계층이다.
Controller, Request DTO, Response DTO 등이 포함된다.
주요 역할
- HTTP요청을 받는다
- 필요한 데이터를 Application계층으로 전달한다.
Aplication
애플리케이션의 유스케이스를 실행하는 계층이다.
Service가 주로 위치하며 도메인 객체를 사용하여 기능 흐름을 제어한다.
주요 역할
- 기능의 전체 흐름을 관리
- 트랜젝션 관리
- 여러 도메인 객체를 조합하여 기능 수행
Domain
핵심 비즈니스 로직과 규칙이 위치하는 곳이다.
주요 요소
- Entity
- Value Object
- Enum
- Repository Interface
- Domain Service
Infrastructure
외부 기술과 연결되는 계층읻.
주요 구현
- JPA Repository 구현체
- 외부 API 호출
- DB 접근 로직
- 메시지 브로커 연동
- 설정 코드
마무리
이번 학습을 통해 Domain, Application, Presentation, Infrastructure의 역할을 이해할 수 있었다.
'TIL' 카테고리의 다른 글
| TIL - MSA 아키텍처 이해와 특징 정리 (0) | 2026.03.19 |
|---|---|
| TIL - DDD 구조와 현재 프로젝트 구조의 차이 (1) | 2026.03.18 |
| TIL - JWT 정리 (0) | 2026.03.16 |
| TIL - AI에게 프로젝트 피드백 받아보기 (0) | 2026.03.13 |
| TIL - 프로젝트 발표 피드백을 통해 배운 문서 작성법 (0) | 2026.03.12 |