이 문서는 기존 3계층 Layered Architecture를 4계층 DDD Architecture로 확장한 가이드입니다.

핵심 변경점은 Infrastructure 계층이 Domain·Application 계층에 DIP(Dependency Inversion Principle)로 연결되어, 도메인 로직이 기술 세부사항에 의존하지 않는 구조입니다.


1. 3계층 vs 4계층 비교

기존 3계층 (Layered Architecture)

Controller → Service → Repository(Domain)

4계층 DDD Architecture (DIP 적용)

Presentation → Application → Domain ← Infrastructure 

또는 Application ← Infrastructure

2. 4계층 구조 상세

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

📦 Presentation Layer (표현 계층)

HTTP 요청/응답을 처리합니다. REST Controller, Request/Response DTO가 위치합니다.