--- id: P-REINFORCE-WIKI-09459709 category: "10_Wiki/πŸ’‘ Topics/02_Architecture_Principles" confidence_score: 0.95 tags: ['implementation-separation', 'hexagonal-architecture', 'clean-architecture', 'loose-coupling', 'separation-of-concerns', 'architecture-principles'] last_reinforced: 2026-05-02 --- # [[Implementation Separation]] ## πŸ“Œ Brief Summary κ΅¬ν˜„ 뢄리(Implementation Separation)λŠ” μ†Œν”„νŠΈμ›¨μ–΄μ˜ 핡심 λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ΄λ‚˜ 도메인을 λ°μ΄ν„°λ² μ΄μŠ€, UI, ν”„λ ˆμž„μ›Œν¬ λ“± μ™ΈλΆ€μ˜ 기술적 'κ΅¬ν˜„(Implementation)' μ„ΈλΆ€ μ‚¬ν•­μœΌλ‘œλΆ€ν„° μ™„μ „νžˆ κ²©λ¦¬ν•˜λŠ” μ•„ν‚€ν…μ²˜ μ›μΉ™μž…λ‹ˆλ‹€ [1-3]. 이λ₯Ό 톡해 기술 μŠ€νƒμ΄ λ³€κ²½λ˜λ”λΌλ„ 핡심 도메인이 영ν–₯을 λ°›μ§€ μ•Šλ„λ‘ λ³΄ν˜Έν•˜λ©°, μ‹œμŠ€ν…œμ˜ ν…ŒμŠ€νŠΈ μš©μ΄μ„±κ³Ό μž₯기적인 μœ μ§€λ³΄μˆ˜μ„±μ„ κ·ΉλŒ€ν™”ν•©λ‹ˆλ‹€ [4, 5]. 주둜 ν—₯사고날(Hexagonal), 클린 μ•„ν‚€ν…μ²˜(Clean Architecture), 그리고 λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€μ˜ λŠμŠ¨ν•œ κ²°ν•©(Loose Coupling) 원칙 등을 톡해 μ‹€ν˜„λ©λ‹ˆλ‹€ [6-8]. ## πŸ“– Core Content * **λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€μ—μ„œμ˜ κ΅¬ν˜„ 뢄리 (Loose Coupling):** μ„œλΉ„μŠ€μ™€ μ†ŒλΉ„μž κ°„μ˜ μƒν˜Έ μ˜μ‘΄μ„±μ„ μ΅œμ†Œν™”ν•˜λŠ” λŠμŠ¨ν•œ κ²°ν•© 원칙을 톡해 λ‹¬μ„±λ©λ‹ˆλ‹€. λΉ„μ¦ˆλ‹ˆμŠ€ μ§€ν–₯ APIλ₯Ό ν†΅ν•œ 계약(Contract)을 ν‘œμ€€ν™”ν•¨μœΌλ‘œμ¨, μ„œλΉ„μŠ€ λ‚΄λΆ€ κ΅¬ν˜„ 방식이 λ³€κ²½λ˜λ”λΌλ„ μ†ŒλΉ„μžλŠ” μ•„λ¬΄λŸ° 영ν–₯을 λ°›μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ [6]. 이λ₯Ό 톡해 μ„œλΉ„μŠ€ μ†Œμœ μžλŠ” λ‹€μš΄μŠ€νŠΈλ¦Όμ— 영ν–₯을 μ£Όμ§€ μ•Šκ³  μΈν„°νŽ˜μ΄μŠ€ 이면의 λ ˆμ½”λ“œ μ‹œμŠ€ν…œμ΄λ‚˜ νŠΉμ • 기술 κ΅¬ν˜„μ„ 자유둭게 κ΅μ²΄ν•˜κ±°λ‚˜ μˆ˜μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [9]. * **ν—₯사고날 μ•„ν‚€ν…μ²˜ (Ports and Adapters):** λΉ„μ¦ˆλ‹ˆμŠ€ 둜직(μ½”μ–΄)을 인프라, UI λ“± μ™ΈλΆ€ μ‹œμŠ€ν…œμœΌλ‘œλΆ€ν„° μ² μ €νžˆ κ²©λ¦¬ν•©λ‹ˆλ‹€ [1]. 포트(Port)λŠ” μ½”μ–΄κ°€ 외뢀와 μƒν˜Έμž‘μš©ν•˜λŠ” 방식을 μ •μ˜ν•˜λŠ” μΆ”μƒν™”λœ μΈν„°νŽ˜μ΄μŠ€μ΄λ©°, μ–΄λŒ‘ν„°(Adapter)λŠ” μ΄λŸ¬ν•œ 포트λ₯Ό 톡해 도메인과 μ™ΈλΆ€ μ‹œμŠ€ν…œμ„ μ—°κ²°ν•˜λŠ” 'ꡬ체적인 κ΅¬ν˜„μ²΄(concrete implementations)' 역할을 μˆ˜ν–‰ν•©λ‹ˆλ‹€(예: REST API μ–΄λŒ‘ν„°, λ°μ΄ν„°λ² μ΄μŠ€ μ–΄λŒ‘ν„°) [7]. * **클린 μ•„ν‚€ν…μ²˜ (Clean Architecture):** μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό 동심원 ν˜•νƒœμ˜ κ³„μΈ΅μœΌλ‘œ κ΅¬μ„±ν•˜λ©°, μ˜μ‘΄μ„±μ€ λ°˜λ“œμ‹œ μ™ΈλΆ€μ—μ„œ λ‚΄λΆ€(λΉ„μ¦ˆλ‹ˆμŠ€ 둜직 쀑심)둜만 ν–₯ν•˜λ„λ‘ μ—„κ²©ν•˜κ²Œ κ°•μ œν•©λ‹ˆλ‹€ [5, 8]. κ°€μž₯ λ°”κΉ₯μͺ½ 계측인 'ν”„λ ˆμž„μ›Œν¬ 및 λ“œλΌμ΄λ²„(Frameworks and Drivers)'에 λ°μ΄ν„°λ² μ΄μŠ€, UI λ“±μ˜ ꡬ체적인 기술 κ΅¬ν˜„μ΄ μœ„μΉ˜ν•˜λ©°, λ‚΄λΆ€μ˜ 엔티티와 μœ μ¦ˆμΌ€μ΄μŠ€λŠ” 이 κ΅¬ν˜„ κ³„μΈ΅μœΌλ‘œλΆ€ν„° μ™„μ „νžˆ λ…λ¦½λ©λ‹ˆλ‹€ [2]. 결과적으둜 핡심 λ„λ©”μΈμ˜ 영ν–₯ 없이 μ™ΈλΆ€ κ΅¬ν˜„ μ»΄ν¬λ„ŒνŠΈλ₯Ό 자유둭게 μˆ˜μ •ν•˜κ±°λ‚˜ ꡐ체할 수 μžˆμŠ΅λ‹ˆλ‹€ [5]. * **κ°œλ…μ  무결성 (Conceptual integrity):** μ†Œν”„νŠΈμ›¨μ–΄ μ‹œμŠ€ν…œμ΄ 무엇을 ν•΄μ•Ό ν•˜κ³  μ–΄λ–»κ²Œ λ™μž‘ν•΄μ•Ό ν•˜λŠ”μ§€μ— λŒ€ν•œ μ „λ°˜μ μΈ 비전은, κ·Έ 비전을 λ‹¬μ„±ν•˜κΈ° μœ„ν•œ ꡬ체적인 μ‹€μ œ κ΅¬ν˜„(implementation) μš”μ†Œμ™€ λΆ„λ¦¬λ˜μ–΄μ•Ό ν•œλ‹€λŠ” 근본적인 μ•„ν‚€ν…μ²˜ 원칙을 μ§€μ§€ν•©λ‹ˆλ‹€ [3]. ## βš–οΈ Trade-offs & Caveats * **초기 λ³΅μž‘μ„±κ³Ό μ˜€λ²„ν—€λ“œ:** κ΅¬ν˜„μ„ μ™„μ „νžˆ λΆ„λ¦¬ν•˜κΈ° μœ„ν•΄ ν¬νŠΈμ™€ μ–΄λŒ‘ν„°λ₯Ό μ„€κ³„ν•˜κ±°λ‚˜, 동심원 계측 λͺ¨λΈμ„ μ—„κ²©ν•˜κ²Œ μ μš©ν•˜λŠ” 것은 초기 μ„€μ •μ˜ λ³΅μž‘μ„±μ„ 크게 μ¦κ°€μ‹œν‚΅λ‹ˆλ‹€ [4, 10]. λ‹¨μˆœν•œ CRUD μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄λ‚˜ λΉ λ₯Έ μΆœμ‹œκ°€ 생λͺ…인 μŠ€νƒ€νŠΈμ—…μ˜ MVP(Minimum Viable Product)λ₯Ό ꡬ좕할 λ•Œ μ΄λŸ¬ν•œ κ΅¬ν˜„ λΆ„λ¦¬λŠ” κ³Όλ„ν•œ μ—”μ§€λ‹ˆμ–΄λ§(Overkill)μ΄λ‚˜ λΆˆν•„μš”ν•œ μ˜€λ²„ν—€λ“œκ°€ 될 수 μžˆμŠ΅λ‹ˆλ‹€ [10-12]. * **λ³΄μΌλŸ¬ν”Œλ ˆμ΄νŠΈ μ½”λ“œ 증가:** 클린 μ•„ν‚€ν…μ²˜μ²˜λŸΌ 'μ˜μ‘΄μ„±μ€ μ™ΈλΆ€μ—μ„œ λ‚΄λΆ€λ‘œ'λΌλŠ” κ·œμΉ™μ„ κ°•μ œν•˜λ‹€ 보면, 각 κ³„μΈ΅λ§ˆλ‹€ μœ μ‚¬ν•œ κ°’ 객체(Value Object)λ₯Ό μ€‘λ³΅ν•΄μ„œ κ΅¬ν˜„ν•˜κ³  λ§€ν•‘ν•΄μ•Ό ν•˜λŠ” κ²½μš°κ°€ μƒκΉλ‹ˆλ‹€ [13]. 이둜 인해 μ΄ˆκΈ°μ—λŠ” λ™μΌν•œ μ½”λ“œλ₯Ό λ³΅μ‚¬ν•˜μ—¬ λΆ™μ—¬λ„£κΈ° ν•œ 것 같은 λ‹€μˆ˜μ˜ λ³΄μΌλŸ¬ν”Œλ ˆμ΄νŠΈ μ½”λ“œλ₯Ό μž‘μ„±ν•΄μ•Ό ν•©λ‹ˆλ‹€ [13, 14]. * **μ„±λŠ₯ μ§€μ—° (Performance Overhead):** μ‹œμŠ€ν…œμ˜ 핡심 둜직과 μ™ΈλΆ€ κ΅¬ν˜„μ„ κ²©λ¦¬ν•˜κΈ° μœ„ν•΄ μ–΄λŒ‘ν„°λ‚˜ 좔상화 계측을 μ§€μ†μ μœΌλ‘œ μΆ”κ°€ν•˜κ²Œ 되면, λŸ°νƒ€μž„μ— μ΄λŸ¬ν•œ 닀쀑 좔상화 계측을 톡과해야 ν•˜λ―€λ‘œ μ„±λŠ₯ μ˜€λ²„ν—€λ“œμ™€ μ§€μ—°(Latency)이 λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€ [14, 15]. * **규율 μœ μ§€μ˜ 어렀움 및 κ΅¬ν˜„ λˆ„μˆ˜:** κ΅¬ν˜„ λΆ„λ¦¬μ˜ 이점을 λˆ„λ¦¬κΈ° μœ„ν•΄μ„œλŠ” 개발 νŒ€ 내에 높은 μˆ˜μ€€μ˜ 규율이 ν•„μš”ν•©λ‹ˆλ‹€. 경계가 μ—„κ²©ν•˜κ²Œ κ΄€λ¦¬λ˜μ§€ μ•ŠμœΌλ©΄ μ‹œκ°„μ΄ 지남에 따라 (특히 전톡적인 κ³„μΈ΅ν˜• μ•„ν‚€ν…μ²˜μ—μ„œ) νŠΉμ • κ³„μΈ΅μ˜ κ΅¬ν˜„ μ„ΈλΆ€ 사항과 λΉ„μ¦ˆλ‹ˆμŠ€ 둜직이 κ°•ν•˜κ²Œ κ²°ν•©λ˜κ±°λ‚˜ λˆ„μˆ˜(Leak)λ˜μ–΄ μ–½νžˆκ³ μ„€ν‚¨ μ½”λ“œκ°€ 될 μœ„ν—˜μ΄ μžˆμŠ΅λ‹ˆλ‹€ [10, 16]. ## πŸ”— Knowledge Connections ### Related Concepts #### [관계 μœ ν˜• A: μ•„ν‚€ν…μ²˜/기반 기술] * [[Hexagonal Architecture]] * μ—°κ²° 이유: ν¬νŠΈμ™€ μ–΄λŒ‘ν„°λ₯Ό ν™œμš©ν•˜μ—¬ μ½”μ–΄ λΉ„μ¦ˆλ‹ˆμŠ€ 도메인과 μ™ΈλΆ€ κ΅¬ν˜„μ²΄λ₯Ό λͺ…ν™•ν•˜κ²Œ κ²©λ¦¬ν•˜λŠ” κ°€μž₯ λŒ€ν‘œμ μΈ μ•„ν‚€ν…μ²˜ νŒ¨ν„΄μ΄κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. * 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μΈν„°νŽ˜μ΄μŠ€(포트)λ₯Ό μ •μ˜ν•˜κ³  이λ₯Ό μ™ΈλΆ€ μ‹œμŠ€ν…œμ— 맞게 κ΅¬ν˜„ν•˜λŠ”(μ–΄λŒ‘ν„°) ꡬ쑰λ₯Ό 톡해, 기술 μŠ€νƒ ꡐ체 μ‹œ 핡심 λΉ„μ¦ˆλ‹ˆμŠ€λ₯Ό μ–΄λ–»κ²Œ λ³΄ν˜Έν•˜λŠ”μ§€ ꡬ체적인 λ©”μ»€λ‹ˆμ¦˜μ„ ν•™μŠ΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€. * [[Clean Architecture]] * μ—°κ²° 이유: μ˜μ‘΄μ„± κ·œμΉ™μ„ μ μš©ν•˜μ—¬ μ™ΈλΆ€μ˜ ν”„λ ˆμž„μ›Œν¬, UI, λ°μ΄ν„°λ² μ΄μŠ€ κ΅¬ν˜„ 계측이 λ‚΄λΆ€μ˜ λΉ„μ¦ˆλ‹ˆμŠ€ κ·œμΉ™κ³Ό μ—”ν‹°ν‹° 계측에 μΉ¨νˆ¬ν•˜μ§€ λͺ»ν•˜λ„둝 λ°©μ–΄ν•˜λŠ” μ „λž΅μ  ν”„λ ˆμž„μ›Œν¬μž…λ‹ˆλ‹€. * 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μ—”ν„°ν”„λΌμ΄μ¦ˆ ν™˜κ²½μ—μ„œ μ‹œμŠ€ν…œμ˜ μž₯기적인 ν…ŒμŠ€νŠΈ μš©μ΄μ„±κ³Ό μœ μ§€λ³΄μˆ˜μ„±μ„ κ·ΉλŒ€ν™”ν•˜κΈ° μœ„ν•΄ μ˜μ‘΄μ„± λ°©ν–₯을 μ–΄λ–»κ²Œ ν†΅μ œν•˜λŠ”μ§€ 이해할 수 μžˆμŠ΅λ‹ˆλ‹€. #### [관계 μœ ν˜• B: 섀계 원칙] * [[Loose Coupling]] * μ—°κ²° 이유: λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€λ‚˜ λΆ„μ‚° μ‹œμŠ€ν…œμ—μ„œ νŠΉμ • μ„œλΉ„μŠ€μ˜ κ΅¬ν˜„ 변경이 λ‹€λ₯Έ μ†ŒλΉ„μžλ‚˜ μ‹œμŠ€ν…œμ— λ―ΈμΉ˜λŠ” 영ν–₯을 μ΅œμ†Œν™”ν•˜λŠ” 핡심 λͺ©ν‘œμ΄μž μ›λ¦¬μž…λ‹ˆλ‹€. * 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: ν‘œμ€€ν™”λœ API 계약을 ν†΅ν•œ μ„œλΉ„μŠ€ κ°„μ˜ κ΅¬ν˜„ 뢄리 방법 및 독립적인 μ„œλΉ„μŠ€ μ§„ν™”/배포 μ „λž΅μ„ νŒŒμ•…ν•  수 μžˆμŠ΅λ‹ˆλ‹€. * [[Separation of Concerns]] * μ—°κ²° 이유: μ†Œν”„νŠΈμ›¨μ–΄ μ‹œμŠ€ν…œμ„ 각자의 μ—­ν• κ³Ό μ±…μž„(λΉ„μ¦ˆλ‹ˆμŠ€ 둜직, 데이터 ν‘œν˜„, μ‹œμŠ€ν…œ μ˜μ†μ„± λ“±)에 따라 κ³„μΈ΅μ΄λ‚˜ λͺ¨λ“ˆλ‘œ λΆ„λ¦¬ν•˜μ—¬ κ΄€λ¦¬ν•˜λŠ” 근본적인 μ² ν•™μž…λ‹ˆλ‹€. * 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜ 섀계 μ‹œ μ™œ ꡳ이 λ°μ΄ν„°λ² μ΄μŠ€μ™€ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직의 κ΅¬ν˜„μ„ λ‚˜λˆ„μ–΄μ•Όλ§Œ ν•˜λŠ”μ§€ κ·Έ 본질적 λͺ©μ μ„ 이해할 수 μžˆμŠ΅λ‹ˆλ‹€. ### Deeper Research Questions * 도메인과 κ΅¬ν˜„μ΄ μ—„κ²©ν•˜κ²Œ λΆ„λ¦¬λœ ν—₯사고날 μ•„ν‚€ν…μ²˜ ν™˜κ²½μ—μ„œ, 인프라 및 μ™ΈλΆ€ μ‹œμŠ€ν…œ μ˜μ‘΄μ„±μ΄ 제거된 순수 μ½”μ–΄ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직의 λ‹¨μœ„ ν…ŒμŠ€νŠΈ(Unit Testing)λŠ” ꡬ체적으둜 μ–΄λ–»κ²Œ μ„€κ³„ν•˜κ³  μˆ˜ν–‰ν•˜λŠ”κ°€? * 클린 μ•„ν‚€ν…μ²˜λ₯Ό λ„μž…ν•˜μ—¬ κ΅¬ν˜„μ„ 뢄리할 λ•Œ λ°œμƒν•˜λŠ” λ³΄μΌλŸ¬ν”Œλ ˆμ΄νŠΈ μ½”λ“œμ™€ 초기 ꡬ쑰 섀계 λΉ„μš©μ΄, μž₯기적인 μ‹œμŠ€ν…œ μœ μ§€λ³΄μˆ˜μ™€ μœ μ—°μ„± 이점을 μ΄ˆκ³Όν•˜μ—¬ 이읡으둜 μ „ν™˜λ˜λŠ” ν”„λ‘œμ νŠΈ 규λͺ¨μ˜ 뢄기점은 μ–΄λ–»κ²Œ 평가할 수 μžˆλŠ”κ°€? * λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜μ—μ„œ νŠΉμ • μ„œλΉ„μŠ€μ˜ λ°±μ—”λ“œ κ΅¬ν˜„(예: λ ˆκ±°μ‹œ λ°μ΄ν„°λ² μ΄μŠ€ ꡐ체)이 λŒ€λŒ€μ μœΌλ‘œ 변경될 λ•Œ, κΈ°μ‘΄ API 계약(Contract)을 λ”°λ₯΄λŠ” λ‹€λ₯Έ μ„œλΉ„μŠ€λ“€μ— λ‹€μš΄μŠ€νŠΈλ¦Ό 영ν–₯을 μ£Όμ§€ μ•Šκ³  λ¬΄μ€‘λ‹¨μœΌλ‘œ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ν•˜λŠ” 방법둠은 무엇인가? * 전톡적인 κ³„μΈ΅ν˜• μ•„ν‚€ν…μ²˜(Layered Architecture)λ₯Ό μš΄μš©ν•  λ•Œ μ‹œκ°„μ΄ 지남에 따라 λ°μ΄ν„°λ² μ΄μŠ€λ‚˜ ν”„λ ˆμž„μ›Œν¬μ˜ κ΅¬ν˜„ μ„ΈλΆ€ 사항이 λΉ„μ¦ˆλ‹ˆμŠ€ κ³„μΈ΅μœΌλ‘œ λˆ„μˆ˜(Leak)λ˜μ–΄ κ°•κ²°ν•©λ˜λŠ” 문제λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ μ–΄λ– ν•œ κ±°λ²„λ„ŒμŠ€ κ·œμΉ™κ³Ό μ½”λ“œ ν’ˆμ§ˆ 검증 도ꡬλ₯Ό μ μš©ν•  수 μžˆλŠ”κ°€? * 핡심 λΉ„μ¦ˆλ‹ˆμŠ€ 둜직과 μ™ΈλΆ€ κ΅¬ν˜„μ„ λΆ„λ¦¬ν•˜κΈ° μœ„ν•΄ μΆ”κ°€λ˜λŠ” 닀쀑 좔상화 κ³„μΈ΅μœΌλ‘œ 인해 λ°œμƒν•˜λŠ” λŸ°νƒ€μž„ μ„±λŠ₯ μ˜€λ²„ν—€λ“œμ™€ μ§€μ—°(Latency)을 ν•΄κ²°ν•˜λ©΄μ„œλ„, μ•„ν‚€ν…μ²˜μ˜ 뢄리 원칙을 μ€€μˆ˜ν•˜κΈ° μœ„ν•œ μ‹œμŠ€ν…œ 섀계 μ΅œμ ν™” 기법은 무엇인가? ### Practical Application Contexts * **Implementation:** μ™ΈλΆ€ λ°μ΄ν„°λ² μ΄μŠ€λ‚˜ μ„œλ“œνŒŒν‹° API에 μ’…μ†λœ 기술적 μ½”λ“œλ₯Ό 핡심 도메인 λ‘œμ§μ—μ„œ μ œκ±°ν•˜κ³ , λŒ€μ‹  μΈν„°νŽ˜μ΄μŠ€(포트)λ₯Ό μ •μ˜ν•œ λ’€ 이λ₯Ό λŸ°νƒ€μž„μ— μ—°κ²°ν•΄ μ£ΌλŠ” μ–΄λŒ‘ν„° 클래슀둜 별도 κ΅¬ν˜„ν•˜μ—¬ μ μš©ν•©λ‹ˆλ‹€. * **System Design:** μ‹œμŠ€ν…œ 섀계 μ‹œ λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ κ°„μ˜ ν†΅μ‹ μ—μ„œ λ‚΄λΆ€μ˜ 데이터 μ €μž₯ 방식 λ“± κ΅¬ν˜„ 세뢀사항이 μ™ΈλΆ€λ‘œ λ“œλŸ¬λ‚˜μ§€ μ•Šλ„λ‘ λΉ„μ¦ˆλ‹ˆμŠ€ μ§€ν–₯적인 ν‘œμ€€ API 계약을 μ •μ˜ν•˜μ—¬ μ„€κ³„ν•©λ‹ˆλ‹€. * **Operation / Maintenance:** 규제 μš”κ΅¬μ‚¬ν•­ λ³€κ²½μ΄λ‚˜ νŠΉμ • 벀더 쒅속성 νƒˆν”Όλ₯Ό μœ„ν•΄ 기술 μŠ€νƒμ„ ꡐ체할 λ•Œ(예: νŠΉμ • 결제 κ²Œμ΄νŠΈμ›¨μ΄ λ³€κ²½), μ½”μ–΄ 둜직의 μˆ˜μ • 없이 ν•΄λ‹Ή μ™ΈλΆ€ μ‹œμŠ€ν…œμ˜ μ–΄λŒ‘ν„° κ΅¬ν˜„μ²΄λ§Œ μƒˆλ‘­κ²Œ 개발 및 κ΅μ²΄ν•˜μ—¬ μ•ˆμ •μ μΈ μœ μ§€λ³΄μˆ˜λ₯Ό μˆ˜ν–‰ν•©λ‹ˆλ‹€. * **Learning Path:** Layered Architecture의 κΈ°λ³Έ κ°œλ…κ³Ό ν•œκ³„(κ΅¬ν˜„ λˆ„μˆ˜) 인식 -> μ˜μ‘΄μ„± μ—­μ „μ˜ ν•„μš”μ„± λ„μΆœ -> Ports & Adapters (Hexagonal) νŒ¨ν„΄ ν•™μŠ΅ -> Clean Architecture의 μ—„κ²©ν•œ 계측 ꡬ쑰와 객체지ν–₯ μ›λ¦¬λ‘œ μ΄μ–΄μ§€λŠ” μ•„ν‚€ν…μ²˜ 심화 ν•™μŠ΅ κ²½λ‘œμ—μ„œ ν•΅μ‹¬μœΌλ‘œ λ‹€λ€„μ§‘λ‹ˆλ‹€. * **My Project Relevance:** ν˜„μž¬ μ§„ν–‰ 쀑인 ν”„λ‘œμ νŠΈμ˜ μ˜ˆμƒ 수λͺ… 주기와 λ³΅μž‘λ„λ₯Ό ν‰κ°€ν•˜μ—¬, 초기 개발 속도가 μ€‘μš”ν•œ MVP라면 λ‹¨μˆœν•œ ꡬ쑰λ₯Ό μ„ νƒν•˜κ³ , 미래의 λ³΅μž‘ν•œ ν™•μž₯이 ν•„μˆ˜μ μ΄λΌλ©΄ 초기 μ˜€λ²„ν—€λ“œλ₯Ό κ°μˆ˜ν•˜λ”λΌλ„ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직과 μ™ΈλΆ€ κ΅¬ν˜„μ„ μ² μ €νžˆ κ²©λ¦¬ν•˜λŠ” ꡬ쑰λ₯Ό 채택할지 κ²°μ •ν•˜λŠ” ν•„μˆ˜ νŒλ‹¨ 기쀀이 λ©λ‹ˆλ‹€. ### Adjacent Topics * [[Dependency Inversion Principle]] * ν™•μž₯ λ°©ν–₯: λΉ„μ¦ˆλ‹ˆμŠ€ 둜직이 μ €μˆ˜μ€€μ˜ κ΅¬ν˜„μ— μ˜μ‘΄ν•˜μ§€ μ•Šκ³  좔상화(μΈν„°νŽ˜μ΄μŠ€)에 μ˜μ‘΄ν•˜κ²Œ λ§Œλ“€μ–΄, μ•„ν‚€ν…μ²˜μ  κ΅¬ν˜„ 뢄리λ₯Ό 기술적(μ½”λ“œ μˆ˜μ€€)으둜 κ°€λŠ₯ν•˜κ²Œ ν•˜λŠ” 핡심 객체지ν–₯ μ›λ¦¬λ‘œ ν•™μŠ΅μ„ ν™•μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€. * [[Domain-Driven Design (DDD)]] * ν™•μž₯ λ°©ν–₯: μ™ΈλΆ€ κ΅¬ν˜„κ³Ό μ² μ €νžˆ λΆ„λ¦¬λœ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ ꡬ성할 λ•Œ, κ·Έ λ‚΄λΆ€μ˜ 'μ½”μ–΄(엔티티와 μœ μ¦ˆμΌ€μ΄μŠ€)'λ₯Ό λΉ„μ¦ˆλ‹ˆμŠ€ 언어와 λ§₯락에 λ§žμΆ”μ–΄ μ‹€λ¬΄μ μœΌλ‘œ μ–΄λ–»κ²Œ λͺ¨λΈλ§ν•˜κ³  ꡬ체화할 것인지에 λŒ€ν•œ 섀계 λ°©λ²•λ‘ μœΌλ‘œ ν™•μž₯이 κ°€λŠ₯ν•©λ‹ˆλ‹€. --- *Last updated: 2026-05-02*