Monorepo Tool
Monorepo Tool (Lerna, Nx, Rush, Turborepo)
ํจํค์ง ๋งค๋์ ์ํฌ์คํ์ด์ค์ ๊ธฐ๋ฅ๋ค ์ธ์ ์ ๋ฌธ์ ์ผ๋ก ๊ฐ๋ฐํ๊ธฐ ์ํด ํ์ํ ๋๊ตฌ ๋ฐ ๊ธฐ๋ฅ๋ค (์๋, ๋ถ์, ๊ด๋ฆฌ ์ธก๋ฉด)
๊ฐ๋ฐ ๊ณผ์ ์ค ์ฌ๋ฌ ํจํค์ง๋ค์ ์ฌ์ฉํ ๋ ํจํค์ง์ ์ฝ๋๋ฅผ ๊ทธ๋ฅ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋ ๋น๋ ๊ณผ์ ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ ๋งค๋ฒ ๋น๋๋ฅผ ํด์ฃผ์ด์ผํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์๋ค.
๋ชจ๋ ธ๋ฆฌํฌ ํด์ ํ์ฉํ๋ค๋ฉด, ์ฝ๋ ๋ณ๊ฒฝ์ ์ด ์๋ ๊ฒฝ์ฐ ์บ์ฑ๋ ๋น๋ ํ์ผ์ ์ฌ์ฉํ๋ค๊ฑฐ๋ ์ด๋ฐ ๋ฒ๊ฑฐ๋ก์์ ํด์ํด์ฃผ๋ ๋ง์ ๊ธฐ๋ฅ๋ค์ด ํฌํจ๋์ด ์๋ค.
๋ฆฌํฌ์งํ ๋ฆฌ ๋ด ์ํฌ์คํ์ด์ค์ ๋ํ ๋ถ์๊ณผ ์๊ฐํ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ์ ์ฒด์ ์ธ ์ฐธ์กฐ ์์กด ๊ด๊ณ๋ฅผ ํ์ ํ๊ธฐ ํจ๊ณผ์
์ค์ผํด๋ฉ์ด๋ ์ฝ๋ ๊ณต์ , ํจํค์ง ์ฌ์ฉ ์ ํ ๋ฑ์ ๊ด๋ฆฌ๋ฅผ ์์์ ์ด ์๋ ๋๊ตฌ๋ค์ ํ์ฉํ๋ฉด ํธํจ
๋ชจ๋ ธ๋ ํฌ ๋๊ตฌ๋ฅผ ์ดํด๋ณด๋ฉด์ ๋ชฐ๋๋ ๋ชจ๋ ธ๋ฆฌํฌ์ ์ ์ฉํ ๊ธฐ๋ฅ๋ค์ ํ์ ํ ์ ์๋ค.
Package Manager Workspaces๋?
ํจํค์ง ๋งค๋์ (NPM, Yarn, Pnpm)์์ ๋ฃจํธ ํ๋ก์ ํธ ๋ด๋ถ์ workspace ๊ธฐ๋ฅ์ผ๋ก ์ฌ๋ฌ ํ์ ํจํค์ง๋ค์ ์์ฑํ๊ณ ์ฐ๊ฒฐํ ์ ์๋ค.
ํจํค์ง ๋งค๋์ ๋ง์ผ๋ก๋ ๋ชจ๋ ธ๋ฆฌํฌ๋ฅผ ์ด์ํ๊ธฐ ์์ฌ์ด ๋ถ๋ถ๋ค์ด ์กด์ฌ
Monorepo Tool ์ ๊ณต ๊ธฐ๋ฅ๋ค
์๋
Local computation caching (๋ก์ปฌ ์บ์ฑ)
Lerna, Nx, Rush, Turborepo
ํ๋ฒ ์คํ๋ ๊ฒฐ๊ณผ๋ฌผ(๋น๋)์ ์บ์ฑํ์ฌ ์บ์ฑ๋ ์์์ ํ์ฉํ๋ ๊ธฐ๋ฅ
Distribute computation caching (๋ถ์ฐ ์บ์ฑ)
Lerna, Nx, Rush, Turborepo
๊ฐ์ ์ปดํจํฐ๊ฐ ์๋ ์ฌ๋ฌ ์์ ํ๊ฒฝ์์ ๋์ผํ ์บ์ฑ๋ ๋น๋ ์์์ ํ์ฉํ๋๋ก ํ๋ ๊ธฐ๋ฅ
CI ์์ ํ ๋ ์ค์
Local task orchestration (๋ก์ปฌ ์์ ์ค์ผ์คํธ๋ ์ด์ )
Lerna, Nx, Rush, Turborepo
์ข ์์ฑ ์ด์๋ก ๋น๋์ ์์๋ฅผ ์ ์ดํด์ ์์ ์ ์์๋ฅผ ๋์ดํด์ผ ํ๋ค๋ฉด ๋ณ๋ ฌ์ ์ผ๋ก ์คํํ ์ ์๊ฒ ๋๋ค.
์ข ์์ฑ ์ด์๊ฐ ์๋ ๋ถ๋ถ์ ๋ณ๋ ฌ์ ์ผ๋ก ๋น๋ํ๋๋ก ์ค์ ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณต
Distribute task execution (๋ถ์ฐ ์์ )
Lerna, Nx
๋ก์ปฌ์ด ์๋ ๋ถ์ฐ ํ๊ฒฝ์์ ์์ ์ ์คํํ๋ ๊ธฐ๋ฅ์ ์ ๊ณต
Detecting affected packages (๋ณ๊ฒฝ ๊ฐ์ง)
Lerna, Nx, Rush, Turborepo
๋ณ๊ฒฝ ์ฌํญ์ ์ํฅ์ ๋ฐ๋ ํญ๋ชฉ๋ค๋ง ๊ฒฐ์ ํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณต
ํน์ ํจํค์ง์ ์ฝ๋๊ฐ ์์ ๋๋ฉด ํด๋น ์ฝ๋์ ์ํฅ์ ๋ฐ๋ ์ ๋ค๋ง ๋น๋ ๋๋ ํ ์คํธ๋ฅผ ์คํํ ์ ์๊ฒ ๋๋ค.
๋ถ์
Workspace analysis (์์ ์์ญ ๊ฐ์ง ๋ฐ ๋ถ์)
Lerna, Nx, Rush, Turborepo
๋ณ๋์ ์ถ๊ฐ ์ค์ ์์ด
package.json
์ ์ฌ์ฉํด์ ์ํฌ์คํ์ด์ค์ ํ๋ก์ ํธ ๊ทธ๋ํ๋ฅผ ๋ถ์ํ ์ ์๋ ๊ธฐ๋ฅ
Dependency graph visualization (์์กด์ฑ ๊ทธ๋ํ ์๊ฐํ)
Nx, Turborepo
ํ๋ก์ ํธ ํจํค์ง์ ์ข ์์ฑ ๊ด๊ณ๋ฅผ ์๊ฐํ ํด์ฃผ๋ ๊ธฐ๋ฅ
turborepo๋ HTML ๋ฌธ์๋ก๋ง ์ ๊ณตํ๊ณ Nx๋ ๊ฒ์, ํํฐ๋ง ๋ฑ ์ธํฐ๋ ํฐ๋ธ ๊ธฐ๋ฅ์ ์ถ๊ฐ๋ก ์ ๊ณต
๊ด๋ฆฌ
Source code sharing (์์ค ์ฝ๋ ๊ณต์ )
Lerna, Nx, Rush, Turborepo
๊ฐ๋ณ ์์ค ์ฝ๋ ์กฐ๊ฐ์ ์ฝ๊ฒ ๊ณต์ ํด์ฃผ๋ ๊ธฐ๋ฅ
๊ธฐ๋ณธ์ NPM Package๋ง ๊ณต์ ์ฌํญ
Code generation (์ค์ผํด๋ฉ)
Nx
package.json
๋ง ์๋ค๋ฉด ์ค์ผํด๋ฉ์ ์์ฑํด์ฃผ๋ ๊ธฐ๋ฅ์ ์ ๊ณต
Consistent tooling (์ผ๊ด๋ ๋๊ตฌ)
Nx
์ผ๊ด๋ ๋ฐฉ์์ผ๋ก ์ฌ๋ฌ ๋๊ตฌ๋ค์ ํ์ฉํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณต
Project contraints and visibility (์ข ์์ฑ ๊ด๊ณ ์ ํ)
Nx, Rush,
๋ฆฌํฌ์งํ ๋ฆฌ ๋ด์ ์ข ์์ฑ ๊ด๊ณ๋ฅผ ์ ํํ๋ ๊ท์น์ ์ค์
Last updated