--- id: P-REINFORCE-WIKI-16013C99 category: "10_Wiki/๐Ÿ’ก Topics/02_Architecture_Principles" confidence_score: 0.95 tags: ['layered-architecture', 'monolithic-architecture', 'hexagonal-architecture', 'clean-architecture', 'separation-of-concerns', 'architecture-principles'] last_reinforced: 2026-05-02 --- # [[Layered Architecture]] ## ๐Ÿ“Œ Brief ์‹œ Summary Layered Architecture(๊ณ„์ธตํ˜• ์•„ํ‚คํ…์ฒ˜)๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์„ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์ฑ…์ž„์„ ๊ฐ€์ง„ ์ˆ˜ํ‰์ ์ธ ์—ฌ๋Ÿฌ ๊ณ„์ธต(Layer)์œผ๋กœ ๋‚˜๋ˆ„์–ด ๊ตฌ์„ฑํ•˜๋Š” ํŒจํ„ด์œผ๋กœ, N-ํ‹ฐ์–ด(N-tier) ์•„ํ‚คํ…์ฒ˜๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค [1-3]. ์ผ๋ฐ˜์ ์œผ๋กœ ํ”„๋ฆฌ์  ํ…Œ์ด์…˜, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง, ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ณ„์ธต ๋“ฑ์œผ๋กœ ๋‚˜๋‰˜๋ฉฐ, ๊ฐ ๊ณ„์ธต์€ ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ๋ฅผ ํ†ตํ•ด ์„œ๋กœ ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค [3-5]. ๊ตฌ์กฐ๊ฐ€ ์ง๊ด€์ ์ด๊ณ  ๊ตฌํ˜„์ด ์‰ฌ์›Œ ๋‹จ์ˆœํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‚˜ ์Šคํƒ€ํŠธ์—…์˜ MVP(Minimum Viable Product) ๊ฐœ๋ฐœ์— ๋„๋ฆฌ ์ฑ„ํƒ๋˜์ง€๋งŒ, ๊ณ ๋„์˜ ํ™•์žฅ์„ฑ์ด๋‚˜ ๋ณต์žก์„ฑ์„ ๊ฐ๋‹นํ•˜๊ธฐ์—๋Š” ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค [3, 6, 7]. ## ๐Ÿ“– Core Content * **๊ธฐ๋ณธ ๊ตฌ์กฐ ๋ฐ ๊ณ„์ธต์˜ ๋ถ„๋ฆฌ:** ์ด ํŒจํ„ด์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์—ฌ๋Ÿฌ ๊ณ„์ธต์œผ๋กœ ์Œ“์•„ ์˜ฌ๋ฆฐ ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑํ•˜๋ฉฐ, ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‹ด๋‹นํ•˜๋Š” **ํ”„๋ฆฌ์  ํ…Œ์ด์…˜ ๊ณ„์ธต(Presentation Layer)**, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์กฐ์ •ํ•˜๋Š” **์• ํ”Œ๋ฆฌ์ผ€์ด์…˜/์„œ๋น„์Šค ๊ณ„์ธต(Application/Service Layer)**, ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™์ด ์œ„์น˜ํ•˜๋Š” **๋น„์ฆˆ๋‹ˆ์Šค/๋„๋ฉ”์ธ ๊ณ„์ธต(Business/Domain Layer)**, ๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐ ์กฐํšŒ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” **ํผ์‹œ์Šคํ„ด์Šค/๋ฐ์ดํ„ฐ ๊ณ„์ธต(Persistence/Data Layer)**์œผ๋กœ ๋‚˜๋‰œ๋‹ค [3-5]. * **๊ณ„์ธต์˜ ๊ฒฉ๋ฆฌ (Layers of Isolation):** ๊ณ„์ธตํ˜• ์•„ํ‚คํ…์ฒ˜์˜ ํ•ต์‹ฌ ์›์น™ ์ค‘ ํ•˜๋‚˜๋Š” ๊ฐ ๊ณ„์ธต์ด ๊ณ ์œ ํ•œ ์ฑ…์ž„๋งŒ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ์›์น™์ ์œผ๋กœ ๋ฐ”๋กœ ์ธ์ ‘ํ•œ ๊ณ„์ธต(์ฃผ๋กœ ํ•˜์œ„ ๊ณ„์ธต)๊ณผ๋งŒ ํ†ต์‹ ํ•œ๋‹ค๋Š” ์ ์ด๋‹ค [3, 4, 8]. ํ•œ ๊ณ„์ธต์˜ ๋‚ด๋ถ€ ๊ตฌํ˜„์ด ๋ณ€๊ฒฝ๋˜๋”๋ผ๋„, ์ž˜ ์ •์˜๋œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•œ๋‹ค๋ฉด ๋‹ค๋ฅธ ๊ณ„์ธต์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ชจ๋“ˆ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ํ–ฅ์ƒ๋œ๋‹ค [3, 4, 8]. * **์ฝ˜์›จ์ด์˜ ๋ฒ•์น™(Conway's Law)๊ณผ ๊ฑฐ์‹œ์  ๊ตฌ์กฐ:** ๊ณ„์ธตํ˜• ์•„ํ‚คํ…์ฒ˜์˜ ์ˆ˜ํ‰์  ๊ตฌ์กฐ๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋„˜์–ด ๊ฐœ๋ฐœ ์กฐ์ง์˜ ๊ตฌ์กฐ์™€ ์ง์ ‘์ ์œผ๋กœ ๋งคํ•‘๋˜๋Š” ๊ฑฐ์‹œ์ (Macro) ์•„ํ‚คํ…์ฒ˜์˜ ํŠน์„ฑ์„ ๋ค๋‹ค [9]. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ”„๋ก ํŠธ์—”๋“œ ํŒ€(UI/UX ๊ฐœ๋ฐœ)์€ ํ”„๋ฆฌ์  ํ…Œ์ด์…˜ ๊ณ„์ธต์„, ๋ฐฑ์—”๋“œ ํŒ€(Java ๋“ฑ์˜ ๊ฐœ๋ฐœ์ž)์€ ๋น„์ฆˆ๋‹ˆ์Šค ๊ณ„์ธต์„, DBA๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ณ„์ธต์„ ๊ฐ๊ฐ ์ „๋‹ดํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์กฐ์ง ๊ตฌ์กฐ์™€ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์ผ์น˜ํ•˜๋Š” ๊ฒฝํ–ฅ์„ ๋ณด์ธ๋‹ค [9]. * **์ ์šฉ ๋ฐ ํ™œ์šฉ ํ™˜๊ฒฝ:** ์ด ํŒจํ„ด์€ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๊ณ  ๊ตฌํ˜„ํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์‰ฌ์›Œ ์ดˆ๋ณด์ž ๋ฐ ๊ต์œก ๋ชฉ์ , ํ˜น์€ ์—ญํ•  ๋ถ„๋‹ด์ด ๋ช…ํ™•ํ•œ ์ค‘์†Œ๊ทœ๋ชจ ํŒ€์— ์ ํ•ฉํ•˜๋‹ค [6, 7, 10]. ์ดˆ๊ธฐ ์ธํ”„๋ผ ์„ค์ • ๋น„์šฉ์ด ์ ๊ฒŒ ๋“ค๊ณ  ๋ฐฐํฌ๊ฐ€ ๊ฐ„๋‹จํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋Šฅ์ด ๋ณต์žกํ•˜์ง€ ์•Š์€ CRUD ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์ด๋‚˜ ๋น ๋ฅธ ์‹œ์žฅ ์ถœ์‹œ๊ฐ€ ํ•„์š”ํ•œ ์Šคํƒ€ํŠธ์—…์—์„œ ์œ ์šฉํ•˜๊ฒŒ ์“ฐ์ธ๋‹ค [1, 6, 7]. ## โš–๏ธ Trade-offs & Caveats * **์„ฑ๋Šฅ ๋ณ‘๋ชฉ ํ˜„์ƒ ๋ฐ ์ง€์—ฐ ์‹œ๊ฐ„(Latency):** ๋‹จ์ˆœํ•œ ์š”์ฒญ์ด๋ผ ํ•˜๋”๋ผ๋„ ํ”„๋ฆฌ์  ํ…Œ์ด์…˜ ๊ณ„์ธต์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ณ„์ธต์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ๋ชจ๋“  ๊ณ„์ธต์„ ์ˆœ์ฐจ์ ์œผ๋กœ ํ†ต๊ณผํ•ด์•ผ๋งŒ ํ•˜๋ฏ€๋กœ, ์ด๋Ÿฌํ•œ ํ”„๋กœ์„ธ์Šค๋Š” ์„ฑ๋Šฅ ๋ณ‘๋ชฉ๊ณผ ํ†ต์‹  ์ง€์—ฐ(Latency)์„ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค [10, 11]. * **ํ™•์žฅ์„ฑ์˜ ๊ตฌ์กฐ์  ํ•œ๊ณ„:** ์ผ๋ถ€ ์ปดํฌ๋„ŒํŠธ๋‚˜ ํŠน์ • ๊ณ„์ธต์—๋งŒ ๋ถ€ํ•˜๊ฐ€ ์ง‘์ค‘๋˜๋”๋ผ๋„ ํ•ด๋‹น ๋ถ€๋ถ„๋งŒ ๋…๋ฆฝ์ ์œผ๋กœ ํ™•์žฅํ•˜๊ธฐ ์–ด๋ ค์šฐ๋ฉฐ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์ฒด๋ฅผ ํ•˜๋‚˜์˜ ๋‹จ์œ„๋กœ ํ™•์žฅํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๊ณ ๋ถ€ํ•˜ ๋ฐ ์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ์—๋Š” ๋ถ€์ ํ•ฉํ•˜๋‹ค [6, 10, 11]. * **๊ฐ•ํ•œ ๊ฒฐํ•ฉ(Tight Coupling)๊ณผ ๊ตฌ์กฐ์  ๋ถ•๊ดด:** ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์—„๊ฒฉํ•œ ๊ณ„์ธต ๋ถ„๋ฆฌ๊ฐ€ ๋А์Šจํ•ด์ง€๋ฉด, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ํ”„๋ฆฌ์  ํ…Œ์ด์…˜์ด๋‚˜ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ณ„์ธต์œผ๋กœ ์œ ์ถœ๋˜๋Š” ๋ˆ„์ˆ˜ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค [8, 10]. ์ด๋Ÿฌํ•œ ๊ณ„์ธต ๊ฑด๋„ˆ๋›ฐ๊ธฐ์™€ ๊ฐ•ํ•œ ๊ฒฐํ•ฉ์€ ์ฝ”๋“œ ์ˆ˜์ •์„ ์–ด๋ ต๊ฒŒ ํ•˜๊ณ  ์œ ์—ฐ์„ฑ์„ ํฌ๊ฒŒ ๋–จ์–ด๋œจ๋ฆฐ๋‹ค [8, 10, 11]. * **๋ณด์•ˆ ๋ฐ ๊ฐ์‚ฌ(Auditing)์˜ ์ทจ์•ฝ์ :** ๋ช…ํ™•ํ•œ ๊ฒฝ๊ณ„๊ฐ€ ๋ฌด๋„ˆ์ง€๋ฉด, ์ž…๋ ฅ ๊ฒ€์ฆ์ด๋‚˜ ๋ฐ์ดํ„ฐ ์ •์ œ ๊ฐ™์€ ๋ณด์•ˆ ๋กœ์ง์ด ์—ฌ๋Ÿฌ ๊ณ„์ธต์— ์ค‘๋ณต๋˜๊ฑฐ๋‚˜ ๋ˆ„๋ฝ๋  ์œ„ํ—˜์ด ์ปค์ง„๋‹ค [12, 13]. ์˜ˆ๋ฅผ ๋“ค์–ด UI ๊ณ„์ธต์—์„œ ์ž…๋ ฅ์„ ๊ฒ€์ฆํ•˜๊ณ  ์„œ๋น„์Šค ๊ณ„์ธต์—์„œ ์ด๋ฅผ ์žฌ๊ฒ€์ฆํ•˜์ง€ ์•Š์œผ๋ฉด SQL ์ธ์ ์…˜ ๋“ฑ์˜ ์œ„ํ—˜์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์–ด, ์ผ๊ด€๋œ ๋ณด์•ˆ ์ •์ฑ… ์ ์šฉ์ด๋‚˜ ๊ฐ์‚ฌ ์ถ”์ ์ด ์–ด๋ ค์›Œ์ง„๋‹ค [12, 13]. * **ํ…Œ์ŠคํŠธ ๋ณต์žก๋„ ์ฆ๊ฐ€:** ์‹œ์Šคํ…œ์ด ์ปค์ง€๊ณ  ๊ณ„์ธต ๊ฐ„ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋†’์•„์ง€๋ฉด, ํŠน์ • ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๋งŒ์„ ๊ฒฉ๋ฆฌํ•˜์—ฌ ๋‹จ์œ„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ๊ฐ€ ํž˜๋“ค์–ด์ง€๋ฉฐ, ๋ณต์žกํ•œ ๋ชจํ‚น(Mocking)์ด ํ•„์š”ํ•œ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ์— ์˜์กดํ•˜๊ฒŒ ๋˜์–ด ํ…Œ์ŠคํŠธ์˜ ํšจ์œจ์„ฑ์ด ์ €ํ•˜๋œ๋‹ค [14]. ## ๐Ÿ”— Knowledge Connections ### Related Concepts #### [์•„ํ‚คํ…์ฒ˜ ๋ฐ ๊ธฐ๋ฐ˜ ์„ค๊ณ„ ๊ธฐ์ˆ ] - [[Monolithic Architecture]] - ์—ฐ๊ฒฐ ์ด์œ : Layered Architecture๋Š” ์ฃผ๋กœ ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ•˜๋‚˜์˜ ํ†ตํ•ฉ๋œ ์ฝ”๋“œ๋ฒ ์ด์Šค๋กœ ๋ฐฐํฌ๋˜๋Š” ๋ชจ๋†€๋ฆฌ์‹ ์•„ํ‚คํ…์ฒ˜์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ ํŒจํ„ด์œผ๋กœ ํ”ํžˆ ์‚ฌ์šฉ๋œ๋‹ค [15, 16]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์™€ ๋Œ€๋น„๋˜๋Š” ๋‹จ์ผ ๋ฐฐํฌ ์‹œ์Šคํ…œ์˜ ํŠน์ง•, ๊ทธ๋ฆฌ๊ณ  ๋‹จ์ผ ์‹œ์Šคํ…œ ๋‚ด์—์„œ์˜ ๋‚ด๋ถ€ ๋ชจ๋“ˆํ™” ํ•œ๊ณ„๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. - [[Hexagonal Architecture]] / [[Clean Architecture]] - ์—ฐ๊ฒฐ ์ด์œ : Layered Architecture์˜ ๋‹จ์ (๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ค‘์‹ฌ์˜ ๊ฐ•ํ•œ ๊ฒฐํ•ฉ ๋“ฑ)์„ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด, ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ์„ ์ค‘์‹ฌ์— ๋‘๊ณ  ์˜์กด์„ฑ์„ ์—ญ์ „์‹œํ‚จ ๋ฐœ์ „๋œ ์„ค๊ณ„ ํŒจํ„ด๋“ค์ด๋‹ค [17-19]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์•„ํ‚คํ…์ฒ˜์—์„œ ๊ธฐ์ˆ ์  ์š”์†Œ(UI, DB)์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์™„๋ฒฝํžˆ ๋ถ„๋ฆฌํ•˜๊ณ , ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋น„๊ต ํ•™์Šตํ•  ์ˆ˜ ์žˆ๋‹ค. #### [์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™ ๋ฐ ์„ค๊ณ„ ์›๋ฆฌ] - [[Separation of Concerns]] - ์—ฐ๊ฒฐ ์ด์œ : Layered Architecture๊ฐ€ UI, ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™, ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋“ฑ์„ ๊ฐ๊ฐ์˜ ๊ณ„์ธต์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ทผ๊ฐ„์ด ๋˜๋Š” ํ•ต์‹ฌ ๊ณตํ•™ ์›๋ฆฌ์ด๋‹ค [4]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์‹œ์Šคํ…œ์˜ ๋ณต์žก์„ฑ์„ ๋‚ฎ์ถ”๊ณ  ํŠน์ • ์ฑ…์ž„์„ ๊ฐ€์ง„ ์ฝ”๋“œ๋งŒ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“œ๋Š” ๋ชจ๋“ˆํ™”์˜ ์ค‘์š”์„ฑ์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋‹ค. ### Deeper Research Questions - ์„ฑ๋Šฅ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด Layered Architecture์—์„œ ์ผ๋ถ€ ๊ณ„์ธต์„ ์šฐํšŒํ•˜๋Š” '๊ณ„์ธต ๊ฑด๋„ˆ๋›ฐ๊ธฐ'๋ฅผ ํ—ˆ์šฉํ•  ๋•Œ, ์‹œ์Šคํ…œ์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ์— ๋ฏธ์น˜๋Š” ์น˜๋ช…์ ์ธ ์˜ํ–ฅ์€ ๋ฌด์—‡์ธ๊ฐ€? - ์ดˆ๊ธฐ MVP๋ฅผ Layered Architecture๋กœ ๊ตฌ์ถ•ํ•œ ์Šคํƒ€ํŠธ์—…์ด ํ–ฅํ›„ ์‹œ์Šคํ…œ ๋ณต์žก๋„๊ฐ€ ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ Clean Architecture๋‚˜ Microservices๋กœ ์ „ํ™˜(Refactoring)ํ•  ๋•Œ ๊ณ ๋ คํ•ด์•ผ ํ•  ๋‹จ๊ณ„๋ณ„ ์ „๋žต์€ ๋ฌด์—‡์ธ๊ฐ€? - ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ๋ฐ์ดํ„ฐ ๊ณ„์ธต์ด๋‚˜ ํ”„๋ฆฌ์  ํ…Œ์ด์…˜ ๊ณ„์ธต์œผ๋กœ ๋ˆ„์ˆ˜(Leak)๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด, ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋ฐ ์ •์  ๋ถ„์„ ๋„๊ตฌ๋ฅผ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€? - Layered Architecture์—์„œ ๊ณ„์ธต๋ณ„๋กœ ๋…๋ฆฝ์ ์ธ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ, Mocking์˜ ๊ณผ๋„ํ•œ ์‚ฌ์šฉ์ด ํ…Œ์ŠคํŠธ์˜ ์ทจ์•ฝ์„ฑ(Brittle Tests)์„ ๋†’์ด๋Š” ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€? - ์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection) ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ Layered Architecture์˜ ๊ฐ•ํ•œ ๊ฒฐํ•ฉ์„ ์™„ํ™”ํ•˜๋Š” ๋ฐ ์–ด๋–ค ๊ธฐ์—ฌ๋ฅผ ํ•˜๋Š”๊ฐ€? ### Practical Application Contexts - **Implementation:** ๋””๋ ‰ํ† ๋ฆฌ ๋ฐ ํŒจํ‚ค์ง€ ๊ตฌ์กฐ๋ฅผ `controller`(ํ”„๋ฆฌ์  ํ…Œ์ด์…˜), `service`(๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง), `repository`(๋ฐ์ดํ„ฐ ์ ‘๊ทผ) ๋“ฑ์œผ๋กœ ๋ช…ํ™•ํžˆ ๋‚˜๋ˆ„์–ด ์ฝ”๋“œ๋ฅผ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ตฌํ˜„ํ•œ๋‹ค. - **System Design:** ์‚ฌ์šฉ์ž์˜ ํŠธ๋ž˜ํ”ฝ์ด ๋งŽ์ง€ ์•Š๊ณ  ์š”๊ตฌ์‚ฌํ•ญ์ด ๋น„๊ต์  ๋‹จ์ˆœํ•œ ์‚ฌ๋‚ด ๊ด€๋ฆฌ์šฉ ๋ฐฑ์˜คํ”ผ์Šค ํˆด์ด๋‚˜ ๊ธฐ๋ณธ์ ์ธ CRUD ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„ค๊ณ„ํ•  ๋•Œ ๊ฐ€์žฅ ์šฐ์„ ์ ์œผ๋กœ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ๋‹ค. - **Operation / Maintenance:** ํŠน์ • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ณต๊ธ‰์—…์ฒด๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ ์šฉํ•  ๋•Œ, ํ•ด๋‹น ๊ณ„์ธต์˜ ์ฝ”๋“œ๋งŒ ์ˆ˜์ •ํ•˜์—ฌ ์œ ์ง€๋ณด์ˆ˜ ๋น„์šฉ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ์šด์˜ ์ „๋žต์— ํ™œ์šฉ๋œ๋‹ค. - **Learning Path:** ๋ณต์žกํ•œ ์„ค๊ณ„ ํŒจํ„ด(DDD, Clean Architecture ๋“ฑ)์„ ๋ฐฐ์šฐ๊ธฐ ์ „, ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ด€์‹ฌ์‚ฌ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ถ„๋ฆฌํ•˜๊ณ  ๊ตฌ์„ฑํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๊ฐœ๋…์„ ํ•™์Šตํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ์ถœ๋ฐœ์ ์ด ๋œ๋‹ค. - **My Project Relevance:** ํ•œ์ •๋œ ์˜ˆ์‚ฐ๊ณผ ์งง์€ ๊ธฐ๊ฐ„ ๋‚ด์— ์‹œ์žฅ์˜ ๋ฐ˜์‘์„ ํ™•์ธํ•ด์•ผ ํ•˜๋Š” ์‹ ๊ทœ ์„œ๋น„์Šค ๊ฐœ๋ฐœ์—์„œ, ๋ณต์žกํ•œ ์ธํ”„๋ผ ์˜ค๋ฒ„ํ—ค๋“œ ์—†์ด ์‹ ์†ํ•˜๊ฒŒ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•  ๋•Œ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ### Adjacent Topics - [[Conway's Law]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ์•„ํ‚คํ…์ฒ˜์˜ ์ˆ˜ํ‰์  ๋ถ„ํ• ์ด ์‹ค์ œ ๊ธฐ์—… ๋‚ด ํ”„๋ก ํŠธ์—”๋“œ, ๋ฐฑ์—”๋“œ, DBA ํŒ€ ๊ตฌ์กฐ์™€ ์–ด๋–ป๊ฒŒ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ณ  ์ง„ํ™”ํ•˜๋Š”์ง€ ์กฐ์ง ๊ณตํ•™์  ๊ด€์ ์—์„œ ํƒ๊ตฌํ•œ๋‹ค. - [[Microservices Architecture Pattern]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ๊ณ„์ธตํ˜• ๋ชจ๋†€๋ฆฌ์Šค์˜ ํ™•์žฅ์„ฑ ํ•œ๊ณ„๋ฅผ ๋„˜์–ด์„ฐ์„ ๋•Œ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ˆ˜์ง์ ์ด๊ณ  ์ž์œจ์ ์ธ ๋น„์ฆˆ๋‹ˆ์Šค ๋‹จ์œ„์˜ ๋ถ„์‚ฐ ์„œ๋น„์Šค๋กœ ์ชผ๊ฐœ๋Š” ์•„ํ‚คํ…์ฒ˜๋กœ์˜ ์ „ํ™˜์„ ์ดํ•ดํ•œ๋‹ค. --- *Last updated: 2026-05-02*