이 문서는 기존 3계층 Layered Architecture를 4계층 DDD Architecture로 확장한 가이드입니다.
핵심 변경점은 Infrastructure 계층이 Domain·Application 계층에 DIP(Dependency Inversion Principle)로 연결되어, 도메인 로직이 기술 세부사항에 의존하지 않는 구조입니다.
Controller → Service → Repository(Domain)
Presentation → Application → Domain ← Infrastructure
또는 Application ← Infrastructure
| 계층 (Layer) | 역할 | 쇼핑몰 주문 예시에서의 담당 업무 |
|---|---|---|
| Presentation (표현) | 외부 요청을 받고 응답을 보냄 | 웹 브라우저에서 들어온 HTTP 주문 요청을 해석하고, 결과를 JSON 화면으로 반환 |
| Application (응응) | 비즈니스 시나리오를 조율 (트랜잭션 관리) | "유저 확인해라 -> 주문 진행해라 -> 결과를 DB에 저장해라"라는 전체 흐름만 지휘 (직접 규칙을 계산하지 않음) |
| Domain (도메인) 🌟 | 핵심 비즈니스 규칙과 논리 | "재고가 마이너스면 주문할 수 없다", "VIP 회원은 10% 할인한다" 같은 기업의 가장 소중한 뼈대 규칙을 정의 (기술에 전혀 의존하지 않음) |
| Infrastructure (인프라) | 기술적인 세부 구현 | 실제로 Oracle DB에 연결하거나, AWS S3에 파일을 저장하거나, 외부 결제 API를 호출하는 등의 가장 바깥쪽 기술 격리 |
HTTP 요청/응답을 처리합니다. REST Controller, Request/Response DTO가 위치합니다.
OrderCreateRequest — HTTP 요청 DTO