μΉ΄ν…Œκ³ λ¦¬ μ—†μŒ

πŸ›  도메인 주도 섀계(DDD) - 파트 3 더 심측적인 톡찰λ ₯을 ν–₯ν•œ λ¦¬νŒ©ν† λ§

nika0 2025. 2. 23. 14:14

πŸ”„ μ• μžμΌκ³Ό 도메인 주도 섀계 (DDD)

🎯 μ• μžμΌ(Agile)μ΄λž€?

  • μ΄ˆλ°˜μ— μ •ν™•ν•œ 일정 산정이 λΆˆκ°€λŠ₯
  • λͺ©ν‘œλ₯Ό λ‹¬μ„±ν•˜κΈ° μœ„ν•΄ κ³„νšμ„ 계속 μˆ˜μ •ν•˜λŠ” 방식
  • ν˜„μž¬ μš°λ¦¬κ°€ μ•Œκ³  μžˆλŠ” μ• μžμΌκ³ΌλŠ” λ‹€μ†Œ λ‹€λ₯Έ κ°œλ…μΌ μˆ˜λ„ 있음

πŸ’‘ μ• μžμΌμ΄ λ“±μž₯ν•œ 이유?

  • κΈ°μ‘΄ μ†Œν”„νŠΈμ›¨μ–΄ 개발 방식은 κ±΄μΆ•μ΄λ‚˜ μ œμ‘°μ—…μ—μ„œ κ°€μ Έμ˜¨ 섀계 방식을 따름
  • ν•˜μ§€λ§Œ μ†Œν”„νŠΈμ›¨μ–΄λŠ” ν•˜λ“œμ›¨μ–΄μ™€ λ‹€λ₯΄κ²Œ 개발 쀑에도 μ§€μ†μ μœΌλ‘œ 변경됨
  • 변경을 μˆ˜μš©ν•˜λŠ” 방식이 ν•„μš”ν–ˆμŒ → μ• μžμΌ λ“±μž₯

βœ… μ• μžμΌμ€ 속도가 μ•„λ‹ˆλΌ 변경에 κΈ°λ―Όν•œ 것!


πŸ€” 문제: νλ¦Ών•œ μš”κ΅¬μ‚¬ν•­

μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œμ—μ„œλŠ” μ²˜μŒλΆ€ν„° μš”κ΅¬μ‚¬ν•­μ„ 100% λͺ…ν™•ν•˜κ²Œ μ •μ˜ν•˜λŠ” 것이 λΆˆκ°€λŠ₯함.

πŸ”Ή 개발 쀑 λ°°μ›Œκ°€λŠ” κ³Όμ •

  • ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ©΄μ„œ λ ˆκ±°μ‹œ μ½”λ“œ, 도메인, μ‚¬μš©μž λ‹ˆμ¦ˆ 등을 ν•™μŠ΅ν•˜κ²Œ 됨
  • μ΄ˆλ°˜μ— μ˜ˆμƒν–ˆλ˜ μš”κ΅¬μ‚¬ν•­κ³Ό λ‹€λ₯΄κ²Œ λ³€ν•  수 있음
  • μ²˜μŒλΆ€ν„° μ™„λ²½ν•œ 섀계λ₯Ό ν•˜λŠ” 것이 μ•„λ‹ˆλΌ, κ°œλ°œν•˜λ©΄μ„œ μ μ§„μ μœΌλ‘œ μ™„μ„±ν•΄ λ‚˜κ°€λŠ” 것이 μ€‘μš”

πŸ’‘ μ΄λŸ¬ν•œ λ°°κ²½μ—μ„œ μ• μžμΌκ³Ό DDDλŠ” 같은 λ°©ν–₯을 바라봄


⚑ XP (eXtreme Programming)와 변경을 μˆ˜μš©ν•˜λŠ” 개발 방식

πŸ“– XP (eXtreme Programming) - μΌ„νŠΈ 벑(Kent Beck)

  • 변경을 μˆ˜μš©ν•˜λΌ!
  • ν”Όλ“œλ°±μ„ κΈ°μ€€μœΌλ‘œ κ°œλ°œμ„ μ§„ν–‰ν•˜λΌ

πŸ“Œ μ„€κ³„λŠ” 개발 μ „μ—λŠ” μ™„μ„±ν•  수 μ—†λ‹€!

  • μ„€κ³„λž€? μ–΄λ–€ μ½”λ“œλ₯Ό μ–΄λŠ ν΄λž˜μŠ€μ— λ°°μΉ˜ν•  것인지 κ²°μ •ν•˜λŠ” κ³Όμ •
  • 섀계와 κ°œλ°œμ„ μ™„μ „νžˆ 뢄리할 수 μ—†μŒ
  • κ°œλ°œμ„ ν•˜λ©΄μ„œ μ μ§„μ μœΌλ‘œ 섀계가 닀듬어짐

πŸ” 반볡적이고 검증적인 개발 ν”„λ‘œμ„ΈμŠ€

