๐๏ธ DDD ํ์ฅ ํ ํ๋ฆฟ โ Java/PHP ํ๋ก์ ํธ ์จ๋ณด๋ฉ์ฉ
ํต์ฌ ์์ฝ
# DDD ํ์ฅ ํ ํ๋ฆฟ โ Java/PHP ํ๋ก์ ํธ์ฉ
> ํ ํ๋ฆฟ v1.0 | 2026-02-23
> ์ฉ๋: ์ฌ๋ด Java/PHP ํ๋ก์ ํธ๋ฅผ Claude ํ๋ก์ ํธ ๋ฐฉ์ ์จ๋ณด๋ฉํ ๋ ์ด ํ ํ๋ฆฟ์ ์ฑ์์ ์ฌ์ฉ
---
์ฌ์ฉ๋ฒ
- ์ ํ๋ก์ ํธ ์จ๋ณด๋ฉ ์ ์ด ํ ํ๋ฆฟ์ ๋ณต์ฌ
- ๊ฐ ์น์
์
{placeholder}๋ฅผ ์ค์ ๊ฐ์ผ๋ก ์ฑ์ - ์์ฑ๋ ๋ฌธ์๋ฅผ KHub์ ๋ฑ๋ก + Claude ํ๋ก์ ํธ ํ์ผ์ ์ถ๊ฐ
- ํ์ ์ COMMON ์ฉ์ด ์ฌ์ ์ ์ ์ฉ์ด ์ถ๊ฐ
---
๐ ์ฉ์ด ์ฌ์ โ {ํ๋ก์ ํธ๋ช }
> COMMON ์ฉ์ด ์ฌ์ ๊ณผ ๋ณํฉํ์ฌ ์ฌ์ฉ. ํ๋ก์ ํธ ๊ณ ์ ์ฉ์ด๋ง ์ฌ๊ธฐ์ ๋ฑ๋ก.
DB ํ ์ด๋ธ
| ์ ๊ท ์ด๋ฆ | ์คํค๋ง | ์ฉ๋ | DB ์์น |
|---|---|---|---|
| {ํ ์ด๋ธ๋ช } | {์คํค๋ง} | {์ค๋ช } | {MySQL/PostgreSQL/Oracle ๋ฑ} |
ํจํค์ง/๋ชจ๋ ๊ตฌ์กฐ
| ํจํค์ง ๊ฒฝ๋ก | ์ญํ | ๋น๊ณ |
|---|---|---|
| {com.bizspring.xxx.controller} | {API ์ปจํธ๋กค๋ฌ} | |
| {com.bizspring.xxx.service} | {๋น์ฆ๋์ค ๋ก์ง} | |
| {com.bizspring.xxx.repository} | {๋ฐ์ดํฐ ์ ๊ทผ} | |
| {com.bizspring.xxx.dto} | {๋ฐ์ดํฐ ์ ์ก ๊ฐ์ฒด} |
API ์๋ํฌ์ธํธ
| Method | Path | ์ฉ๋ | ๋ด๋น ์ปจํธ๋กค๋ฌ |
|---|---|---|---|
| {GET} | {/api/v1/xxx} | {์ค๋ช } | {XxxController} |
์ธํ๋ผ ๋ณ์นญ
| ์ ๊ท ์ด๋ฆ | ์ญํ | ์ ์ ์ ๋ณด |
|---|---|---|
| {db-production} | ์ด์ DB | {host:port/dbname} |
| {db-staging} | ์คํ ์ด์ง DB | {host:port/dbname} |
| {redis-cache} | ์บ์ ์๋ฒ | {host:port} |
์ธ๋ถ ์ฐ๋
| ์๋น์ค๋ช | ์ฉ๋ | ์ธ์ฆ ๋ฐฉ์ | ํค ์์น |
|---|---|---|---|
| {Naver API} | {๊ฒ์ ์ฐ๋} | {API Key} | {vault/ํ๊ฒฝ๋ณ์/DB} |
---
๐ฏ ๋๋ฉ์ธ ํธ๋ฆฌ๊ฑฐ โ {ํ๋ก์ ํธ๋ช }
> ํค์๋ ๊ฐ์ง ์ Claude๊ฐ ์๋์ผ๋ก ์ฐธ์กฐํ ๋ฌธ์/์ฝ๋ ๋งคํ
| ํค์๋ | ๋๋ฉ์ธ | ์๋ ์กฐํ | ์ฐธ์กฐ ๋์ |
|---|---|---|---|
| {๊ฒฐ์ , ์ ์ฐ} | {payment} | khub_search("{๊ฒฐ์ ๋ชจ๋}", "{PROJECT_CODE}") | {PaymentService, ๊ฒฐ์ ํ๋ก์ฐ ๋ฌธ์} |
| {ํ์, ์ธ์ฆ, ๋ก๊ทธ์ธ} | {auth} | khub_search("{์ธ์ฆ ๋ชจ๋}", "{PROJECT_CODE}") | {AuthService, JWT ์ค์ } |
| {๋ก๊ทธ, ์ถ์ , ํธ๋ํน} | {tracking} | khub_search("{์ถ์ ๋ชจ๋}", "{PROJECT_CODE}") | {TrackingController, SDK ๊ฐ์ด๋} |
| {๋ฆฌํฌํธ, ํต๊ณ, ๋์๋ณด๋} | {report} | khub_search("{๋ฆฌํฌํธ ๋ชจ๋}", "{PROJECT_CODE}") | {ReportService, ์ง๊ณ ์ฟผ๋ฆฌ} |
| {๋ฐฐ์น, ์ค์ผ์ค, cron} | {batch} | khub_search("{๋ฐฐ์น ์ฒ๋ฆฌ}", "{PROJECT_CODE}") | {BatchConfig, ์ค์ผ์ค๋ฌ ์ค์ } |
| {๋ฐฐํฌ, CI/CD, ๋ฆด๋ฆฌ์ฆ} | {deploy} | khub_search("{๋ฐฐํฌ ๊ฐ์ด๋}", "{PROJECT_CODE}") | {Jenkinsfile, deploy ์คํฌ๋ฆฝํธ} |
| {์ค์ , config, properties} | {config} | khub_search("{ํ๊ฒฝ ์ค์ }", "{PROJECT_CODE}") | {application.yml, .env} |
---
๐ ๊ณจ๋ ํจํด โ {ํ๋ก์ ํธ๋ช }
> ์ ์ฝ๋ ์์ฑ ์ ์ฐธ์กฐํ ํ์ค ๊ตฌ์กฐ. ๊ธฐ์กด ์ฝ๋ ์ค ๊ฐ์ฅ ์ ๋ ๊ฒ์ ๊ณจ๋ ์ผ๋ก ์ง์ .
Java ๊ณจ๋ ํจํด
| ํจํด ์ ํ | ๊ณจ๋ ํ์ผ/ํด๋์ค | ์์น | ์ฐธ์กฐ ์ด์ |
|---|---|---|---|
| REST Controller | {XxxController.java} | {๊ฒฝ๋ก} | {ํ์ค ์๋ฌ ํธ๋ค๋ง, Swagger ์ด๋ ธํ ์ด์ } |
| Service Layer | {XxxServiceImpl.java} | {๊ฒฝ๋ก} | {ํธ๋์ญ์ ๊ด๋ฆฌ, ๋ก๊น ํจํด} |
| Repository/DAO | {XxxRepository.java} | {๊ฒฝ๋ก} | {QueryDSL/JPA ์ฌ์ฉ ํจํด} |
| DTO/Mapper | {XxxDto.java + XxxMapper.java} | {๊ฒฝ๋ก} | {Validation, MapStruct ์ฌ์ฉ} |
| Batch Job | {XxxBatchConfig.java} | {๊ฒฝ๋ก} | {Spring Batch ํ์ค ๊ตฌ์กฐ} |
| Test | {XxxServiceTest.java} | {๊ฒฝ๋ก} | {Mockito + ํตํฉํ ์คํธ ํจํด} |
PHP ๊ณจ๋ ํจํด
| ํจํด ์ ํ | ๊ณจ๋ ํ์ผ | ์์น | ์ฐธ์กฐ ์ด์ |
|---|---|---|---|
| Controller | {XxxController.php} | {๊ฒฝ๋ก} | {๋ฏธ๋ค์จ์ด, ์๋ฌ ํธ๋ค๋ง} |
| Model | {Xxx.php} | {๊ฒฝ๋ก} | {Eloquent ๊ด๊ณ, ์ค์ฝํ} |
| Service | {XxxService.php} | {๊ฒฝ๋ก} | {๋น์ฆ๋์ค ๋ก์ง ๋ถ๋ฆฌ} |
| Migration | {create_xxx_table.php} | {๊ฒฝ๋ก} | {์ธ๋ฑ์ค, FK ์ค์ ํ์ค} |
๊ณตํต ์ฝ๋ฉ ์ปจ๋ฒค์
| ํญ๋ชฉ | ๊ท์น |
|---|---|
| ๋ค์ด๋ฐ | {camelCase/snake_case/PascalCase ๊ธฐ์ค} |
| ์๋ฌ ํธ๋ค๋ง | {GlobalExceptionHandler / try-catch ํจํด} |
| ๋ก๊น | {SLF4J + Logback / Monolog ๊ธฐ์ค} |
| ์ธ์ฆ | {JWT / Session / OAuth2 ๊ธฐ์ค} |
| DB ์ ๊ทผ | {JPA / MyBatis / Eloquent ๊ธฐ์ค} |
---
โ ์ํฐํจํด โ {ํ๋ก์ ํธ๋ช }
> ํ๋ก์ ํธ ๊ณ ์ ์ํฐํจํด. COMMON AP-01~11๊ณผ ๋ณํ ์ ์ฉ.
| ID | ๊ท์น | ์๋ฐ ์ |
|---|---|---|
| {JP-01} | {SQL ์ง์ ์์ฑ ๊ธ์ง โ ORM/QueryDSL ์ฌ์ฉ} | {์ฆ์ ์ค๋จ} |
| {JP-02} | {์ด์ DB ์ง์ ์ ์ ๊ธ์ง โ ์คํ ์ด์ง์์ ๊ฒ์ฆ} | {์ฆ์ ์ค๋จ} |
| {JP-03} | {ํ๋์ฝ๋ฉ ์ค์ ๊ธ์ง โ application.yml/ํ๊ฒฝ๋ณ์} | {์ฆ์ ์ค๋จ} |
| {JP-04} | {public ํ๋ ๊ธ์ง โ getter/setter ๋๋ record} | {์ฝ๋ ๋ฆฌ๋ทฐ} |
| {JP-05} | {ํ ์คํธ ์๋ ๋ฐฐํฌ ๊ธ์ง โ ์ต์ ๋จ์ํ ์คํธ ํ์} | {๋ฐฐํฌ ์ฐจ๋จ} |
---
๐ ์จ๋ณด๋ฉ ์ฒดํฌ๋ฆฌ์คํธ
ํ๋ก์ ํธ๋ฅผ Claude ๋ฐฉ์ ๊ฐ์ ธ์ฌ ๋:
- [ ] ํ๋ก์ ํธ ๊ฐ์ ๋ฌธ์ ์์ฑ (๋ชฉ์ , ์คํ, ํ)
- [ ] ๐ ์ฉ์ด ์ฌ์ ์ฑ์ฐ๊ธฐ (DB ํ
์ด๋ธ, ํจํค์ง, API)
- [ ] ๐ฏ ๋๋ฉ์ธ ํธ๋ฆฌ๊ฑฐ ๋งคํ (ํค์๋ โ ๋ฌธ์/์ฝ๋)
- [ ] ๐ ๊ณจ๋ ํจํด ์ง์ (๊ฐ ๋ ์ด์ด๋ณ ๋ชจ๋ฒ ์ฝ๋)
- [ ] โ ์ํฐํจํด ์ ๋ฆฌ (ํ๋ก์ ํธ ๊ณ ์ ๊ธ๊ธฐ์ฌํญ)
- [ ] KHub์ ๋ฑ๋ก (project_code ์๋ก ์์ฑ)
- [ ] Claude ํ๋ก์ ํธ ํ์ผ์ Instructions ์ถ๊ฐ
- [ ] ๋ฉ๋ชจ๋ฆฌ ๋ฑ๋ก (DDD ํต์ฌ + ํ๋ก์ ํธ ๊ณ ์ ๊ท์น)
---
๐ก ํ: ๋น ๋ฅธ ์จ๋ณด๋ฉ ์์
1์ผ์ฐจ: ํ๋ก์ ํธ ๊ฐ์ + DB ํ
์ด๋ธ ๋ชฉ๋ก โ ์ฉ์ด ์ฌ์ ์ด์
2์ผ์ฐจ: ์ฃผ์ ์ฝ๋ ํ์ผ ํ์
โ ๊ณจ๋ ํจํด ์ง์
3์ผ์ฐจ: ํ ์ปจ๋ฒค์
+ ๊ธ๊ธฐ์ฌํญ โ ์ํฐํจํด ์ ๋ฆฌ
4์ผ์ฐจ: ํค์๋-๋ฌธ์ ๋งคํ โ ๋๋ฉ์ธ ํธ๋ฆฌ๊ฑฐ ์์ฑ
โ ์ดํ Claude๊ฐ ์ฝ๋ ๋ฆฌ๋ทฐ/์์ฑ ์ ์๋ ์ฐธ์กฐ