ddd-design-docs
npx skills add https://github.com/ssiumha/dots --skill ddd-design-docs
Agent 安装分布
Skill 文档
DDD Design Docs
DDD(Domain-Driven Design) 4ê³ì¸µ ìí¤í ì² ê¸°ë°ì ì¤ê³ 문ì í í릿과 구조 ê°ì´ëì ëë¤.
ì¸ì ì¬ì©íëì?
- ì ëë©ì¸ ì¤ê³ 문ì ìì± ì
- DDD 4ê³ì¸µ í¨í¤ì§ 구조 ì¤ì ì
- í ì¤í¸ ëë í 리 구조 ì¤ì ì
- 기존 íë¡ì í¸ DDD êµ¬ì¡°ë¡ ë¦¬í©í ë§ ì
Instructions
ìí¬íë¡ì° 1: ì¤ê³ 문ì ìì±
ì ëë©ì¸ ì¤ê³ 문ì ìì± ìì² ì:
-
ëë©ì¸ ì ë³´ ìì§
- “ì´ë¤ ëë©ì¸ì¸ê°ì?” (ì: ì¬ì©ì ê´ë¦¬, 주문, ê²°ì )
- “주ì 기ë¥ì 무ìì¸ê°ì?”
- “ê´ë ¨ë ì¸ë¶ ìì¤í ì´ ìëì?”
-
í í릿 ê¸°ë° ë¬¸ì ìì±
templates/domain-design.md참조- 10ê° ì¹ì êµ¬ì¡°ë¡ ìì±
- ERD, Entity, API ëª ì¸ í¬í¨
-
ì¬ì©ì ê²í
- ê° ì¹ì íì¸
- ëë½ë ì구ì¬í ì¶ê°
ìí¬íë¡ì° 2: í¨í¤ì§ 구조 ì¤ì
ì íë¡ì í¸ ëë 리í©í ë§ ì:
-
íì¬ êµ¬ì¡° íì¸
tree src/main/java -d -L 3 -
4ê³ì¸µ 구조 ì ì
- Domain, Application, Infrastructure, Presentation
- ê³ì¸µë³ ìí ì¤ëª
-
ë§ì´ê·¸ë ì´ì ê³í (기존 íë¡ì í¸)
- ë¨ê³ë³ ì´ë ê³í
- ìì¡´ì± ë°©í¥ ê²ì¦
ìí¬íë¡ì° 3: í ì¤í¸ 구조 ì¤ì
-
íì¬ í ì¤í¸ 구조 íì¸
tree src/test/java -d -L 3 -
4ê³ì¸µ í ì¤í¸ ëë í 리 ì ì
- ê³ì¸µë³ í ì¤í¸ í¹ì± ì¤ëª
- Mock ì¬ì© ê¸°ì¤ ìë´
4ê³ì¸µ DDD 구조
ê³ì¸µ ìì¡´ì±
âââââââââââââââââââââââââââââââââââââââ
â Presentation â â HTTP ìì²/ìëµ
â (Controller) â
âââââââââââââââââââââââââââââââââââââââ
â
âââââââââââââââââââââââââââââââââââââââ
â Application â â ì ì¤ì¼ì´ì¤ ì¡°í©
â (Service, DTO) â
âââââââââââââââââââââââââââââââââââââââ
â
âââââââââââââââââââââââââââââââââââââââ
â Domain â â íµì¬ ë¹ì¦ëì¤
â (Entity, VO, Repository ì¸í°íì´ì¤) â
âââââââââââââââââââââââââââââââââââââââ
â
âââââââââââââââââââââââââââââââââââââââ
â Infrastructure â â ì´ëí° êµ¬í
â (Repository 구í, ì¸ë¶ API) â
âââââââââââââââââââââââââââââââââââââââ
ìì¡´ì± ë°©í¥: Presentation â Application â Domain â Infrastructure
í¨í¤ì§ 구조
src/main/java/com/company/project/
âââ domain/ # Domain Layer (íµì¬ ë¹ì¦ëì¤)
â âââ model/ # Aggregate Root, Entity, Value Object
â âââ repository/ # Repository ì¸í°íì´ì¤ (í¬í¸)
â âââ service/ # Domain Service
â âââ event/ # Domain Event
â
âââ application/ # Application Layer (ì ì¤ì¼ì´ì¤)
â âââ dto/ # Request/Response DTO
â â âââ request/
â â âââ response/
â âââ service/ # Application Service
â âââ mapper/ # Entity â DTO ë³í
â
âââ infrastructure/ # Infrastructure Layer (ì´ëí°)
â âââ persistence/ # Repository 구íì²´, JPA Entity
â âââ external/ # ì¸ë¶ API í´ë¼ì´ì¸í¸
â âââ messaging/ # ë©ìì§ í (Kafka ë±)
â
âââ presentation/ # Presentation Layer (API)
âââ controller/ # REST Controller
âââ advice/ # Exception Handler
âââ config/ # Web Config
ê³ì¸µë³ ìí
| ê³ì¸µ | ìí | í¬í¨ | ìì¡´ì± |
|---|---|---|---|
| Domain | íµì¬ ë¹ì¦ëì¤ ë¡ì§ | Entity, VO, Repository ì¸í°íì´ì¤ | ìì (ìì) |
| Application | ì ì¤ì¼ì´ì¤ ì¡°í© | Application Service, DTO | Domain |
| Infrastructure | ì´ëí° êµ¬í | Repository 구í, ì¸ë¶ API | Domain |
| Presentation | HTTP ì²ë¦¬ | Controller, Exception Handler | Application |
ê³ì¸µ ê·ì¹
Domain Layer:
- ì¸ë¶ ìì¡´ì± ìì (ìì ë¹ì¦ëì¤ ë¡ì§)
- íë ììí¬ ìì¡´ ìµìí
- Repositoryë ì¸í°íì´ì¤ë§ ì ì
Application Layer:
- í¸ëìì ê²½ê³ ì¤ì
- ì¬ë¬ ëë©ì¸ ìë¹ì¤ ì¡°í©
- DTO â Entity ë³í
Infrastructure Layer:
- Domainì Repository ì¸í°íì´ì¤ 구í
- ì¸ë¶ ìì¤í ì°ë 구í
- íë ììí¬ ìì¡´ ì½ë (JPA ë±)
Presentation Layer:
- HTTP ìì²/ìëµ ì²ë¦¬
- ì ë ¥ ê²ì¦
- ìì¸ ì²ë¦¬
í ì¤í¸ 구조
4ê³ì¸µ í ì¤í¸ ëë í 리
src/test/java/com/company/project/
âââ domain/ # Domain Layer í
ì¤í¸
â âââ model/ # Entity, VO í
ì¤í¸
â âââ service/ # Domain Service í
ì¤í¸
â
âââ application/ # Application Layer í
ì¤í¸
â âââ service/ # ì ì¤ì¼ì´ì¤ í
ì¤í¸
â
âââ infrastructure/ # Infrastructure Layer í
ì¤í¸
â âââ persistence/ # Repository í
ì¤í¸
â âââ external/ # ì¸ë¶ API í
ì¤í¸
â
âââ presentation/ # Presentation Layer í
ì¤í¸
âââ controller/ # Controller í
ì¤í¸
ê³ì¸µë³ í ì¤í¸ í¹ì±
| ê³ì¸µ | í ì¤í¸ ë°©ì | Mock ì¬ì© | ìë |
|---|---|---|---|
| Domain | ìì ë¨ì í ì¤í¸ | ìµìí | ë¹ ë¦ |
| Application | ì ì¤ì¼ì´ì¤ í ì¤í¸ | Repository Mock | ë¹ ë¦ |
| Infrastructure | íµí© í ì¤í¸ | ì¤ì DB (Testcontainers) | ì¤ê° |
| Presentation | API í ì¤í¸ | MockMvc | ë¹ ë¦ |
í ì¤í¸ í¼ë¼ë¯¸ë
/\
/ \ E2E (10%)
/----\ - Cucumber, ì ì²´ íë¡ì°
/ \
/--------\ íµí© (20%)
/ \ - Testcontainers, Repository
/------------\ ë¨ì (70%)
- Domain, Application
Mock ì¬ì© 기ì¤
Mock ìµìí (Domain):
- ìì ë¹ì¦ëì¤ ë¡ì§ ê²ì¦
- ì¤ì ê°ì²´ ì¬ì© ê¶ì¥
- ì¸ë¶ ìì¡´ ìì
Mock ì¬ì© (Application):
- Repository Mockì¼ë¡ ì ì¤ì¼ì´ì¤ ê²ì¦
- ì¸ë¶ API Mock
ì¤ì ì¸íë¼ (Infrastructure):
- Testcontainersë¡ ì¤ì DB ì¬ì©
- WireMockì¼ë¡ ì¸ë¶ API Mock
ì¤ê³ 문ì 구조
íì¤ 10ê° ì¹ì
# [ëë©ì¸ëª
] ì¤ê³ 문ì
## 1. ê°ì
### 1.1 목ì
### 1.2 ë²ì
### 1.3 ì©ì´ ì ì
## 2. ì구ì¬í ë¶ì
### 2.1 기ë¥ì ì구ì¬í
### 2.2 ë¹ê¸°ë¥ì ì구ì¬í
## 3. ìì¤í
ìí¤í
ì²
### 3.1 기ì ì¤í
### 3.2 ë ì´ì´ 구조
### 3.3 í¨í¤ì§ 구조
## 4. ë°ì´í°ë² ì´ì¤ ì¤ê³
### 4.1 ERD
### 4.2 í
ì´ë¸ ìì¸ ì¤ê³
## 5. ëë©ì¸ ëª¨ë¸ ì¤ê³
### 5.1 Entity ì¤ê³
### 5.2 DTO ì¤ê³
## 6. API ì¤ê³
### 6.1 ìëí¬ì¸í¸ 목ë¡
### 6.2 ìì¸ API ëª
ì¸
## 7. ìë¹ì¤ ë¡ì§
### 7.1 주ì ë¹ì¦ëì¤ ë¡ì§
## 8. í
ì¤í¸ ì ëµ
### 8.1 ë¨ì í
ì¤í¸
### 8.2 íµí© í
ì¤í¸
## 9. ë³´ì ê³ ë ¤ì¬í
## 10. í¥í íì¥ ê³í
ìì¸ í
í릿: templates/domain-design.md
ìì
ìì 1: ì ëë©ì¸ ì¤ê³ 문ì
User: “ì¬ì©ì ê´ë¦¬ ëë©ì¸ ì¤ê³ 문ì ìì±í´ì¤”
- ëë©ì¸ ì ë³´ ìì§
- templates/domain-design.md ê¸°ë° ìì±
- Entity, DTO, API ëª ì¸ í¬í¨
- ERD ASCII ë¤ì´ì´ê·¸ë¨ í¬í¨
ìì 2: í¨í¤ì§ 구조 ì¤ì
User: “ì´ íë¡ì í¸ DDD êµ¬ì¡°ë¡ ì 리í´ì¤”
- íì¬ êµ¬ì¡° ë¶ì
- 4ê³ì¸µ 구조 ì ì
- íì¼ ì´ë ê³í ì립
- ìì¡´ì± ë°©í¥ ê²ì¦
ìì 3: í ì¤í¸ 구조 ì¤ì
User: “í ì¤í¸ ëë í 리 구조 ì´ë»ê² í´ì¼ í´?”
- 4ê³ì¸µ í ì¤í¸ ëë í 리 ì ì
- ê³ì¸µë³ í ì¤í¸ í¹ì± ì¤ëª
- Mock ì¬ì© ê¸°ì¤ ìë´
Technical Details
ì¤ê³ 문ì í
í릿: templates/domain-design.md