--- id: P-REINFORCE-WIKI-809858D1 category: Dev confidence_score: 0.95 tags: ['clean-architecture', 'hexagonal-architecture', 'layered-architecture', 'dependency-inversion', 'domain-driven-design-(ddd)', 'architecture-principles'] last_reinforced: 2026-05-02 --- # [[Clean Architecture]] ## ๐Ÿ“Œ Brief Summary Clean Architecture(ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜)๋Š” ๋กœ๋ฒ„ํŠธ C. ๋งˆํ‹ด(Robert C. Martin)์ด ๋Œ€์ค‘ํ™”ํ•œ ์„ค๊ณ„ ํŒจํ„ด์œผ๋กœ, ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋™์‹ฌ์› ํ˜•ํƒœ์˜ ๊ณ„์ธต์œผ๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์™ธ๋ถ€ ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ์ธํ”„๋ผ๋กœ๋ถ€ํ„ฐ ์ฒ ์ €ํžˆ ๊ฒฉ๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค [1]. ์˜์กด์„ฑ์ด ํ•ญ์ƒ ๋ฐ”๊นฅ์ชฝ ๊ณ„์ธต์—์„œ ์•ˆ์ชฝ(์ค‘์‹ฌ) ๊ณ„์ธต์œผ๋กœ๋งŒ ํ–ฅํ•˜๋„๋ก ๊ฐ•์ œํ•˜๋Š” '์˜์กด์„ฑ ๊ทœ์น™(Dependency Rule)'์„ ๋”ฐ๋ฅด๋Š” ๊ฒƒ์ด ํŠน์ง•์ž…๋‹ˆ๋‹ค [2, 3]. ์ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, UI, ์™ธ๋ถ€ ๊ธฐ์ˆ ์˜ ๋ณ€ํ™”๊ฐ€ ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋„๋ก ํ•˜์—ฌ ์‹œ์Šคํ…œ์˜ ์žฅ๊ธฐ์ ์ธ ์œ ์ง€๋ณด์ˆ˜์„ฑ, ๋ณด์•ˆ ๋ฐ ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค [2, 4, 5]. ## ๐Ÿ“– Core Content * **๋™์‹ฌ์› ๊ธฐ๋ฐ˜์˜ 4๊ณ„์ธต ๊ตฌ์กฐ** ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ๋‹ค๋ฅธ ๋„ค ๊ฐœ์˜ ๋™์‹ฌ์› ๊ณ„์ธต์œผ๋กœ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค [1]. * **์—”ํ‹ฐํ‹ฐ(Entities):** ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™์„ ์บก์Аํ™”ํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • ์œ ์Šค์ผ€์ด์Šค๋‚˜ ๊ธฐ์ˆ ์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๋Š”, ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ด๊ณ  ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋กœ์ง์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค [6]. * **์œ ์Šค์ผ€์ด์Šค(Use Cases):** ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํŠนํ™”๋œ ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์—”ํ‹ฐํ‹ฐ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ํ๋ฆ„์„ ์กฐ์ •ํ•˜๋ฉฐ, ์‚ฌ์šฉ์ž ๊ด€์ ์—์„œ์˜ ์‹œ์Šคํ…œ ๋™์ž‘์„ ๊ทœ์ •ํ•ฉ๋‹ˆ๋‹ค [6]. * **์ธํ„ฐํŽ˜์ด์Šค ์–ด๋Œ‘ํ„ฐ(Interface Adapters):** ์™ธ๋ถ€ ์—์ด์ „์‹œ(์›น, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, UI ๋“ฑ)๊ฐ€ ์š”๊ตฌํ•˜๋Š” ํ˜•์‹๊ณผ ๋‚ด๋ถ€(์œ ์Šค์ผ€์ด์Šค ๋ฐ ์—”ํ‹ฐํ‹ฐ)์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ๊ฐ€์žฅ ํŽธ๋ฆฌํ•œ ํ˜•์‹ ์‚ฌ์ด์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ™˜ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค [6]. * **ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ ๋“œ๋ผ์ด๋ฒ„(Frameworks and Drivers):** ๊ฐ€์žฅ ๋ฐ”๊นฅ์ชฝ ๊ณ„์ธต์œผ๋กœ, ์›น ํ”„๋ ˆ์ž„์›Œํฌ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ, ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ๋“ฑ์˜ ์™ธ๋ถ€ ๋„๊ตฌ์™€ ๊ธฐ์ˆ ์ด ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค [6]. * **์—„๊ฒฉํ•œ ์˜์กด์„ฑ ๊ทœ์น™(Dependency Rule)** ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜์˜ ํ•ต์‹ฌ์€ ์˜์กด์„ฑ์ด ์˜ค์ง ๋ฐ”๊นฅ์ชฝ ๊ณ„์ธต์—์„œ ์•ˆ์ชฝ ๊ณ„์ธต์œผ๋กœ๋งŒ ํ๋ฅธ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค [2]. ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง(๋‚ด๋ถ€)์€ ์™ธ๋ถ€์˜ ๊ธฐ์ˆ ์  ๊ตฌํ˜„์— ๋Œ€ํ•ด ์ „ํ˜€ ์•Œ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค [2]. ๋‚ด๋ถ€์—์„œ๋Š” ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์ •์˜ํ•˜๊ณ , ์‹ค์ œ ๊ตฌํ˜„์ฒด๋Š” ์™ธ๋ถ€(์–ด๋Œ‘ํ„ฐ)์— ์œ„์น˜์‹œ์ผœ ์˜์กด์„ฑ ์ฃผ์ž…(DI) ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ†ตํ•ด ๋Ÿฐํƒ€์ž„์— ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถฅ๋‹ˆ๋‹ค [7]. * **๊ฐ•๋ ฅํ•œ ๋ณด์•ˆ ๋ฐ ๊ทœ์ • ์ค€์ˆ˜ ์ด์ ** ์ž…๋ ฅ ๊ฒ€์ฆ, ์ธ์ฆ, ์ธ๊ฐ€ ์ฒ˜๋ฆฌ ๋“ฑ์„ ์ธํ„ฐํŽ˜์ด์Šค ์–ด๋Œ‘ํ„ฐ ๊ณ„์ธต์œผ๋กœ ์ง‘์ค‘์‹œ์ผœ ํ•„ํ„ฐ๋ง๋œ ์•ˆ์ „ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ๋„๋‹ฌํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค [5]. ์ด๋ฅผ ํ†ตํ•ด SQL ์ธ์ ์…˜๊ณผ ๊ฐ™์€ ์™ธ๋ถ€ ์ทจ์•ฝ์ ์œผ๋กœ๋ถ€ํ„ฐ ๋„๋ฉ”์ธ์„ ๋ณดํ˜ธํ•˜๋ฉฐ ๊ณต๊ฒฉ ํ‘œ๋ฉด์„ ์ค„์ž…๋‹ˆ๋‹ค [5]. ๋˜ํ•œ ์–ด๋Œ‘ํ„ฐ ์ˆ˜์ค€์—์„œ ์•”ํ˜ธํ™”, ๊ฐ์‚ฌ ๋กœ๊น…(Audit Logging) ๋“ฑ์˜ ์ •์ฑ…์„ ์ผ๊ด€๋˜๊ฒŒ ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ์–ด GDPR, HIPAA์™€ ๊ฐ™์€ ๊ทœ์ • ์ค€์ˆ˜(Compliance) ์ฒด๊ณ„๋ฅผ ๋‹จ์ˆœํ™”ํ•ฉ๋‹ˆ๋‹ค [8, 9]. * **๋†’์€ ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ๊ณผ ๋‹จ์ผ ์ฑ…์ž„** ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋‚˜ UI ์ธํ”„๋ผ์—์„œ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ, ๋ฌด๊ฑฐ์šด ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์—†์ด๋„ ๋น ๋ฅด๊ณ  ์•ˆ์ •์ ์ธ ๊ฒฉ๋ฆฌ๋œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ(Unit Test)๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค [4]. ์ „์šฉ ๋งคํผ, ์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋ž˜์Šค, ํŒŒ์‚ฌ๋“œ(Facades) ๋“ฑ์˜ ๋„์ž…์„ ํ†ตํ•ด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋‹จ์ผ ์ฑ…์ž„ ์›์น™(SRP)์„ ์ง€ํ–ฅํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค [10]. ## โš–๏ธ Trade-offs & Caveats * **๋†’์€ ์ดˆ๊ธฐ ๋ณต์žก์„ฑ๊ณผ ๊ณผ๋„ํ•œ ์˜ค๋ฒ„ํ—ค๋“œ:** ์—„๊ฒฉํ•œ ๊ณ„์ธตํ™”๋Š” ์ˆ˜๋ช…์ด ๊ธธ๊ณ  ๋ณต์žกํ•œ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์‹œ์Šคํ…œ์—์„œ๋Š” ์œ ์ง€๋ณด์ˆ˜์„ฑ์˜ ์ด์ ์„ ์ œ๊ณตํ•˜์ง€๋งŒ, ์ดˆ๊ธฐ MVP(Minimum Viable Product)๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ์Šคํƒ€ํŠธ์—…์ด๋‚˜ ๋‹จ์ˆœํ•œ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋ถˆํ•„์š”ํ•œ ๊ณผ๋„ํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [11, 12]. * **๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์ฝ”๋“œ ์ฆ๊ฐ€:** ์˜์กด์„ฑ์ด ๋ฐ–์—์„œ ์•ˆ์œผ๋กœ๋งŒ ํ–ฅํ•˜๋„๋ก ๊ฐ•์ œํ•˜๊ธฐ ์œ„ํ•ด, ๊ฐ ๊ณ„์ธต๋งˆ๋‹ค ๋น„์Šทํ•œ ํ˜•ํƒœ์˜ ๊ฐ’ ๊ฐ์ฒด(POJO)๋‚˜ ๋ชจ๋ธ์„ ์ค‘๋ณตํ•ด์„œ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค [3]. ๊ฐ ๊ณ„์ธต์˜ ๋ชจ๋ธ์ด ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋…๋ฆฝ์ ์œผ๋กœ ์ง„ํ™”ํ• ์ง€๋ผ๋„, ์ดˆ๊ธฐ์—๋Š” ๋‹จ์ˆœํžˆ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•ด์„œ ๋ถ™์—ฌ๋„ฃ์€ ๊ฒƒ๊ณผ ๊ฐ™์€ ๋งŽ์€ ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์ฝ”๋“œ๋ฅผ ์œ ๋ฐœํ•ฉ๋‹ˆ๋‹ค [3]. * **๊ฐ€ํŒŒ๋ฅธ ํ•™์Šต ๊ณก์„ :** ์ถ”์ƒํ™” ๊ณ„์ธต์ด ์ถ”๊ฐ€๋˜๊ณ  ํฌํŠธ, ์–ด๋Œ‘ํ„ฐ, ์˜์กด์„ฑ ์—ญ์ „ ๋“ฑ์˜ ์„ค๊ณ„ ํŒจํ„ด์„ ํŒ€์› ๋ชจ๋‘๊ฐ€ ์ •ํ™•ํžˆ ์ดํ•ดํ•˜๊ณ  ๊ทœ์œจ์„ ์ง€์ผœ์•ผ ํ•˜๋ฏ€๋กœ ์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งŽ์€ ํŒ€์—๊ฒŒ๋Š” ๋„์ž…์ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [13]. ## ๐Ÿ”— Knowledge Connections ### Related Concepts #### [์•„ํ‚คํ…์ฒ˜/๊ธฐ๋ฐ˜ ๊ธฐ์ˆ ] * [[Hexagonal Architecture]] * ์—ฐ๊ฒฐ ์ด์œ : Clean Architecture๋Š” ๋„๋ฉ”์ธ ๋กœ์ง์„ ์™ธ๋ถ€ ์ข…์†์„ฑ์œผ๋กœ๋ถ€ํ„ฐ ๋ถ„๋ฆฌํ•œ๋‹ค๋Š” ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜(ํฌํŠธ์™€ ์–ด๋Œ‘ํ„ฐ)์˜ ์ฒ ํ•™์„ ์ •์ œํ•˜๊ณ  ๋ฐœ์ „์‹œํ‚จ ๊ตฌ์กฐ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค [1, 14, 15]. * ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์ฝ”์–ด ๋„๋ฉ”์ธ์ด ์™ธ๋ถ€ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ์–ด๋–ป๊ฒŒ ์ถ”์ƒํ™”๋œ ํฌํŠธ(Port)์™€ ๊ตฌ์ฒด์ ์ธ ์–ด๋Œ‘ํ„ฐ(Adapter)๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ๋˜๋Š”์ง€ ๊ทธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‹ฌ๋„ ์žˆ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [16]. * [[Layered Architecture]] * ์—ฐ๊ฒฐ ์ด์œ : Clean Architecture๋Š” ์ „ํ†ต์ ์ธ ๊ณ„์ธตํ˜• ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์กฐ์˜ ํ•œ๊ณ„๋ฅผ ๋ณด์™„ํ•˜๊ณ  ์˜์กด์„ฑ์˜ ๋ฐฉํ–ฅ์„ ์—ญ์ „์‹œ์ผœ ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ์„ ์ค‘์‹ฌ์œผ๋กœ ์žฌ๋ฐฐ์น˜ํ•œ ๋ฐœ์ „ํ˜•์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค [17, 18]. * ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ํ”„๋ ˆ์  ํ…Œ์ด์…˜ -> ๋น„์ฆˆ๋‹ˆ์Šค -> ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ํ๋ฅด๋˜ ๊ธฐ์กด ํ•˜ํ–ฅ์‹ ์˜์กด์„ฑ์ด ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์–ด๋–ป๊ฒŒ ๊ฐ•ํ•œ ๊ฒฐํ•ฉ์„ ์œ ๋ฐœํ•˜๋Š”์ง€ ๋น„๊ต ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [4, 19]. #### [์„ค๊ณ„ ์›์น™/๊ตฌํ˜„ ๋ฐฉ์‹] * [[Dependency Inversion]] (์˜์กด์„ฑ ์—ญ์ „ ์›์น™) * ์—ฐ๊ฒฐ ์ด์œ : ์™ธ๋ถ€ ์–ด๋Œ‘ํ„ฐ๊ฐ€ ๋‚ด๋ถ€ ์—”ํ‹ฐํ‹ฐ ๋ฐ ์œ ์Šค์ผ€์ด์Šค์—๋งŒ ์˜์กดํ•ด์•ผ ํ•˜๋Š” Clean Architecture์˜ ํ•ต์‹ฌ ๊ทœ์น™์„ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ทผ๊ฐ„ ์›๋ฆฌ์ž…๋‹ˆ๋‹ค [18]. * ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์š”๊ตฌ๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ•ต์‹ฌ ๋กœ์ง๊ณผ ๊ฐ™์€ ์œ„์น˜์— ๋‘๊ณ , ๊ตฌํ˜„๋ถ€๋ฅผ ์™ธ๋ถ€์— ๋‘์–ด ๋Ÿฐํƒ€์ž„์— ์ฃผ์ž…(DI)ํ•˜๋Š” ๊ธฐ์ˆ ์  ํ๋ฆ„์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [7]. * [[Domain-Driven Design (DDD)]] * ์—ฐ๊ฒฐ ์ด์œ : Clean Architecture์—์„œ ๊ฐ€์žฅ ์•ˆ์ชฝ์— ์œ„์น˜ํ•˜๋Š” Entities(ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™)๊ฐ€ ์™ธ๋ถ€์™€ ๋‹จ์ ˆ๋œ ์ˆœ์ˆ˜ํ•œ ๋„๋ฉ”์ธ ๋ชจ๋ธ์„ ํ˜•์„ฑํ•˜๋Š” ์ ‘๊ทผ๋ฒ•๊ณผ ๋งž๋‹ฟ์•„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค [13, 20]. * ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋ณต์žกํ•œ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ํ™˜๊ฒฝ์—์„œ ๊ธฐ์ˆ ์  ์„ธ๋ถ€์‚ฌํ•ญ์„ ๋ฐฐ์ œํ•˜๊ณ  ๋น„์ฆˆ๋‹ˆ์Šค ๊ฐœ๋…๋งŒ์œผ๋กœ ๋ชจ๋ธ๋ง์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐ๋ฒ•์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ### Deeper Research Questions * Clean Architecture์˜ 4๊ณ„์ธต ๊ตฌ์กฐ์—์„œ ์˜์กด์„ฑ์ด ๋ฌด์กฐ๊ฑด ์™ธ๋ถ€์—์„œ ๋‚ด๋ถ€๋กœ๋งŒ ํ๋ฅด๋Š”๋ฐ, ๋‚ด๋ถ€ ๊ณ„์ธต(์œ ์Šค์ผ€์ด์Šค)์ด ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•  ๋•Œ ์˜์กด์„ฑ ์—ญ์ „์€ ๊ตฌ์ฒด์ ์œผ๋กœ ์–ด๋–ค ์ธํ„ฐํŽ˜์ด์Šค์™€ ์–ด๋Œ‘ํ„ฐ ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„๋˜๋Š”๊ฐ€? [7] * ๋น ๋ฅธ ์ถœ์‹œ๊ฐ€ ์ค‘์š”ํ•œ ์Šคํƒ€ํŠธ์—…์ด ์ดˆ๊ธฐ MVP ๋‹จ๊ณ„์—์„œ Layered Architecture๋กœ ์‹œ์ž‘ํ•œ ํ›„, ๋ณต์žก๋„๊ฐ€ ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ Clean Architecture๋กœ ์ ์ง„์ ์ธ ๋ฆฌํŒฉํ† ๋ง์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ์–ด๋–ค ์ดํ–‰ ์ „๋žต์ด ํšจ๊ณผ์ ์ธ๊ฐ€? [5, 21] * ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜์˜ ์˜์กด์„ฑ ๊ทœ์น™์„ ์ค€์ˆ˜ํ•˜๋Š” ๊ณผ์ •์—์„œ ํ•„์—ฐ์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์ฝ”๋“œ(๊ณ„์ธต ๊ฐ„ ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜ ๋ชจ๋ธ ์ค‘๋ณต ๋“ฑ)๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ฑฐ๋‚˜ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ ์ŠคํŠธ ํ”„๋ž™ํ‹ฐ์Šค๋Š” ๋ฌด์—‡์ธ๊ฐ€? [3, 10] * MSA(๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜) ๊ธฐ๋ฐ˜์˜ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ํ™˜๊ฒฝ์—์„œ ๊ฐœ๋ณ„ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋‚ด๋ถ€์˜ ๋งˆ์ดํฌ๋กœ ์•„ํ‚คํ…์ฒ˜๋กœ์„œ Clean Architecture๋ฅผ ๋„์ž…ํ•  ๋•Œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์žฅ๋‹จ์ ์€ ๋ฌด์—‡์ธ๊ฐ€? [21, 22] * Clean Architecture์˜ ์ธํ„ฐํŽ˜์ด์Šค ์–ด๋Œ‘ํ„ฐ ๊ณ„์ธต์„ ํ†ตํ•œ '๋ฐฉ์–ด์  ๊ณ ๋ฆฝ'์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ณด์•ˆ์  ์ทจ์•ฝ์ ์ด๋‚˜, ์ด๋ฅผ ์šฐํšŒํ•˜๊ฒŒ ๋˜๋Š” ์ž˜๋ชป๋œ ๊ตฌํ˜„ ์‚ฌ๋ก€(Anti-pattern)๋Š” ์–ด๋–ค ๊ฒƒ๋“ค์ด ์žˆ๋Š”๊ฐ€? [5, 9, 23] ### Practical Application Contexts * **Implementation:** ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง(Entities, Use Cases)์„ ์ž‘์„ฑํ•  ๋•Œ ์™ธ๋ถ€ ์›น ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ DB ORM ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์˜์กด์„ฑ์„ ๋ฐฐ์ œํ•œ ์ˆœ์ˆ˜ํ•œ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฏธ๋ž˜์— ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ต์ฒดํ•˜๋”๋ผ๋„ ๋„๋ฉ”์ธ ์ฝ”๋“œ๋Š” ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. [2, 6, 24] * **System Design:** ๊ธ€๋กœ๋ฒŒ ๋ฑ…ํ‚น ํ”Œ๋žซํผ ๋“ฑ ์ˆ˜๋ช…์ด ๊ธธ๊ณ , ๋Œ€๊ทœ๋ชจ ํŒ€์ด ํ˜‘์—…ํ•˜๋ฉฐ, ๋ณด์•ˆ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ์ตœ์šฐ์„ ์ธ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์‹œ์Šคํ…œ์„ ์„ค๊ณ„ํ•  ๋•Œ ๊ฐ€์žฅ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. [24, 25] * **Operation / Maintenance:** ๋ช…ํ™•ํ•œ ๊ฒฝ๊ณ„(์–ด๋Œ‘ํ„ฐ)์—์„œ ๋กœ๊น…๊ณผ ๊ฐ์‚ฌ(Auditing)๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ์‰ฝ๊ฒŒ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฒฐํ•จ ์ˆ˜์ •์ด๋‚˜ ์™ธ๋ถ€ ์„œ๋น„์Šค(๊ฒฐ์ œ PG ๋“ฑ) ๊ต์ฒด ์‹œ ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™์ด ์•ˆ์ „ํ•˜๊ฒŒ ๋ณดํ˜ธ๋˜์–ด ์šด์˜ ์‹œ ํšŒ๊ท€ ์˜ค๋ฅ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. [2, 9] * **Learning Path:** Layered Architecture๋กœ ์ธํ•œ ์ŠคํŒŒ๊ฒŒํ‹ฐ ์ฝ”๋“œ์˜ ๋ฌธ์ œ์ ์„ ๊ฒฝํ—˜ํ•œ ํ›„, ์˜์กด์„ฑ ์—ญ์ „(Dependency Inversion) ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๊ณ  Hexagonal -> Clean Architecture ์ˆœ์œผ๋กœ ํ•™์Šตํ•˜์—ฌ ์‹œ์Šคํ…œ์„ ์ถ”์ƒํ™”ํ•˜๋Š” ๊ธฐ๋ฒ•์„ ์ฒดํ™”ํ•ฉ๋‹ˆ๋‹ค. [11, 18, 26] * **My Project Relevance:** ๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ฐ€์ง€๋ฉฐ ์žฅ๊ธฐ์ ์ธ ํ™•์žฅ์ด ์˜ˆ์ƒ๋˜๋Š” ํ”„๋กœ์ ํŠธ์˜ ๊ธฐ๋ณธ ๋ผˆ๋Œ€๋กœ ์ฑ„ํƒ์„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ, ๋‹จ์ˆœ CRUD ์•ฑ์ด๋‚˜ ๋น ๋ฅธ ํ”„๋กœํ† ํƒ€์ดํ•‘์ด ํ•„์š”ํ•œ ์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๊ณผ๋„ํ•œ ๋ณต์žก๋„๋ฅผ ์ดˆ๋ž˜ํ•˜๋ฏ€๋กœ ์‹ ์ค‘ํžˆ ์ €์šธ์งˆํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. [11, 25, 27] ### Adjacent Topics * [[Onion Architecture]] * ํ™•์žฅ ๋ฐฉํ–ฅ: ๋„๋ฉ”์ธ์„ ์ค‘์‹ฌ์— ๋‘๊ณ  ์™ธ๋ถ€๋กœ ๊ฐˆ์ˆ˜๋ก ๊ธฐ์ˆ ์ ์ธ ์ข…์†์„ฑ์„ ํ—ˆ์šฉํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜๋กœ, Clean Architecture์™€ ๋™์ผํ•œ ์ฒ ํ•™(๋„๋ฉ”์ธ ์ค‘์‹ฌ ์„ค๊ณ„ ๋ฐ ์—„๊ฒฉํ•œ ์ข…์†์„ฑ ๊ทœ์น™)์„ ๊ณต์œ ํ•˜๋Š” ํŒจํ„ด๊ณผ ๊ทธ ์ฐจ์ด์ ์„ ์—ฐ๊ตฌํ•ฉ๋‹ˆ๋‹ค. [1, 28] * [[Microservices Architecture]] * ํ™•์žฅ ๋ฐฉํ–ฅ: Clean Architecture๊ฐ€ ๊ฐœ๋ณ„ ์„œ๋น„์Šค ๋‚ด๋ถ€์˜ ์ฝ”๋“œ ์ˆ˜์ค€(Micro) ์„ค๊ณ„์— ์ง‘์ค‘ํ•œ๋‹ค๋ฉด, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ์‹œ์Šคํ…œ ์ „์ฒด์˜ ์ธํ”„๋ผ์  ๋ถ„ํ• (Macro)์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์ด ๋‘ ๊ฐœ๋…์„ ๊ฒฐํ•ฉํ•˜์—ฌ ๊ฐ ์„œ๋น„์Šค๋ฅผ ์œ ์—ฐํ•˜๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ์•ˆ์„ ๋ชจ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. [21, 22] --- *Last updated: 2026-05-02*