๐ Trunk-Based Development vs GitHub Flow ์ฐจ์ด์
๋ ๋ค ๊ฐ๋ฒผ์ด ๋ธ๋์น ์ ๋ต์ผ๋ก, ๋น ๋ฅธ ๋ฐฐํฌ๋ฅผ ๋ชฉํ๋ก ํฉ๋๋ค. ํ์ง๋ง ๋ช ๊ฐ์ง ์ค์ํ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
๐ 1. Trunk-Based Development (TBD)
โ ํต์ฌ ๊ฐ๋ :
main
๋ธ๋์น(=Trunk)์์ ์ง์ ๊ฐ๋ฐํ๊ณ ,- ์งง์-lived feature ๋ธ๋์น๋ง ์ฌ์ฉํ๋ฉฐ,
- ํ๋ฃจ์๋ ์ฌ๋ฌ ๋ฒ
main
์ ๋จธ์งํ๋ ๋ฐฉ์.
โ ํน์ง:
- ๋ธ๋์น๋ ์งง๊ฒ ์ ์ง → ๋ช ์๊ฐ ๋๋ ํ๋ฃจ ์ด๋ด ๋ณํฉ
- Long-lived feature ๋ธ๋์น ์์ →
develop
๋ธ๋์น X - CI/CD ํ์ →
main
์ ๋ณํฉ ์ ํญ์ ๋ฐฐํฌ ๊ฐ๋ฅ ์ํ ์ ์ง
โ ์ํฌํ๋ก์ฐ:
main
์์ ์ง์ ๊ฐ๋ฐํ๊ฑฐ๋ ์งง์-lived ๋ธ๋์น ์์ฑ- ๋น ๋ฅด๊ฒ ๊ฐ๋ฐ ํ
main
์ ๋จธ์ง - CI/CD๊ฐ
main
์ ์ํ๋ฅผ ํญ์ ๋ฐฐํฌ ๊ฐ๋ฅํ๋๋ก ์ ์ง
โ ์ฅ์ :
- ๋น ๋ฅธ ๋ฐฐํฌ & ์ง์์ ํตํฉ ๊ฐ๋ฅ
- ์ถฉ๋ ๊ด๋ฆฌ๊ฐ ์ฝ๊ณ ์ฝ๋ ๋ณํฉ์ด ๊ฐ๋จ
- ๋กค๋ฐฑ์ด ๋น ๋ฆ (feature flag์ ํจ๊ป ์ฌ์ฉ)
โ ๋จ์ :
- ์ฆ์ ๋ฐฐํฌ ๊ฐ๋ฅํ ์ฝ๋ ํ์ง ์ ์ง ํ์
- ํ์ ๊ฐ ์ถฉ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ → ์ฝ๋ ๋ฆฌ๋ทฐ & CI/CD ํ์
- Feature toggle(ํ๋๊ทธ) ํ์ → ๋ฏธ์์ฑ ๊ธฐ๋ฅ์ ์จ๊ธฐ๋ ค๋ฉด ์ค์ ํ์
โ ์ฌ์ฉ ์ฌ๋ก:
- Google, Meta, Netflix ๋ฑ ๋ฐฐํฌ ์๋๊ฐ ์ค์ํ ๋๊ท๋ชจ ์๋น์ค
- DevOps, CI/CD ํ๊ฒฝ์ด ์ ๊ฐ์ถฐ์ง ์กฐ์ง
๐ 2. GitHub Flow
โ ํต์ฌ ๊ฐ๋ :
main
๋ธ๋์น์์ ๋ฐฐํฌ ๊ฐ๋ฅํ ์ํ ์ ์ง,- ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ feature ๋ธ๋์น์์ ๊ฐ๋ฐ ํ
- Pull Request๋ฅผ ํตํด
main
์ ๋จธ์งํ๋ ๋ฐฉ์.
โ ํน์ง:
main
๋ธ๋์น๋ ํญ์ ๋ฐฐํฌ ๊ฐ๋ฅํด์ผ ํจ- Feature ๋ธ๋์น๋ฅผ ์์ฑํ๊ณ PR(Pull Request)๋ก ๋จธ์ง
- CI/CD๋ฅผ ํตํด
main
๋ธ๋์น๊ฐ ์ ๋ฐ์ดํธ๋๋ฉด ์๋ ๋ฐฐํฌ
โ ์ํฌํ๋ก์ฐ:
main
์์ feature ๋ธ๋์น ์์ฑ- ๋ธ๋์น์์ ๊ฐ๋ฐ ์งํ ํ PR ์์ฑ
- ์ฝ๋ ๋ฆฌ๋ทฐ ํ
main
์ ๋จธ์ง - CI/CD๋ฅผ ํตํด ๋ฐฐํฌ
โ ์ฅ์ :
- ๋จ์ํ ๋ธ๋์น ์ ๋ต → ๋ฐฐ์ฐ๊ธฐ ์ฝ๊ณ ๊ด๋ฆฌ ์ฉ์ด
- ๋ฐฐํฌ ์๋ํ์ ์ ๋ง์ → PR ๋ณํฉ ํ ์๋ ๋ฐฐํฌ
- GitHub๊ณผ ์ฐ๊ณ → GitHub Actions, CI/CD์ ์ฝ๊ฒ ํตํฉ ๊ฐ๋ฅ
โ ๋จ์ :
- ๊ธด-lived ๋ธ๋์น๊ฐ ์๊ธธ ๊ฐ๋ฅ์ฑ → PR ๋ฆฌ๋ทฐ ๋๊ธฐ ์ ์ง์ฐ ๋ฐ์
- ์ฝ๋ ์ถฉ๋ ๊ฐ๋ฅ์ฑ → ๋ธ๋์น๊ฐ ๊ธธ์ด์ง๋ฉด ์ถฉ๋ ์ํ ์ฆ๊ฐ
- Feature toggle ํ์ํ ์ ์์ → ํฐ ๊ธฐ๋ฅ ์ถ๊ฐ ์ ๋ฏธ์์ฑ ์ฝ๋ ๋ฐฉ์ง ํ์
โ ์ฌ์ฉ ์ฌ๋ก:
- ์คํํธ์ , ์๊ท๋ชจ ํ๋ก์ ํธ
- GitHub Actions ๊ธฐ๋ฐ CI/CD๊ฐ ์๋ ํ๊ฒฝ
๐ ์ฐจ์ด์ ์ ๋ฆฌ
Trunk-Based Development | GitHub Flow | |
---|---|---|
๋ธ๋์น ๊ตฌ์กฐ | main ์์ ์ง์ ๊ฐ๋ฐ, ์งง์-lived ๋ธ๋์น ์ฌ์ฉ |
main ์์ feature ๋ธ๋์น ์์ฑ ํ PR๋ก ๋ณํฉ |
๋ณํฉ ๋ฐฉ์ | ์ง์ main ์ ๋จธ์ง |
PR์ ํตํ ๋ฆฌ๋ทฐ ํ main ์ ๋จธ์ง |
๋ฐฐํฌ ์ ๋ต | main ์ ํญ์ ๋ฐฐํฌ ๊ฐ๋ฅ ์ํ, ์ฆ์ ๋ณํฉ & ๋ฐฐํฌ |
PR ๋ณํฉ ํ CI/CD๋ฅผ ํตํด ์๋ ๋ฐฐํฌ |
์ฝ๋ ๋ฆฌ๋ทฐ | ์ฝ๋ ๋ฆฌ๋ทฐ ์์ด ๋ฐ๋ก ๋จธ์ง ๊ฐ๋ฅ (CI ํ ์คํธ ํ์) | PR์ ํตํ ์ฝ๋ ๋ฆฌ๋ทฐ ํ์ |
Feature ๋ธ๋์น | ๊ฑฐ์ ์์ (์์ด๋ ๋งค์ฐ ์งง๊ฒ) | Feature ๋ธ๋์น๋ฅผ ์ ๊ทน์ ์ผ๋ก ํ์ฉ |
CI/CD ํ์ ์ฌ๋ถ | ํ์ | ํ์ |
์ ํฉํ ํ ๊ท๋ชจ | ๋๊ท๋ชจ ํ, DevOps ์กฐ์ง | ์๊ท๋ชจ ํ, ์คํํธ์ , GitHub ์ค์ฌ ๊ฐ๋ฐ |
๐ฏ ๊ฒฐ๋ก
- TBD → ๋น ๋ฅธ ๋ฐฐํฌ๊ฐ ์ค์ํ ๋๊ธฐ์ , DevOps ์กฐ์ง์ ์ ํฉ
- GitHub Flow → ์๊ท๋ชจ ํ, GitHub ๊ธฐ๋ฐ ํ๋ก์ ํธ์ ์ ํฉ
๋ ๋ค ๋ฐฐํฌ ์๋ํ์ CI/CD๊ฐ ํ์์ด์ง๋ง,
GitHub Flow๋ PR ์ค์ฌ์ ํ์
์ ์ค์์ํ๊ณ ,
Trunk-Based๋ ์ง์ main
์์ ์์
ํ๋ ์ ์ด ๊ฐ์ฅ ํฐ ์ฐจ์ด์
๋๋ค.
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[250214 TIL] HTTP, OSI7๊ณ์ธต(๊ฐ๋ ์ ๋ฆฌ) (0) | 2025.02.14 |
---|---|
[250213 TIL] ์ถ์ํ, ์บก์ํ(๊ฐ๋ ์ ๋ฆฌ) (0) | 2025.02.13 |
[250212 TIL] ์ ์์ผ ๋ฐฉ๋ฒ๋ก (๊ฐ๋ ์ ๋ฆฌ) (0) | 2025.02.13 |
[250211 TIL] React Synthetic Event (0) | 2025.02.11 |
[250207 TIL] ์ ์ด ์ญ์ , ์์กด์ฑ ์ฃผ์ (1) | 2025.02.07 |