→ Domain Driven Design
“도메인(=비즈니스의 핵심 개념과 규칙)을 중심에 두고 시스템을 설계하자” 는 철학이다
<aside> ❓
왜 클린 아키텍처에서 DDD로 확장하게 될까?
| 개념 | 설명 |
|---|---|
| 클린 아키텍처 | 기술과 비즈니스의 구조적 분리를 잘 해줌 |
| DDD | 그 안에 들어갈 비즈니스 도메인을 정확하고 풍부하게 설계 |
| 개념 | 설명 |
|---|---|
| Entity | 고유 ID를 가진 도메인 객체 (Order, User 등) |
| Value Object | 의미는 있지만 ID는 없는 값 (Money, Address) |
| Aggregate | 비즈니스 단위의 트랜잭션 루트 (Order가 여러 LineItem을 포함) |
| Repository | 도메인 객체를 저장/조회 (여기서부터 클린 아키텍처와 연결됨) |
| Domain Service | Entity에 넣기 애매한 도메인 로직 처리 |
| Ubiquitous Language | 비즈니스와 개발자가 같은 말을 쓰도록 명확한 모델 정의 |
| 이유 | 설명 |
|---|---|
| 복잡한 도메인 설계가 필요해짐 | 기능이 늘어나고 도메인 규칙이 많아짐 |
| “비즈니스 용어 그대로” 시스템을 표현하고 싶어짐 | 팀 내 소통 & 유지보수 향상 |
| 클린 아키텍처 + DDD = 비즈니스 중심의 깔끔한 구조 | 둘이 합쳐져야 진짜 견고한 설계가 완성됨 |
클린 아키텍처는 “어떻게 분리할까”를 알려주고 DDD는 “무엇을 설계할까”를 알려준다.
<aside> ❓
DDD 학습 순서