# [[Monorepo]] ## ๐Ÿ“Œ Brief Summary ๋ชจ๋…ธ๋ ˆํฌ(Monorepo)๋Š” ๋‹จ์ผ Git ์ €์žฅ์†Œ ๋‚ด์— ์—ฌ๋Ÿฌ ํ”„๋ก ํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ๊ณต์œ  UI ์ปดํฌ๋„ŒํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ๋””์ž์ธ ํ† ํฐ ๋ฐ ๊ณตํ†ต ๋„๊ตฌ๋“ค์„ ํ•จ๊ป˜ ํฌํ•จํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๋Š” ๋ฒ„์ „ ๊ด€๋ฆฌ ์ „๋žต์ž…๋‹ˆ๋‹ค [1, 2]. ์ด๋Š” ๋‹จ์ˆœํžˆ ์ฝ”๋“œ๋ฅผ ํ•œ๊ณณ์— ๋ชจ์•„๋‘” ๋ชจ๋†€๋ฆฌ์‹(Monolith) ๊ตฌ์กฐ๊ฐ€ ์•„๋‹ˆ๋ผ, ๋ช…ํ™•ํ•œ ์˜์กด์„ฑ ๊ทธ๋ž˜ํ”„์™€ ๊ณต๊ฐœ API(Public API)๋ฅผ ํ†ตํ•ด ํŒจํ‚ค์ง€ ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ  ์žฌ์‚ฌ์šฉ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ํ”„๋ก ํŠธ์—”๋“œ ์•„ํ‚คํ…์ฒ˜์ž…๋‹ˆ๋‹ค [2-4]. ## ๐Ÿ“– Core Content - **๊ตฌ์กฐ ๋ฐ ์ฃผ์š” ํŠน์ง•:** ๋ชจ๋…ธ๋ ˆํฌ๋Š” ์—ฌ๋Ÿฌ ์•ฑ(์˜ˆ: ์›น, ๊ด€๋ฆฌ์ž ์•ฑ, ๋ชจ๋ฐ”์ผ ์›น)๊ณผ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํŒจํ‚ค์ง€(์˜ˆ: UI ํ‚คํŠธ, ๋””์ž์ธ ํ† ํฐ, API ํด๋ผ์ด์–ธํŠธ)๊ฐ€ ํ•˜๋‚˜์˜ ๊ณต์œ ๋œ ํžˆ์Šคํ† ๋ฆฌ์™€ ์ผ๊ด€๋œ ์˜์กด์„ฑ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ฐ–๋Š” ๊ตฌ์กฐ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค [1, 5]. ์ž˜ ๊ตฌ์„ฑ๋œ ๋ชจ๋…ธ๋ ˆํฌ๋Š” ๋†’์€ ์‘์ง‘๋„(high cohesion)์™€ ๋‚ฎ์€ ๊ฒฐํ•ฉ๋„(low coupling)๋ฅผ ๊ฐ–์ถ˜ ๊ฒฉ๋ฆฌ๋œ ํŒจํ‚ค์ง€ ๋‹จ์œ„๋กœ ์ฝ”๋“œ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค [2, 5]. - **๋„์ž…์˜ ์žฅ์ :** ๋‹จ์ผ ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด UI ์›์‹œ ์ปดํฌ๋„ŒํŠธ(primitives), ๋””์ž์ธ ํ† ํฐ, ๋ผ์šฐํŒ… ๊ทœ์น™ ๋“ฑ์˜ ์ฝ”๋“œ๋ฅผ ์—ฌ๋Ÿฌ ์•ฑ์—์„œ ์†์‰ฝ๊ฒŒ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [1, 6]. API ๋ณ€๊ฒฝ ์‹œ ํ•ด๋‹น API๋ฅผ ์†Œ๋น„ํ•˜๋Š” ๋ชจ๋“  ์•ฑ์˜ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•œ ๋ฒˆ์˜ ์ปค๋ฐ‹์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ์›์ž์  ๋ฆฌํŒฉํ† ๋ง(atomic refactors)์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค [1]. ๊ธฐ์กด์ฒ˜๋Ÿผ ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ์ €์žฅ์†Œ์— ๊ฑธ์ณ ๋‹ค์ˆ˜์˜ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ(PR)๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์—ฌ ๊ฐœ๋ฐœ ์†๋„๋ฅผ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค [7]. - **ํ•„์ˆ˜ ๋„๊ตฌ ์ƒํƒœ๊ณ„ (Tooling):** 2025๋…„ ๊ธฐ์ค€ ๋ชจ๋…ธ๋ ˆํฌ ํ™˜๊ฒฝ์„ ์ง€ํƒฑํ•˜๋Š” ์ฃผ์š” ๋„๊ตฌ๋กœ๋Š” `pnpm workspaces`, `Turborepo`, `Nx`, `Lerna` ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค [8, 9]. - `pnpm workspaces`: ๋น ๋ฅด๊ณ  ๊ณต๊ฐ„ ํšจ์œจ์ ์ด๋ฉฐ `workspace:*` ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ์—„๊ฒฉํ•˜๊ณ  ์˜ฌ๋ฐ”๋ฅธ ๋กœ์ปฌ ์˜์กด์„ฑ ์—ฐ๊ฒฐ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค [10]. - `Turborepo`: ์ฆ๋ถ„ ๋นŒ๋“œ(incremental builds)์™€ ํŒŒ์ดํ”„๋ผ์ธ ๊ด€๋ฆฌ, ์›๊ฒฉ ์บ์‹ฑ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๋กœ์ปฌ ๊ฐœ๋ฐœ ๋ฐ CI(์ง€์†์  ํ†ตํ•ฉ) ์†๋„๋ฅผ ๋น„์•ฝ์ ์œผ๋กœ ๋†’์—ฌ์ค๋‹ˆ๋‹ค [11]. - `Nx`: ๊ฐ•๋ ฅํ•œ ํ”„๋กœ์ ํŠธ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฝ”๋“œ ๋ณ€๊ฒฝ์— '์˜ํ–ฅ์„ ๋ฐ›๋Š”(affected)' ํ”„๋กœ์ ํŠธ๋งŒ ๋นŒ๋“œ ๋ฐ ํ…Œ์ŠคํŠธํ•˜๋„๋ก ์ตœ์ ํ™”ํ•˜๋ฉฐ, ์•„ํ‚คํ…์ฒ˜ ์ •์ฑ… ๊ฐ•์ œ์„ฑ์ด ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค [12, 13]. - **ํ™•์žฅ์„ฑ์„ ์œ„ํ•œ ๊ฒฝ๊ณ„(Boundaries) ๊ทœ์น™:** ์„ฑ๊ณต์ ์ธ ๋ชจ๋…ธ๋ ˆํฌ๋Š” ๊ทœ์œจ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๋ถ€ ํŒŒ์ผ ๊ฒฝ๋กœ๋กœ ์ง์ ‘ ์ ‘๊ทผํ•˜๋Š” '๊นŠ์€ ๊ฒฝ๋กœ ์ž„ํฌํŠธ(deep imports)'๋ฅผ ์—„๊ฒฉํžˆ ๊ธˆ์ง€ํ•˜๊ณ , ๊ฐ ํŒจํ‚ค์ง€๊ฐ€ `src/index.ts`์™€ ๊ฐ™์€ ๋‹จ์ผ ์ง„์ž…์ (Public API)์„ ํ†ตํ•ด์„œ๋งŒ ๋ชจ๋“ˆ์„ ๋…ธ์ถœํ•˜๋„๋ก ๊ตฌ์„ฑํ•˜์—ฌ ํŒŒ์ผ ๊ฐ„์˜ ๊ฒฐํ•ฉ์„ ๋ง‰์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค [4, 14]. - **์•„ํ‚คํ…์ฒ˜ ๋ฐฉ๋ฒ•๋ก ๊ณผ์˜ ๊ฒฐํ•ฉ:** ๋ชจ๋…ธ๋ ˆํฌ ๋‚ด์˜ ๋‹จ์ผ ๊ณต์œ  ํด๋”(`shared/`)๊ฐ€ ์žก๋™์‚ฌ๋‹ˆ ์ฝ”๋“œ๋กœ ์ฑ„์›Œ์ง€๋Š” ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด Feature-Sliced Design (FSD)์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•๋ก ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค [15-17]. FSD์˜ ๊ณ„์ธต ๊ตฌ์กฐ(layers)๋ฅผ ๋ชจ๋…ธ๋ ˆํฌ์˜ ํŒจํ‚ค์ง€์™€ ์•ฑ ๋‚ด๋ถ€์— ์ ์šฉํ•˜์—ฌ, ์–ด๋–ค ๋ชจ๋“ˆ์ด ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ์ง€, ๋„๋ฉ”์ธ ๊ฒฝ๊ณ„๊ฐ€ ์–ด๋””์ธ์ง€ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค [16-20]. ## ๐Ÿ”— Knowledge Connections - **Related Topics:** [[Turborepo]], [[Nx]], [[Feature-Sliced Design (FSD)]], [[Public APIs]] - **Projects/Contexts:** [[Scalable Frontend Architecture]], [[Component Library Architecture]] - **Contradictions/Notes:** ๋ชจ๋…ธ๋ ˆํฌ๋Š” ์ฝ”๋“œ ํ†ตํ•ฉ ๋น„์šฉ(integration cost)์„ ์ค„์ด๊ณ  ์›์ž์  ๋ณ€๊ฒฝ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜์ง€๋งŒ, ๊ฒฝ๊ณ„ ๊ทœ์น™ ์„ค์ •์ด๋‚˜ CI ์ „๋žต ๊ฐ™์€ ๋†’์€ ๊ทœ์œจ์ด ์š”๊ตฌ๋ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด, ์•ฑ๋“ค์ด ์™„์ „ํžˆ ๋…๋ฆฝ์ ์ธ ๋ฆด๋ฆฌ์Šค ์ฃผ๊ธฐ๋ฅผ ๊ฐ€์ง€๊ฑฐ๋‚˜ ์ปดํ”Œ๋ผ์ด์–ธ์Šค์ƒ ์—„๊ฒฉํ•œ ๋ณด์•ˆ ๋ถ„๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์กฐ์ง์—์„œ๋Š” ํด๋ฆฌ๋ ˆํฌ(polyrepo) ์ ‘๊ทผ ๋ฐฉ์‹์ด ๋” ์ ํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [21, 22]. --- *Last updated: 2026-04-26*