1️⃣ μΌλΆ€λ§Œ 개발 μ‹œμž‘
2️⃣ ν”Όλ“œλ°± λ°›μŒ
3️⃣ ν•΄λ‹Ή ν”Όλ“œλ°±μ„ 기반으둜 λ‹€μ‹œ 개발
4️⃣ λ°˜λ³΅ν•˜λ©΄μ„œ μš”κ΅¬μ‚¬ν•­μ΄ 점점 λͺ…확해짐

βœ… **런칭 λΈ”λ‘œμ»€(Launch Blocker)**인 ν•„μˆ˜ κΈ°λŠ₯λΆ€ν„° κ°œλ°œν•΄μ•Ό 함


πŸ”¨ λ¦¬νŒ©ν† λ§ (Refactoring) - λ§ˆν‹΄ 파울러

πŸ“– Refactoring - λ§ˆν‹΄ 파울러(Martin Fowler)

  • μ†Œν”„νŠΈμ›¨μ–΄ κΈ°λŠ₯은 κ·ΈλŒ€λ‘œ μœ μ§€ν•˜λ©΄μ„œ μ½”λ“œλ₯Ό 더 μ΄ν•΄ν•˜κ³  μˆ˜μ •ν•˜κΈ° μ‰½κ²Œ λ§Œλ“œλŠ” 기법
  • 즉, 섀계λ₯Ό λ‚˜μ€‘μ— μ™„μ„±ν•˜λŠ” 것

πŸ’‘ μ™œ λ¦¬νŒ©ν† λ§μ΄ μ€‘μš”ν•œκ°€?

  • μ΄ˆλ°˜μ—λŠ” μ™„λ²½ν•œ 섀계λ₯Ό ν•  수 μ—†κΈ° λ•Œλ¬Έ
  • κ°œλ°œμ„ μ§„ν–‰ν•˜λ©΄μ„œ 점점 더 쒋은 λͺ¨λΈλ‘œ κ°œμ„ ν•΄μ•Ό 함
  • λ¦¬νŒ©ν† λ§μ„ 톡해 μ½”λ“œ ν’ˆμ§ˆμ„ 높이고 μœ μ§€λ³΄μˆ˜μ„±μ„ ν–₯μƒμ‹œν‚΄

πŸ— DDD도 μ• μžμΌμ„ μ§€ν–₯ν•œλ‹€!

πŸ’‘ DDD = 도메인 λͺ¨λΈμ„ μ½”λ“œλ‘œ κ΅¬ν˜„ν•˜λŠ” 것

  • 도메인 λͺ¨λΈ μžμ²΄κ°€ μ½”λ“œμ΄λ―€λ‘œ λ¦¬νŒ©ν† λ§μ„ ν†΅ν•œ κ°œμ„ μ΄ ν•„μˆ˜
  • μš”κ΅¬μ‚¬ν•­μ΄ λ°”λ€Œλ©΄ 도메인 λͺ¨λΈλ„ λ³€ν•˜κ³ , μ½”λ“œλ„ λ³€ν•΄μ•Ό 함

πŸ“Œ DDDμ—μ„œ λ¦¬νŒ©ν† λ§μ΄ μ€‘μš”ν•œ 이유

  • 도메인 λͺ¨λΈλ„ μ• μžμΌμ²˜λŸΌ μ μ§„μ μœΌλ‘œ λ°œμ „ν•΄μ•Ό 함
  • μ½”λ“œλ₯Ό μˆ˜μ •ν•˜λ©΄μ„œ 도메인 λͺ¨λΈλ„ μ§€μ†μ μœΌλ‘œ κ°œμ„ λ¨
  • λ”°λΌμ„œ DDDλ₯Ό μ μš©ν•œλ‹€λ©΄ λ¦¬νŒ©ν† λ§μ„ ν•„μˆ˜μ μœΌλ‘œ μˆ˜ν–‰ν•΄μ•Ό 함

🎯 κ²°λ‘ : λ¦¬νŒ©ν† λ§μ„ λ‘λ €μ›Œν•˜μ§€ 말라!

πŸ’‘ μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œμ€ μ²˜μŒλΆ€ν„° μ™„λ²½ν•œ 섀계λ₯Ό λ§Œλ“œλŠ” 것이 μ•„λ‹ˆλΌ, μ μ§„μ μœΌλ‘œ μ™„μ„±ν•΄κ°€λŠ” κ³Όμ •
πŸ’‘ DDD와 μ• μžμΌμ€ 같은 철학을 κ³΅μœ ν•˜λ©°, 지속적인 λ¦¬νŒ©ν† λ§μ„ 톡해 λͺ¨λΈμ„ λ°œμ „μ‹œμΌœμ•Ό 함

βœ… 변경을 λ‘λ €μ›Œν•˜μ§€ 말 것!
βœ… λ¦¬νŒ©ν† λ§μ€ ν•„μˆ˜κ°€ μ•„λ‹Œ μ „μ œ 쑰건
βœ… 도메인 λͺ¨λΈκ³Ό μ½”λ“œκ°€ ν•¨κ»˜ μ§„ν™”ν•΄μ•Ό ν•œλ‹€! πŸš€