μ°Έκ³ μ¬μ΄νΈ
νλ‘μ νΈλ₯Ό κ΄λ¦¬νκΈ° μν κΉ λ ν¬μ§ν 리 κ΄λ¦¬ λ°©μμ μμλ³΄λ €νλ€.
(μ΄ κΈμ νμ¬ μμ±μκ° μμνλ λλ€μμ λ§λλ νλ‘μ νΈμμ μ μ©λλ λ©ν°λ ν¬μ λν΄ μ€μ μ μΌλ‘ λ€λ€λ³ΌκΉνλ€.)
π λ©ν°λ ν¬
μ§κΈκΉμ§ μμ±μλ ν μ΄ νλ‘μ νΈλ‘ κ°λ¨ν νλνλ λ§λ€λ€λ³΄λ μμ°μ€λ½κ² κ° νλ‘μ νΈλ§λ€ λ ν¬μ§ν 리λ₯Ό μμ±νμλλ° μ΄λ¬ν λ°©μμ 'λ©ν°λ ν¬ (Multi Repository)'λΌκ³ νλ€κ³ νλ€.
π¦ λͺ¨λ Έλ ν¬
λͺ¨λ Έλ ν¬λ, 'νλμ μ μ₯μ'λ₯Ό μλ―Ένλ 'λͺ¨λ리μ (Monolithic Repository)'μ μ€μλ§λ‘ λ§μ νλ‘μ νΈλ₯Ό λ¨μΌ μ μ₯μμ μ μ₯νλ λ°©λ²μ μλ―Ένλ€.
β κ·ΈλΌ μ΄ λͺ¨λ Έλ ν¬λ μ΄λ ν μ₯μ λλ¬Έμ νλ‘ νΈμλμ κ°λ° νΈλ λκ° λ κΉ?
π λͺ¨λ Έλ ν¬κ° νΈλ λμΈ μ΄μ
νλμ κ°λ° νκ²½μμλ μ¬λ¬ νλ‘μ νΈμ λΌμ΄λΈλ¬λ¦¬κ° μνΈ μμ‘΄νλ©΄μ λμνλ κ²½μ°κ° λ§λ€. μ΄λ¬ν 볡μ‘ν νκ²½μμ λͺ¨λ Έλ ν¬λ₯Ό μ΄μ©νλ©΄ ν΅ν©μ μΈ κ΄μ μμ μ½λμ μΌκ΄μ±μ μ μ§νκ³ , ν κ°μ νμ μ κ°νν μ μλ€.
λν, νλμ μ μ₯μμμ μ 체 μ½λλ² μ΄μ€λ‘ κ΄λ¦¬ν¨μΌλ‘μ¨ λ¦¬ν©ν λ§μ΄λ λκ·λͺ¨ λ³κ²½ μ¬νμ λμ± ν¨κ³Όμ μΌλ‘ μ²λ¦¬ν μ μλ€. μ΄λ¬ν μ₯μ λ€λ‘ μΈν΄ λͺ¨λ Έλ ν¬λ νλ νλ‘ νΈμλ κ°λ° νΈλ λ μ€ νλλ‘ μ리 μ‘νλ€κ³ νλ€.
ππ»λͺ¨λ Έλ ν¬μ μ₯μ
• μ½λμ μ¬μ¬μ©
μ¬λ¬ κ³³μμ 곡μ λλ ν¨μλ μ»΄ν¬λνΈ λ± νλλ₯Ό μ μΈν΄λκ³ μ¬λ¬ νλ‘μ νΈμμ νΈμΆνμ¬ μ¬μ©ν μ μλ€.
• μ μ§λ³΄μμ μ΅μ ν μμ μ κ°μννλ€.
νλλ₯Ό μ μΈν΄λκ³ μ¬μ©νλ€λ³΄λ, μμ μ¬νμ΄ μκΈΈ κ²½μ° ν΄λΉ ν¨μ νλλ§ μμ νλ©΄ λͺ¨λ νλ‘μ νΈμ μ μ©μ΄ λλ€.
• λ²μ κ΄λ¦¬
• μ’ μμ± κ΄λ¦¬
• ν΅ν© CI, TEST κ΄λ¦¬
λΌμ΄λΈλ¬λ¦¬Aκ° λ³κ²½λμμ λ, ν΅ν©μ μΌλ‘ CIλ₯Ό λλ €μ TEST ν μ μλ€.
• νμ
λͺ¨λ μ»€λ° νμ€ν λ¦¬κ° ν λ ν¬μ§ν 리μ λ¨μ νμ€ν 리λ₯Ό μΆμ νκ±°λ κ°λ°λ°©ν₯μ μ΄ν΄νλλ°μ λμμ΄ λλ€.
μμ μ₯μ λ€λ‘ νλ‘ νΈμλ κ°λ°μ 볡μ‘λλ₯Ό μ€μ΄κ³ ν¨μ¨μ±μ λμ΄λλ° ν° λμμ μ€ μ μλ€.
ππ»λͺ¨λ Έλ ν¬μ λ¨μ
• μμ‘΄μ± κ΄λ¦¬ 볡μ‘
μλ‘ μμ‘΄μ± μ°κ²°μ΄ μ¬μ κ³Όλν μμ‘΄ κ΄κ³κ° μκΈΈ μ μλ€. (μ€κ³μ μ μ€)
• λ¬΄κ±°μ΄ νλ‘μ νΈ (CI μλ μ ν)
λ©ν° λ ν¬μ§ν 리μ κ²½μ° νλμ λ³κ²½μ¬νμ΄ λ€λ₯Έ νλ‘μ νΈμ μν₯μ μ£Όλ―λ‘ μ λΆ ν μ€νΈν΄μΌνλλ° κ·Έ μκ°μ λΉνλ©΄ κ°μ μ΄λΌκ³ λ³Έλ€.
• Code Ownership μλ°°
λ§μ νμ΄ νλμ λ ν¬μ§ν 리λ₯Ό κ΄λ¦¬νλ€λ³΄λ μ½λ μ€λμμ μλ°°νμ¬ κ΄λ¦¬ 체κ³μ νΌλμ μ€ μ μλ€.
π οΈ Package Manager
• Lerna
Documentation | Lerna
Lerna is a fast, modern build system for managing and publishing multiple JavaScript/TypeScript packages from the same repository.
lerna.js.org
• Nx
Nx: Smart Monorepos · Fast CI
Nx is a build system, optimized for monorepos, with plugins for popular frameworks and tools and advanced CI capabilities including caching and distribution.
nx.dev
Turbo
Turbo is an incremental bundler and build system optimized for JavaScript and TypeScript, written in Rust.
turbo.build
μμ±μλ Turborepoλ₯Ό ν΅νμ¬ λͺ¨λ Έλ ν¬λ₯Ό μμ μμ μ΄λ€.
[ Turborepo ] ν°λ³΄λ ν¬μ λν΄ μμ보μ.
μ°Έκ³ μ¬μ΄νΈ• Turborepo 곡μ λ¬Έμ TurboTurbo is an incremental bundler and build system optimized for JavaScript and TypeScript, written in Rust.turbo.build μμ±μμ Next.js νλ‘μ νΈμ λͺ¨λ Έλ ν¬λ₯Ό μ μ©νκΈ° μνμ¬ λͺ¨λ Έλ
ma-carong.tistory.com
'DevOps > GitHub' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[ GitHub ] Merge μ’ λ₯μ λν΄ μμ보μ (Merge Commit, Squash Merge, Rebase Merge) (0) | 2025.02.16 |
---|---|
[ GitHub ] μ격 μ μ₯μ νλ‘μ νΈ λ²μ κ΄λ¦¬νκΈ° (0) | 2024.04.11 |
[ GitHub ] νμ μ μν SSH Key 곡κ°ν€λ₯Ό μμ±ν΄λ³΄μ. (0) | 2024.04.11 |
[ GitHub ] Repository μ격 μ μ₯μ μ΄μ©ν΄λ³΄μ. (0) | 2024.04.11 |
[ GitHub ] Git / GitHub μ°¨μ΄ λ° μ΄ν΄νκΈ° (0) | 2024.02.22 |