--- id: P-REINFORCE-WIKI-B437D29F category: "10_Wiki/πŸ’‘ Topics/02_Architecture_Principles" confidence_score: 0.95 tags: ['hexagonal-architecture', 'clean-architecture', 'μ˜μ‘΄μ„±-μ—­μ „-(dependency-inversion)', 'layered-architecture-pattern', 'microservices-architecture-pattern', 'architecture-principles'] last_reinforced: 2026-05-02 --- # [[Hexagonal Architecture]] ## πŸ“Œ Brief Summary **ν—₯사고날 μ•„ν‚€ν…μ²˜(Hexagonal Architecture)** λ˜λŠ” **ν¬νŠΈμ™€ μ–΄λŒ‘ν„°(Ports and Adapters) νŒ¨ν„΄**은 λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ λ°μ΄ν„°λ² μ΄μŠ€, UI, ν”„λ ˆμž„μ›Œν¬ λ“± μ™ΈλΆ€ μ‹œμŠ€ν…œμœΌλ‘œλΆ€ν„° λΆ„λ¦¬ν•˜μ—¬ λŠμŠ¨ν•˜κ²Œ κ²°ν•©λœ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ§Œλ“œλŠ” 섀계 νŒ¨ν„΄μ΄λ‹€ [1, 2]. μ•Œλ¦¬μŠ€ν…Œμ–΄ μ½”μ˜€λ²ˆ(Alistair Cockburn)이 μ°½μ•ˆν•œ 이 κ΅¬μ‘°λŠ” μ˜μ‘΄μ„±μ˜ λ°©ν–₯이 μ² μ €νžˆ μ‹œμŠ€ν…œ 쀑심뢀λ₯Ό ν–₯ν•˜λ„λ‘ μ„€κ³„λ˜μ–΄, μ™ΈλΆ€ 기술의 λ³€ν™”κ°€ 핡심 λΉ„μ¦ˆλ‹ˆμŠ€ κ·œμΉ™μ— 영ν–₯을 λ―ΈμΉ˜μ§€ μ•Šκ²Œ λ³΄ν˜Έν•œλ‹€ [2, 3]. 결과적으둜 μ‹œμŠ€ν…œμ˜ 높은 **ν…ŒμŠ€νŠΈ μš©μ΄μ„±(Testability), μœ μ§€λ³΄μˆ˜μ„±, 그리고 μœ μ—°ν•œ 기술 μŠ€νƒ ꡐ체**λ₯Ό κ°€λŠ₯ν•˜κ²Œ ν•œλ‹€ [4, 5]. ## πŸ“– Core Content * **핡심 도메인(Domain/Core)**: μ‹œμŠ€ν…œμ˜ 쀑심에 μœ„μΉ˜ν•˜λ©°, μ™ΈλΆ€ μ‹œμŠ€ν…œ(UI, λ°μ΄ν„°λ² μ΄μŠ€ λ“±)에 λŒ€ν•œ μ–΄λ– ν•œ μ˜μ‘΄μ„±λ„ κ°–μ§€ μ•ŠλŠ” μˆœμˆ˜ν•œ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직과 κ·œμΉ™μ„ ν¬ν•¨ν•œλ‹€ [1, 3, 6]. * **포트(Ports)**: μ½”μ–΄ μ˜μ—­μ΄ μ™ΈλΆ€ 세계와 μ†Œν†΅ν•˜λŠ” 방식을 μ •μ˜ν•˜λŠ” μΆ”μƒν™”λœ μΈν„°νŽ˜μ΄μŠ€ 계측이닀 [3, 6]. * **μΈλ°”μš΄λ“œ(Driving/Input) 포트**: μ‚¬μš©μžμ˜ μž…λ ₯μ΄λ‚˜ μ™ΈλΆ€ API 호좜이 μ½”μ–΄ 둜직과 μƒν˜Έμž‘μš©ν•˜λŠ” μ§„μž…μ μ„ μ •μ˜ν•œλ‹€ [1, 6]. * **μ•„μ›ƒλ°”μš΄λ“œ(Driven/Output) 포트**: μ½”μ–΄κ°€ 데이터 μ˜μ†μ„±μ΄λ‚˜ μ™ΈλΆ€ λ©”μ‹œμ§• μ‹œμŠ€ν…œ λ“± μ™ΈλΆ€ 인프라와 μƒν˜Έμž‘μš©ν•˜λŠ” 방식을 μ •μ˜ν•œλ‹€ [1, 6]. * **μ–΄λŒ‘ν„°(Adapters)**: μ™ΈλΆ€ μ‹œμŠ€ν…œκ³Ό λ„λ©”μΈμ˜ 포트λ₯Ό μ—°κ²°ν•˜λŠ” ꡬ체적인 κ΅¬ν˜„μ²΄λ‘œ, μ™ΈλΆ€μ—μ„œ λ“€μ–΄μ˜€κ±°λ‚˜ λ‚˜κ°€λŠ” 데이터λ₯Ό λ³€ν™˜ν•˜λŠ” 역할을 ν•œλ‹€ [3, 6]. * **κΈ°λ³Έ(Primary) μ–΄λŒ‘ν„°**: HTTP μš”μ²­μ΄λ‚˜ μ‚¬μš©μž μž…λ ₯을 μ½”μ–΄κ°€ 이해할 수 μžˆλŠ” λͺ…λ ΉμœΌλ‘œ λ²ˆμ—­ν•œλ‹€ [1]. * **보쑰(Secondary) μ–΄λŒ‘ν„°**: μ•„μ›ƒλ°”μš΄λ“œ 포트λ₯Ό κ΅¬ν˜„ν•˜μ—¬ μ‹€μ œ μ™ΈλΆ€ λ°μ΄ν„°λ² μ΄μŠ€ μΏΌλ¦¬λ‚˜ μ„œλΉ„μŠ€ ν˜ΈμΆœμ„ μˆ˜ν–‰ν•œλ‹€ [1, 6]. * **μ˜μ‘΄μ„± μ—­μ „(Dependency Inversion)κ³Ό ꡬ쑰적 뢄리**: 전톡적인 κ³„μΈ΅ν˜• μ•„ν‚€ν…μ²˜(Layered Architecture)κ°€ ν”„λ ˆμ  ν…Œμ΄μ…˜ βž” λΉ„μ¦ˆλ‹ˆμŠ€ βž” λ°μ΄ν„°λ² μ΄μŠ€ λ°©ν–₯의 ν•˜ν–₯식 μ˜μ‘΄μ„±μ„ κ°€μ§€λŠ” 반면, ν—₯사고날 μ•„ν‚€ν…μ²˜λŠ” **λΉ„μ¦ˆλ‹ˆμŠ€λ₯Ό 쀑앙에 두고 ν”„λ ˆμ  ν…Œμ΄μ…˜κ³Ό λ°μ΄ν„°λ² μ΄μŠ€ λͺ¨λ‘κ°€ λΉ„μ¦ˆλ‹ˆμŠ€ 계측을 ν–₯ν•΄ μ˜μ‘΄ν•˜λ„λ‘(ν”„λ ˆμ  ν…Œμ΄μ…˜ βž” λΉ„μ¦ˆλ‹ˆμŠ€ β¬… λ°μ΄ν„°λ² μ΄μŠ€)** μ˜μ‘΄μ„±μ„ μ—­μ „μ‹œν‚¨λ‹€ [3, 7]. * **λ³΄μ•ˆ 및 경계 ν†΅μ œ**: ν¬νŠΈμ™€ μ–΄λŒ‘ν„°λ₯Ό μ—„κ²©νžˆ μ •μ˜ν•¨μœΌλ‘œμ¨ UI κ³„μΈ΅μ—μ„œ 직접 λ°μ΄ν„°λ² μ΄μŠ€μ— μ ‘κ·Όν•˜λŠ” λ“±μ˜ λΆˆμ•ˆμ „ν•œ 관행을 λ°©μ§€ν•œλ‹€ [8]. μž…λ ₯ μœ νš¨μ„± 검사, μ ‘κ·Ό μ œμ–΄ λ“± λ³΄μ•ˆ λ©”μ»€λ‹ˆμ¦˜μ„ μ–΄λŒ‘ν„° κ²½κ³„μ—μ„œ κ°•μ œν•  수 μžˆμ–΄ 핡심 도메인 둜직이 μ†μƒλ˜λŠ” 것을 λ³΄ν˜Έν•œλ‹€ [8, 9]. ## βš–οΈ Trade-offs & Caveats * **높은 초기 λ³΅μž‘μ„±κ³Ό κ°€νŒŒλ₯Έ ν•™μŠ΅ 곑선**: ν¬νŠΈμ™€ μ–΄λŒ‘ν„°λ₯Ό μ„€κ³„ν•˜κ³  κ΅¬ν˜„ν•˜λŠ” 방식은 μ΄ˆκΈ°μ— λ³΅μž‘ν•˜λ©°, κ²½ν—˜μ΄ 적은 개발자 νŒ€μ—κ²ŒλŠ” κ°€νŒŒλ₯Έ ν•™μŠ΅ 곑선을 μš”κ΅¬ν•œλ‹€ [4, 10]. * **λ³΄μΌλŸ¬ν”Œλ ˆμ΄νŠΈ μ½”λ“œμ™€ μ„±λŠ₯ μ˜€λ²„ν—€λ“œ**: λ™μΌν•œ λͺ©μ μ„ μœ„ν•΄ 포트 μΈν„°νŽ˜μ΄μŠ€μ™€ μ–΄λŒ‘ν„° κ΅¬ν˜„μ²΄λ₯Ό λΆ„λ¦¬ν•˜μ—¬ μž‘μ„±ν•΄μ•Ό ν•˜λ―€λ‘œ λ³΄μΌλŸ¬ν”Œλ ˆμ΄νŠΈ μ½”λ“œ(반볡 μ½”λ“œ)κ°€ μ¦κ°€ν•œλ‹€ [4]. λ˜ν•œ, μΆ”κ°€λœ 좔상화 κ³„μΈ΅λ“€λ‘œ 인해 μ•½κ°„μ˜ μ„±λŠ₯ μ˜€λ²„ν—€λ“œ(Performance Overhead)κ°€ λ°œμƒν•  수 μžˆλ‹€ [4, 11]. * **λ‹¨μˆœ ν”„λ‘œμ νŠΈ 적용 μ‹œμ˜ λΉ„νš¨μœ¨μ„± (Over-engineering)**: μ΅œμ†Œν•œμ˜ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§λ§Œμ„ κ°€μ§„ λ‹¨μˆœν•œ CRUD(Create, Read, Update, Delete) μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄λ‚˜ 마감 κΈ°ν•œμ΄ 맀우 μ΄‰λ°•ν•œ ν”„λ‘œμ νŠΈμ— λ„μž…ν•  경우, μ•„ν‚€ν…μ²˜κ°€ μ£ΌλŠ” 이점보닀 μ„€μ • 및 섀계 λΉ„μš©μ΄ 더 μ»€μ§€λŠ” μ˜€λ²„μ—”μ§€λ‹ˆμ–΄λ§ λ¬Έμ œκ°€ λ°œμƒν•œλ‹€ [12, 13]. * **λ°˜λŒ€ κΈ‰λΆ€(Trade-off)λ‘œμ„œμ˜ μœ μ§€λ³΄μˆ˜μ„±**: 초기 ꡬ좕 λΉ„μš©κ³Ό λ³΅μž‘μ„±, μ•½κ°„μ˜ μ„±λŠ₯ μ €ν•˜λ₯Ό κ°μˆ˜ν•˜λŠ” λŒ€μ‹ , λ°μ΄ν„°λ² μ΄μŠ€λ‚˜ ν”„λ ˆμž„μ›Œν¬ 같은 **μ™ΈλΆ€ 기술이 변경될 λ•Œ 핡심 λ‘œμ§μ„ μˆ˜μ •ν•  ν•„μš”κ°€ μ—†μœΌλ©° 독립적인 격리 ν…ŒμŠ€νŠΈ(Unit Testing)κ°€ 맀우 μ‰¬μ›Œμ§„λ‹€λŠ” κ°•λ ₯ν•œ μœ μ§€λ³΄μˆ˜μ  이점**을 μ–»λŠ”λ‹€ [4, 5, 14]. ## πŸ”— Knowledge Connections ### Related Concepts #### [μ•„ν‚€ν…μ²˜/기반 섀계 μ² ν•™] * [[Clean Architecture]] * μ—°κ²° 이유: ν—₯사고날 μ•„ν‚€ν…μ²˜μ™€ λ§ˆμ°¬κ°€μ§€λ‘œ 도메인(Entities/Use Cases)을 쀑앙에 λ°°μΉ˜ν•˜κ³  μ˜μ‘΄μ„±μ„ μ•ˆμͺ½μœΌλ‘œ ν–₯ν•˜κ²Œ ν•˜μ—¬ μ™ΈλΆ€ μš”μΈμœΌλ‘œλΆ€ν„° λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ κ²©λ¦¬ν•˜λŠ” κ³΅ν†΅μ˜ 철학을 λ°œμ „μ‹œν‚¨ νŒ¨ν„΄μ΄λ‹€ [14, 15]. * 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μ•„ν‚€ν…μ²˜κ°€ 동심원 κ³„μΈ΅μœΌλ‘œ λ”μš± 세뢄화될 λ•Œ ν—₯μ‚¬κ³ λ‚ μ˜ 'ν¬νŠΈμ™€ μ–΄λŒ‘ν„°' κ°œλ…μ΄ μ–΄λ–»κ²Œ 'μΈν„°νŽ˜μ΄μŠ€ μ–΄λŒ‘ν„°'둜 κ΅¬μ‘°ν™”λ˜λŠ”μ§€ 이해할 수 μžˆλ‹€ [16]. * [[μ˜μ‘΄μ„± μ—­μ „ (Dependency Inversion)]] * μ—°κ²° 이유: μ™ΈλΆ€ λ°μ΄ν„°λ² μ΄μŠ€ 기술이 λΉ„μ¦ˆλ‹ˆμŠ€ 계측에 μ˜μ‘΄ν•˜λ„λ‘ λ§Œλ“œλŠ” ν—₯사고날 및 도메인 쀑심 섀계 μ•„ν‚€ν…μ²˜μ˜ κ°€μž₯ 근본적인 원리닀 [3, 17]. * 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μ œμ–΄ 흐름과 μ†ŒμŠ€ μ½”λ“œ μ˜μ‘΄μ„±μ˜ λ°©ν–₯을 λΆ„λ¦¬ν•˜λŠ” 객체 μ§€ν–₯ 섀계 원칙을 이해할 수 μžˆλ‹€. #### [비ꡐ/λŒ€μ‘° μ•„ν‚€ν…μ²˜ ꡬ쑰] * [[Layered Architecture Pattern]] * μ—°κ²° 이유: ν—₯사고날 μ•„ν‚€ν…μ²˜μ™€ 달리 기술적 κ΄€μ μ˜ μˆ˜ν‰μ  μΈ΅(UI, λΉ„μ¦ˆλ‹ˆμŠ€, 데이터)으둜 λ‚˜λ‰˜λ©° μ˜μ‘΄μ„±μ΄ ν•˜ν–₯μ‹μœΌλ‘œ 흐λ₯΄λŠ” 고전적 μ•„ν‚€ν…μ²˜λ‹€ [7, 18, 19]. * 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μ™œ ν˜„λŒ€ μ‹œμŠ€ν…œμ΄ λ‹¨μˆœν•œ Layered κ΅¬μ‘°μ—μ„œ λ²—μ–΄λ‚˜ ν¬νŠΈμ™€ μ–΄λŒ‘ν„° ꡬ쑰둜 μ§„ν™”ν•΄μ•Όλ§Œ ν–ˆλŠ”μ§€(도메인 보호의 ν•„μš”μ„±) κ·Έ ν•œκ³„λ₯Ό λŒ€μ‘°ν•΄ λ³Ό 수 μžˆλ‹€ [13, 20]. * [[Microservices Architecture Pattern]] * μ—°κ²° 이유: ν—₯사고날 μ•„ν‚€ν…μ²˜λŠ” λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μƒνƒœκ³„ λ‚΄μ—μ„œ 각 κ°œλ³„ μ„œλΉ„μŠ€ λ‹¨μœ„μ˜ λ‚΄λΆ€ μ•„ν‚€ν…μ²˜λ₯Ό κ²¬κ³ ν•˜κ²Œ μ„€κ³„ν•˜λŠ” 데 ν›Œλ₯­ν•˜κ²Œ κ²°ν•©(μ‹œλ„ˆμ§€)λœλ‹€ [5, 21]. * 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: κ±°μ‹œμ  μ‹œμŠ€ν…œ(Microservices) λ‚΄μ—μ„œ λ―Έμ‹œμ  μ»΄ν¬λ„ŒνŠΈ(Hexagonal)κ°€ μ–΄λ–»κ²Œ μ„€κ³„λ˜μ–΄ 기술 μŠ€νƒ 독립성을 ν™•λ³΄ν•˜λŠ”μ§€ νŒŒμ•…ν•  수 μžˆλ‹€. ### Deeper Research Questions * ν—₯사고날 μ•„ν‚€ν…μ²˜μ˜ μΈλ°”μš΄λ“œ(Driving) ν¬νŠΈμ™€ μ•„μ›ƒλ°”μš΄λ“œ(Driven) 포트 κ°„μ˜ 섀계적 차이점은 무엇이며, μ½”λ“œ λ ˆλ²¨μ—μ„œ 이λ₯Ό κ΅¬ν˜„ν•  λ•Œ μ œμ–΄ 흐름(Control Flow)은 μ–΄λ–»κ²Œ λ‹¬λΌμ§€λŠ”κ°€? * λ‹¨μˆœν•œ CRUD μœ„μ£Όμ˜ μŠ€νƒ€νŠΈμ—… MVP ν”„λ‘œμ νŠΈμ— ν—₯사고날 μ•„ν‚€ν…μ²˜λ₯Ό λ„μž…ν–ˆμ„ λ•Œ λ°œμƒν•˜λŠ” μ˜€λ²„μ—”μ§€λ‹ˆμ–΄λ§(Over-engineering)의 ꡬ체적인 λΉ„μš©κ³Ό λŒ€μ•ˆμ€ 무엇인가? * λ ˆκ±°μ‹œ κ³„μΈ΅ν˜• μ•„ν‚€ν…μ²˜(Layered Architecture)λ₯Ό ν—₯사고날 μ•„ν‚€ν…μ²˜λ‘œ 점진적 λ¦¬νŒ©ν† λ§(Incremental Refactoring)ν•˜κΈ° μœ„ν•œ κ°€μž₯ μ•ˆμ •μ μΈ μ „λž΅μ€ 무엇인가? * μ–΄λŒ‘ν„°(Adapter) κ³„μΈ΅μ—μ„œ μ™ΈλΆ€ APIλ‚˜ λ°μ΄ν„°λ² μ΄μŠ€μ˜ 데이터 ꡬ쑰λ₯Ό λ‚΄λΆ€ 도메인 λͺ¨λΈλ‘œ λ³€ν™˜ν•  λ•Œ, μ„±λŠ₯ μ˜€λ²„ν—€λ“œλ₯Ό μ΅œμ†Œν™”ν•˜κ³  데이터 정합성을 μœ μ§€ν•˜λŠ” 졜적의 λ§€ν•‘(Mapping) 방법은 무엇인가? * λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜(MSA) ν™˜κ²½μ—μ„œ ν—₯사고날 μ•„ν‚€ν…μ²˜λ₯Ό 각 μ„œλΉ„μŠ€ 내뢀에 μ μš©ν•˜λŠ” 것이, μ™ΈλΆ€ μ„œλΉ„μŠ€ 톡신 λ³€κ²½μ΄λ‚˜ λΆ„μ‚° ν™˜κ²½ 기술 μŠ€νƒ ꡐ체에 μ–΄λ–»κ²Œ 회볡 탄λ ₯성을 λΆ€μ—¬ν•˜λŠ”κ°€? ### Practical Application Contexts * **Implementation:** 핡심 λΉ„μ¦ˆλ‹ˆμŠ€ 둜직 μ½”λ“œλ₯Ό μž‘μ„±ν•  λ•Œ, λ°μ΄ν„°λ² μ΄μŠ€ μ ‘κ·Όμ΄λ‚˜ μ™ΈλΆ€ HTTP 톡신 μ½”λ“œλ₯Ό 직접 μž‘μ„±ν•˜λŠ” λŒ€μ‹  순수 μΈν„°νŽ˜μ΄μŠ€(Port)만 μ •μ˜ν•œλ‹€. 이후 μ™ΈλΆ€ ν”„λ ˆμž„μ›Œν¬(Spring, Express λ“±)에 μ˜μ‘΄ν•˜λŠ” ꡬ체적인 Adapter 클래슀λ₯Ό λ§Œλ“€μ–΄ μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•œλ‹€ [1, 3, 6]. * **System Design:** μ§„ν™”ν•˜λŠ” λΉ„μ¦ˆλ‹ˆμŠ€ κ·œμΉ™μ΄ ν¬ν•¨λœ μ „μžμƒκ±°λž˜λ‚˜ λ±…ν‚Ή μ‹œμŠ€ν…œ, λ˜λŠ” λ°μ΄ν„°λ² μ΄μŠ€/ν”„λ ˆμž„μ›Œν¬ ꡐ체가 빈번히 일어날 수 μžˆλŠ” μž₯κΈ° μœ μ§€λ³΄μˆ˜ μ§€ν–₯ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 골격으둜 ν™œμš©λœλ‹€ [12, 22, 23]. * **Operation / Maintenance:** μ™ΈλΆ€ μ„œλΉ„μŠ€ κ³΅κΈ‰μž(예: 결제 κ²Œμ΄νŠΈμ›¨μ΄ Stripeμ—μ„œ PayPal둜 λ³€κ²½)λ‚˜ λ°μ΄ν„°λ² μ΄μŠ€(예: Oracleμ—μ„œ PostgreSQL둜 λ³€κ²½)λ₯Ό ꡐ체해야 ν•  λ•Œ μ‹œμŠ€ν…œμ˜ μ½”μ–΄ λ‘œμ§μ€ μ „ν˜€ κ±΄λ“œλ¦¬μ§€ μ•Šκ³  μ™ΈλΆ€μ˜ Adapter κ³„μΈ΅λ§Œ κ΅μ²΄ν•˜λ―€λ‘œ 운영 쀑단 μœ„ν—˜κ³Ό μœ μ§€λ³΄μˆ˜ 뢀담이 획기적으둜 쀄어든닀 [5, 22]. * **Learning Path:** 기본적인 μ†Œν”„νŠΈμ›¨μ–΄ λ””μžμΈ νŒ¨ν„΄μ„ ν•™μŠ΅ν•œ λ’€, 전톡적인 κ³„μΈ΅ν˜• μ•„ν‚€ν…μ²˜(Layered)의 κ°•ν•œ κ²°ν•© λ¬Έμ œμ μ„ μΈμ§€ν•˜κ³ , 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ 'μ˜μ‘΄μ„± μ—­μ „ 원칙(DIP)'κ³Ό '관심사 뢄리'λ₯Ό λ°°μš°λ©΄μ„œ ν—₯사고날 μ•„ν‚€ν…μ²˜ 및 클린 μ•„ν‚€ν…μ²˜λ‘œ 지식을 ν™•μž₯ν•΄ λ‚˜κ°„λ‹€ [24, 25]. * **My Project Relevance:** μ†ŒμŠ€μ— κ΄€λ ¨ 정보가 λΆ€μ‘±ν•©λ‹ˆλ‹€. (μ‚¬μš©μžμ˜ κ°œλ³„ ν”„λ‘œμ νŠΈμ— λŒ€ν•œ ꡬ체적 λ¬Έλ§₯은 μ†ŒμŠ€ 데이터에 ν¬ν•¨λ˜μ–΄ μžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.) ### Adjacent Topics * [[Modular Monolith]] * ν™•μž₯ λ°©ν–₯: λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€μ˜ 운영 λ³΅μž‘μ„±μ„ ν”Όν•˜κΈ° μœ„ν•΄ 단일 배포 λ‹¨μœ„λ₯Ό μœ μ§€ν•˜λ©΄μ„œλ„, λ‚΄λΆ€μ μœΌλ‘œ ν—₯사고날 μ•„ν‚€ν…μ²˜μ™€ 같은 μ—„κ²©ν•œ 도메인 경계λ₯Ό κ°€μ Έκ°€λŠ” ν•˜μ΄λΈŒλ¦¬λ“œ μ§„ν™” ν˜•νƒœλ₯Ό ν•™μŠ΅ν•  수 μžˆλ‹€ [26, 27]. * [[Domain-Driven Design (DDD)]] * ν™•μž₯ λ°©ν–₯: ν—₯사고날 μ•„ν‚€ν…μ²˜μ˜ 쀑앙에 μœ„μΉ˜ν•˜λŠ” '핡심 λΉ„μ¦ˆλ‹ˆμŠ€ 둜직'을 도메인 객체와 μ• κ·Έλ¦¬κ±°νŠΈ(Aggregate) λ‹¨μœ„λ‘œ μ–΄λ–»κ²Œ 효과적으둜 λͺ¨λΈλ§ν•˜κ³  뢄리할 수 μžˆλŠ”μ§€ 섀계둠적 츑면으둜 ν™•μž₯ν•œλ‹€ [5, 28]. --- *Last updated: 2026-05-02*