# [[Clean Architecture]] ## ๐Ÿ“Œ Brief Summary Clean Architecture๋Š” ์‹œ์Šคํ…œ์˜ ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์ฒด์— ๊ฑธ์ณ ์žˆ๋Š” ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ(Cross-cutting concerns)๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ์‹œ์Šคํ…œ์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜ ์›์น™์ž…๋‹ˆ๋‹ค [1]. ์ด ์•„ํ‚คํ…์ฒ˜๋Š” ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ์™€ ๋ชจ๋“ˆํ™”๋ฅผ ๊ฐ•์กฐํ•˜๋ฉฐ, ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™์ด ๋‹ค๋ฅธ ์š”์†Œ๋“ค๋กœ ์ธํ•ด ์–ด์ง€๋Ÿฝํ˜€์ง€์ง€ ์•Š๊ณ  ๊น”๋”ํ•˜๋ฉฐ ์ ์‘ ๊ฐ€๋Šฅํ•˜๋„๋ก ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค [1, 2]. ํ•ต์‹ฌ ์•„์ด๋””์–ด๋Š” ๋กœ๊น…, ์บ์‹ฑ, ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋“ฑ์˜ ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ๋ถ„๋ฆฌํ•˜์—ฌ ์ธํ”„๋ผ์ŠคํŠธ๋Ÿญ์ฒ˜(Infrastructure) ๊ณ„์ธต์— ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค [3]. ## ๐Ÿ“– Core Content * **๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ์™€ ๋ชจ๋“ˆํ™”์˜ ์ค‘์‹ฌ ์—ญํ• ** Clean Architecture์—์„œ ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ(๋กœ๊น…, ์ธ์ฆ, ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ, ์บ์‹ฑ ๋“ฑ)๋Š” ์‹œ์Šคํ…œ์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ๋ณ„๊ฐœ๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [1, 4]. ์ด๋Ÿฌํ•œ ๋ถ„๋ฆฌ๋Š” ์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ๊ฐ•ํ•œ ๊ฒฐํ•ฉ(tight coupling)์„ ๋ฐฉ์ง€ํ•˜๊ณ  ์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ๋ง‰์•„์ค๋‹ˆ๋‹ค [4]. Clean Architecture์˜ ์›์น™์— ๋”ฐ๋ผ ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™์„ ๊น”๋”ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋ฉด, ์•„ํ‚คํ…์ฒ˜ ์ž์ฒด๋ฅผ ๋ณ€๊ฒฝ์— ์œ ์—ฐํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [1]. * **์ธํ”„๋ผ์ŠคํŠธ๋Ÿญ์ฒ˜ ๊ณ„์ธต(Infrastructure Layer)์—์„œ์˜ ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ ๊ตฌํ˜„** ์ด์ƒ์ ์œผ๋กœ ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ๋Š” ์ธํ”„๋ผ์ŠคํŠธ๋Ÿญ์ฒ˜ ๊ณ„์ธต์— ๊ตฌํ˜„๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [3]. ํ”„๋ ˆ์ž„์›Œํฌ์— ๋”ฐ๋ผ ASP.NET Core ๋ฏธ๋“ค์›จ์–ด๋‚˜ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ, MediatR ํŒŒ์ดํ”„๋ผ์ธ ๋™์ž‘(Pipeline behaviors) ๋“ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ช…ํ™•ํžˆ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [3, 5]. * **์ฃผ์š” ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ์˜ ์‹ค์ „ ๋ถ„๋ฆฌ ์ „๋žต** * **๋กœ๊น…(Logging):** ํŒŒ์ดํ”„๋ผ์ธ ๋™์ž‘ ๋‚ด์— ๋กœ๊น… ๋กœ์ง์„ ์บก์Аํ™”ํ•˜์—ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ๋ถ„๋ฆฌ๋œ ๊ณ ์œ ํ•œ ๊ด€์‹ฌ์‚ฌ๋กœ ์ทจ๊ธ‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [5]. ๊ตฌ์กฐํ™”๋œ ๋กœ๊น…(Structured logging)์„ ์‚ฌ์šฉํ•˜๋ฉด ์ •๋ณด๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ˆ˜์ง‘ํ•˜๋ฉด์„œ๋„ ํ•ต์‹ฌ ๋กœ์ง์„ ์–ด์ง€๋Ÿฝํžˆ์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [5, 6]. * **์œ ํšจ์„ฑ ๊ฒ€์‚ฌ(Validation):** ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋Š” ์‹œ์Šคํ…œ์— ์ž˜๋ชป๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์˜ค๋Š” ๊ฒƒ์„ ๋ง‰๋Š” ์ฒซ ๋ฒˆ์งธ ๋ฐฉ์–ด์„ ์œผ๋กœ, ํ•ต์‹ฌ ์ฒ˜๋ฆฌ ๋กœ์ง์— ๋„๋‹ฌํ•˜๊ธฐ ์ „์— ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์š”์ฒญ์„ ๊ฒ€์ฆํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [6, 7]. ๋ฐ์ดํ„ฐ ํ˜•์‹ ๋“ฑ์„ ํ™•์ธํ•˜๋Š” '์ž…๋ ฅ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ'์™€ ๋„๋ฉ”์ธ ํŠน์ • ๊ทœ์น™์„ ์ค€์ˆ˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” '๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ'๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ตฌ๋ณ„ํ•˜์—ฌ ์„ค๊ณ„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [7, 8]. * **์บ์‹ฑ(Caching):** ์„ฑ๋Šฅ๊ณผ ํ™•์žฅ์„ฑ ํ–ฅ์ƒ์„ ์œ„ํ•ด ์ž์ฃผ ์“ฐ์ด๋ฉฐ, ํŒŒ์ดํ”„๋ผ์ธ ๋‚ด์—์„œ Cache Aside ํŒจํ„ด ๋“ฑ์„ ๊ตฌํ˜„ํ•ด ์š”์ฒญ ์ฒ˜๋ฆฌ ์ „ ์บ์‹œ๋ฅผ ํ™•์ธํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค [8, 9]. ## โš–๏ธ Trade-offs & Caveats Clean Architecture ์„ค๊ณ„ ์ž์ฒด์˜ ๊ทผ๋ณธ์ ์ธ ๋‹จ์ ์ด๋‚˜ ์•„ํ‚คํ…์ฒ˜์  ๋ฐ˜๋Œ€ ๊ธ‰๋ถ€(Trade-off)์— ๋Œ€ํ•ด์„œ๋Š” **์†Œ์Šค์— ๊ด€๋ จ ์ •๋ณด๊ฐ€ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค.** ๋‹ค๋งŒ, Clean Architecture ์›์น™์— ๋”ฐ๋ผ ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ๋ฅผ ์ธํ”„๋ผ์ŠคํŠธ๋Ÿญ์ฒ˜ ๊ณ„์ธต์œผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์ตœ์ ํ™”ํ•  ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ์ˆ ์  ์ œ์•ฝ๊ณผ ๊ณ ๋ ค ์‚ฌํ•ญ์ด ๋”ฐ๋ฆ…๋‹ˆ๋‹ค: * **๋กœ๊น…์˜ ์ ์ •์„ฑ ๋ฌธ์ œ:** ํšจ๊ณผ์ ์ธ ๋กœ๊น…์„ ์œ„ํ•ด ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์บก์Аํ™”ํ•˜๋”๋ผ๋„, ์„ธ๋ถ„ํ™”(granularity)์™€ ๋ช…ํ™•์„ฑ ์‚ฌ์ด์˜ ๊ท ํ˜•์„ ๋งž์ถ”์ง€ ๋ชปํ•˜๋ฉด ๋กœ๊ทธ๊ฐ€ ์œ ์šฉํ•œ ๋„๊ตฌ๊ฐ€ ์•„๋‹Œ ๋‹จ์ˆœํ•œ ์†Œ์Œ(noise)์œผ๋กœ ์ „๋ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [6]. * **์บ์‹ฑ ์„ค๊ณ„์˜ ๋ณต์žก์„ฑ ์ฆ๊ฐ€:** ์บ์‹ฑ์„ ๊ตฌํ˜„ํ•  ๋•Œ๋Š” ์—ฐ์‚ฐ ๋น„์šฉ์ด ๋†’์œผ๋ฉด์„œ๋„ ์ถฉ๋ถ„ํžˆ ์•ˆ์ •์ ์ธ(stable) ๋ฐ์ดํ„ฐ๋งŒ์„ ์‹ ์ค‘ํžˆ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [9]. ๋˜ํ•œ, ์ ์ ˆํ•œ ์บ์‹œ ๋ฌดํšจํ™”(Invalidation) ์‹œ์  ๊ฒฐ์ •๊ณผ ๋งŒ๋ฃŒ ์‹œ๊ฐ„ ๋ฐ ํฌ๊ธฐ ๋“ฑ์˜ ์บ์‹œ ์„ค์ •(Configuration)์„ ์™„๋ฒฝํžˆ ํ†ต์ œํ•ด์•ผ ํ•˜๋Š” ๊ธฐ์ˆ ์  ๋ถ€๋‹ด์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค [9]. ## ๐Ÿ”— Knowledge Connections ### Related Concepts #### [์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด / ์„ค๊ณ„ ์‚ฌ์ƒ] - [[Hexagonal Architecture]] - ์—ฐ๊ฒฐ ์ด์œ : Clean Architecture์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์™ธ๋ถ€ ์ข…์†์„ฑ(DB, UI ๋“ฑ)์œผ๋กœ๋ถ€ํ„ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์„ ๊ฐ•ํ•˜๊ฒŒ ๊ฒฐํ•ฉํ•˜์ง€ ์•Š๊ณ  ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ถ„๋ฆฌ ๋ฐ ๋ชจ๋“ˆํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ๋œ ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์ž…๋‹ˆ๋‹ค [2]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์–ด๋–ป๊ฒŒ ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ค‘์‹ฌ์— ๋‘๊ณ  ์™ธ๋ถ€์™€์˜ ์ธํ„ฐํŽ˜์ด์Šค(ํฌํŠธ์™€ ์–ด๋Œ‘ํ„ฐ)๋ฅผ ํ†ตํ•ด ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ์™€ ์™ธ๋ถ€ ๊ธฐ์ˆ ์„ ๊ฒฉ๋ฆฌํ•˜๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [2, 10]. - [[Cross-Cutting Concerns]] - ์—ฐ๊ฒฐ ์ด์œ : ๋กœ๊น…, ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ, ์บ์‹ฑ, ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋“ฑ ์—ฌ๋Ÿฌ ๊ณ„์ธต์— ๊ฑธ์ณ ๋‚˜ํƒ€๋‚˜๋Š” ๊ณตํ†ต ๊ธฐ๋Šฅ๋“ค๋กœ, Clean Architecture๊ฐ€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์—์„œ ๋–ผ์–ด๋‚ด์–ด ์ธํ”„๋ผ์ŠคํŠธ๋Ÿญ์ฒ˜ ๊ณ„์ธต์œผ๋กœ ๊ฒฉ๋ฆฌํ•˜๊ณ ์ž ํ•˜๋Š” ์ฃผ ๋Œ€์ƒ์ž…๋‹ˆ๋‹ค [1, 3, 4]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์™œ ์ด ๊ด€์‹ฌ์‚ฌ๋“ค์ด ์ค‘์•™์ง‘์ค‘ํ™”๋˜์–ด์•ผ ํ•˜๋ฉฐ, ์ด๋ฅผ ๋ฐฉ์น˜ํ•  ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ์ฝ”๋“œ ์ค‘๋ณต๊ณผ ๊ฐ•ํ•œ ๊ฒฐํ•ฉ์ด ๋ฐœ์ƒํ•˜๋Š”์ง€ ํ†ต์ฐฐ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [4]. #### [๊ตฌํ˜„ ๋ฐ ํ™œ์šฉ ๋„๊ตฌ] - [[Modular Monolith]] - ์—ฐ๊ฒฐ ์ด์œ : Clean Architecture ์›์น™๊ณผ ๊ฒฐํ•ฉํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•  ๋•Œ ์ž์ฃผ ์–ธ๊ธ‰๋˜๋Š” ์‹ค์ „ ์‹œ์Šคํ…œ ๊ตฌํ˜„ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค [11, 12]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋ฌผ๋ฆฌ์ ์ธ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๋ถ„๋ฆฌํ•˜๊ธฐ ์ „, ๋‹จ์ผ ์ฝ”๋“œ๋ฒ ์ด์Šค ๋‚ด์—์„œ Clean Architecture์˜ ๋ชจ๋“ˆํ™”์™€ ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ ์›์น™์„ ์–ด๋–ป๊ฒŒ ์‹ค์ œ ํ”„๋กœ๋•์…˜ ์ˆ˜์ค€์œผ๋กœ ๊ตฌํ˜„ํ•˜๋Š”์ง€ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [12]. ### Deeper Research Questions - Clean Architecture ๋‚ด์—์„œ ๋„๋ฉ”์ธ ๊ทœ์น™์„ ๊ฒ€์ฆํ•˜๋Š” '๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ'์™€ ๋‹จ์ˆœํ•œ '์ž…๋ ฅ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ'๋ฅผ ์ฝ”๋“œ ๋ ˆ๋ฒจ์—์„œ ์™„๋ฒฝํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฐ€์žฅ ์ด์ƒ์ ์ธ ํŒจํ„ด์€ ๋ฌด์—‡์ธ๊ฐ€? - ์ธํ”„๋ผ์ŠคํŠธ๋Ÿญ์ฒ˜ ๊ณ„์ธต์˜ ํŒŒ์ดํ”„๋ผ์ธ (์˜ˆ: MediatR ํŒŒ์ดํ”„๋ผ์ธ)์„ ํ†ตํ•ด ์บ์‹ฑ๊ณผ ๋กœ๊น…์„ ์ค‘์•™ ์ง‘์ค‘ํ™”ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋Ÿฐํƒ€์ž„ ์˜ค๋ฒ„ํ—ค๋“œ๋Š” ์–ด๋–ป๊ฒŒ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€? - Clean Architecture, Hexagonal Architecture(Ports and Adapters), Onion Architecture ๋“ฑ ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ๋ฅผ ๊ฐ•์กฐํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜๋“ค ๊ฐ„์˜ ๋ฏธ์„ธํ•œ ๊ตฌ์กฐ์  ์ฐจ์ด์ ๊ณผ ํ”„๋ ˆ์ž„์›Œํฌ(Spring Boot, NestJS ๋“ฑ)๋ณ„ ์ตœ์ ํ•ฉ์„ฑ์€ ๋ฌด์—‡์ธ๊ฐ€? - ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์˜ ์ˆœ์ˆ˜์„ฑ์„ ์ง€ํ‚ค๋ฉด์„œ ์บ์‹œ ๋ฌดํšจํ™”(Cache Invalidation)์™€ ๊ฐ™์€ ์ธํ”„๋ผ์  ์ œ์–ด ๋กœ์ง์„ ๋„๋ฉ”์ธ๊ณผ ๋ถ„๋ฆฌํ•ด ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ธ๊ฐ€? - ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜์˜ ์˜์กด์„ฑ ์ฃผ์ž…(DI) ์›์น™์ด ๋ชจ๋†€๋ฆฌ์‹ ๊ตฌ์กฐ์—์„œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๋กœ ์ „ํ™˜ํ•  ๋•Œ ์–ด๋–ค ์ด์ ๊ณผ ํ•œ๊ณ„๋ฅผ ๊ฐ€์ง€๋Š”๊ฐ€? ### Practical Application Contexts - **Implementation:** .NET ์—์ฝ”์‹œ์Šคํ…œ์˜ MediatR `IPipelineBehavior` ๋‚˜ ASP.NET Core ๋ฏธ๋“ค์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊น…, ์บ์‹œ(Cache Aside), ์ž…๋ ฅ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ๊ตฌํ˜„ํ•จ์œผ๋กœ์จ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ์ธํ”„๋ผ๋ฅผ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [3, 5, 9]. - **System Design:** ์•„ํ‚คํ…์ฒ˜ ์ดˆ๊ธฐ ์„ค๊ณ„ ๋‹จ๊ณ„๋ถ€ํ„ฐ ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ๋ฅผ ํ•œ ๊ณณ์— ์ง‘์ค‘์‹œํ‚ค๋„๋ก ์„ค๊ณ„ํ•จ์œผ๋กœ์จ, ๊ฐ ๊ธฐ๋Šฅ(Feature) ๋ชจ๋“ˆ์˜ ํ•ต์‹ฌ ๋„๋ฉ”์ธ ๊ทœ์น™์ด ์˜ค์—ผ๋˜์ง€ ์•Š๋Š” ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋ฐฑ์—”๋“œ ์‹œ์Šคํ…œ์„ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [1, 4]. - **Operation / Maintenance:** ๊ตฌ์กฐํ™”๋œ ๋กœ๊น…๊ณผ ์ฒด๊ณ„์ ์ธ ์˜ˆ์™ธ ํŒŒ์ดํ”„๋ผ์ธ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ ์šด์˜ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ์ƒํƒœ ์ด์ƒ์„ ๋น ๋ฅด๊ฒŒ ์ถ”์ ํ•˜๊ณ , ์ž˜๋ชป๋œ ๋ฐ์ดํ„ฐ ์œ ์ž…์„ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ง„์ž… ์ „์— ์ฐจ๋‹จํ•˜์—ฌ ์šด์˜ ๋ณต์›๋ ฅ์„ ๋†’์ž…๋‹ˆ๋‹ค [6, 8]. - **Learning Path:** ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ ์ดํ•ด -> ์˜์กด์„ฑ ์ฃผ์ž…๊ณผ ํŒŒ์ดํ”„๋ผ์ธ ํŒจํ„ด ํ•™์Šต -> Clean Architecture์™€ Hexagonal Architecture ์ฒ ํ•™ ์ดํ•ด -> Modular Monolith ๋ฐ Domain-Driven Design ์„ค๊ณ„ ๋ฐฉ์‹ ์ˆ˜๋ฆฝ ์ˆœ์œผ๋กœ ํ•™์Šต์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค [2, 3, 11, 12]. - **My Project Relevance:** ํ˜„์žฌ ์ ์šฉ ์ค‘์ธ ์›น ํ”„๋ ˆ์ž„์›Œํฌ(์˜ˆ: NestJS์˜ ํŒŒ์ดํ”„/๊ฐ€๋“œ, Spring Boot์˜ AOP/์ธํ„ฐ์…‰ํ„ฐ)์—์„œ ํ•ต์‹ฌ ๋กœ์ง ์™ธ์˜ ๊ธฐ๋Šฅ๋“ค์ด ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š”์ง€ ์ ๊ฒ€ํ•˜๊ณ , ์ด๋ฅผ Clean Architecture์˜ ๊ด€์ ์—์„œ ์ธํ”„๋ผ์ŠคํŠธ๋Ÿญ์ฒ˜ ๊ณ„์ธต์œผ๋กœ ์žฌ๋ฐฐ์น˜ํ•˜๋Š” ๋ฆฌํŒฉํ† ๋ง์— ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [3, 13]. ### Adjacent Topics - [[Domain-Driven Design]] - ํ™•์žฅ ๋ฐฉํ–ฅ: Clean Architecture๊ฐ€ ๊ตฌ์กฐ์  ๋ถ„๋ฆฌ๋ฅผ ํ†ตํ•ด ๋ผˆ๋Œ€๋ฅผ ์žก๋Š”๋‹ค๋ฉด, DDD๋Š” ๊ทธ ๋‚ด๋ถ€์˜ 'ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง'์„ ์–ด๋–ป๊ฒŒ ๋ชจ๋ธ๋งํ•˜๊ณ  ๊ตฌ์ฒดํ™”ํ• ์ง€์— ๋Œ€ํ•œ ๋ฐฉ๋ฒ•๋ก ์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ ์ด ๋‘˜์˜ ๊ฒฐํ•ฉ ์‹œ๋„ˆ์ง€๋ฅผ ํƒ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [8, 11]. --- *Last updated: 2026-05-03*