μž‘μ„±: 2026-03-04 13:03:38μˆ˜μ •: 2026-03-04 13:03:38

Clean Architecture와 λ””μžμΈ νŒ¨ν„΄: 지속 κ°€λŠ₯ν•œ μ½”λ“œ 섀계

ν”„λ‘œκ·Έλž¨μ€ λ§Œλ“œλŠ” 것보닀 μœ μ§€λ³΄μˆ˜ν•˜λŠ” 것이 훨씬 μ–΄λ ΅μŠ΅λ‹ˆλ‹€. **클린 μ•„ν‚€ν…μ²˜(Clean Architecture)**와 λ””μžμΈ νŒ¨ν„΄μ€ μ‹œκ°„μ΄ μ§€λ‚˜λ„ μ½”λ“œκ°€ 썩지 μ•Šκ³ , μš”κ΅¬μ‚¬ν•­ 변경에 μœ μ—°ν•˜κ²Œ λŒ€μ²˜ν•  수 μžˆλŠ” ꡬ쑰λ₯Ό μ œμ•ˆν•©λ‹ˆλ‹€.


1. 클린 μ•„ν‚€ν…μ²˜ (Clean Architecture)

λ‘œλ²„νŠΈ C. λ§ˆν‹΄μ΄ μ œμ•ˆν•œ 이 μ„€κ³„μ˜ 핡심은 **"κ΄€μ‹¬μ‚¬μ˜ 뢄리"**와 **"μ˜μ‘΄μ„±μ˜ λ°©ν–₯"**μž…λ‹ˆλ‹€.

  • μ˜μ‘΄μ„± κ·œμΉ™: μ˜μ‘΄μ„±μ€ λ°˜λ“œμ‹œ μ•ˆμͺ½(λΉ„μ¦ˆλ‹ˆμŠ€ 둜직)으둜만 ν–₯ν•΄μ•Ό ν•©λ‹ˆλ‹€.
  • Entities (핡심 업무 κ·œμΉ™): κ°€μž₯ μ•ˆμͺ½ 원. λ°μ΄ν„°λ² μ΄μŠ€λ‚˜ ν”„λ ˆμž„μ›Œν¬κ°€ λ°”λ€Œμ–΄λ„ μ ˆλŒ€ λ³€ν•˜μ§€ μ•ŠλŠ” 핡심 λΉ„μ¦ˆλ‹ˆμŠ€ λͺ¨λΈμž…λ‹ˆλ‹€.
  • Use Cases (μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 업무 κ·œμΉ™): μ‹œμŠ€ν…œμ˜ λ™μž‘μ„ μ •μ˜ν•©λ‹ˆλ‹€.
  • Adapters & Frameworks: κ°€μž₯ λ°”κΉ₯μͺ½ 원. DB, μ›Ή ν”„λ ˆμž„μ›Œν¬, UI 등은 μ–Έμ œλ“  ꡐ체 κ°€λŠ₯ν•œ μ„ΈλΆ€ μ‚¬ν•­μœΌλ‘œ μ·¨κΈ‰ν•©λ‹ˆλ‹€.

2. μ‹€λ¬΄μ—μ„œ 자주 μ“°μ΄λŠ” λ””μžμΈ νŒ¨ν„΄

λ””μžμΈ νŒ¨ν„΄μ€ μ„ λ°° κ°œλ°œμžλ“€μ΄ λ§ˆμ£Όν–ˆλ˜ λ¬Έμ œλ“€μ— λŒ€ν•œ κ²€μ¦λœ ν•΄κ²°μ±…μž…λ‹ˆλ‹€.

β‘  싱글톀 νŒ¨ν„΄ (Singleton)

클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό ν•˜λ‚˜λ§Œ μƒμ„±ν•˜μ—¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ „μ—­μ—μ„œ κ³΅μœ ν•©λ‹ˆλ‹€. μŠ€ν”„λ§μ˜ 빈(Bean)이 기본적으둜 이 λ°©μ‹μœΌλ‘œ κ΄€λ¦¬λ©λ‹ˆλ‹€.

β‘‘ μ „λž΅ νŒ¨ν„΄ (Strategy)

μ•Œκ³ λ¦¬μ¦˜μ„ ν΄λž˜μŠ€ν™”ν•˜μ—¬ ν•„μš”μ— 따라 λ™μ μœΌλ‘œ κ΅μ²΄ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 결제 μˆ˜λ‹¨(μΉ΄λ“œ, 카카였페이, ν† μŠ€)에 따라 λ‹€λ₯Έ 결제 λ‘œμ§μ„ μ‹€ν–‰ν•  λ•Œ μœ μš©ν•©λ‹ˆλ‹€.

β‘’ λΉŒλ” νŒ¨ν„΄ (Builder)

λ³΅μž‘ν•œ 객체 생성 과정을 μΊ‘μŠν™”ν•©λ‹ˆλ‹€. 가독성이 λ†’κ³  ν•„μš”ν•œ ν•„λ“œλ§Œ μ„ νƒμ μœΌλ‘œ μ„€μ •ν•  수 μžˆμ–΄ μžλ°” κ°œλ°œμžμ—κ²Œ ν•„μˆ˜μ μΈ νŒ¨ν„΄μž…λ‹ˆλ‹€. (Lombok의 @Builder)


3. μ™œ 이런 ꡬ쑰λ₯Ό κ³ λ―Όν•΄μ•Ό ν• κΉŒ?

  1. ν…ŒμŠ€νŠΈ μš©μ΄μ„±: λΉ„μ¦ˆλ‹ˆμŠ€ 둜직이 μ™ΈλΆ€ ν”„λ ˆμž„μ›Œν¬(DB λ“±)와 λΆ„λ¦¬λ˜μ–΄ μžˆμ–΄ ν…ŒμŠ€νŠΈν•˜κΈ° μ‰½μŠ΅λ‹ˆλ‹€.
  2. μœ μ—°μ„±: MySQL을 μ“°λ‹€κ°€ PostgreSQL둜 바꿔도 핡심 λ‘œμ§μ€ μˆ˜μ •ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.
  3. ν˜‘μ—… 효율: κ·œμΉ™μ΄ λͺ…ν™•ν•˜λ―€λ‘œ μˆ˜μ‹­ λͺ…μ˜ κ°œλ°œμžκ°€ μž‘μ—…ν•΄λ„ μ½”λ“œμ˜ 일관성이 μœ μ§€λ©λ‹ˆλ‹€.

4. κ²°λ‘ 

μ²˜μŒλΆ€ν„° μ™„λ²½ν•œ 클린 μ•„ν‚€ν…μ²˜λ₯Ό μ μš©ν•˜λŠ” 것은 μ˜€λ²„μ—”μ§€λ‹ˆμ–΄λ§μ΄ 될 수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ **"λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ€ 기술적 세뢀사항에 μ˜μ‘΄ν•˜μ§€ μ•ŠλŠ”λ‹€"**λŠ” 원칙을 κ°€μŠ΄μ— μƒˆκΈ°κ³  μ½”λ“œλ₯Ό μž‘μ„±ν•œλ‹€λ©΄, 훨씬 더 λ‚˜μ€ ν’ˆμ§ˆμ˜ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λ§Œλ“€ 수 μžˆμ„ κ²ƒμž…λ‹ˆλ‹€.