๋ฉ์์งํ๋ซํผ๊ฐ๋ฐํ์ ๋ธ๋์นญ ์ ๋ต์? Release Flow!
๋ฉ์์งํ๋ซํผ๊ฐ๋ฐํ์ ๋ธ๋์นญ ์ ๋ต์? Release Flow! ๊ด๋ จ
๋ค์ด๊ฐ๋ฉฐ
์ด๋ฒ ๊ธ์์๋ NHN Cloud Notification ๊ฐ๋ฐ์ ๋ด๋นํ๋ ๋ฉ์์งํ๋ซํผ๊ฐ๋ฐํ์ ๋ธ๋์นญ ์ ๋ต์ธ Release Flow์ ๋ํด ์๊ฐํฉ๋๋ค. ๋ฉ์์งํ๋ซํผ๊ฐ๋ฐํ์ ์ฌ์ค ์ต๊ทผ๊น์ง Release Flow์ ๋ํด ์ ํ ๋ชจ๋ฅด๊ณ ์์์ต๋๋ค.
๋ช ๊ฐ์ ์ , ํ ๋ด๋ถ์์ ์ผ์ด๋ ํ ์ฅ์ ๋ก ์ด ๋ธ๋์นญ ์ ๋ต์ ์๊ฒ ๋์์ต๋๋ค. GitHub Pull Request(PR)์์ ๋ฒ ์ด์ค ๋ธ๋์น๋ฅผ ์ค์๋ก ์๋ชป ์ค์ ํ์ฌ ์ฅ์ ๊ฐ ๋ฐ์ํ๊ณ , ์ด๋ฅผ ๋ถ์ํ๋ ๊ณผ์ ์์ ์ ํฌ์ ๋ธ๋์นญ ์ ๋ต์ ๊ฐ์ ์ ์ฌ์ง๊ฐ ์์์ ๋ฐ๊ฒฌํ์ต๋๋ค. ๊ณผ์ฐ ์ ํฌ์ ๋ธ๋์นญ ์ ๋ต์ด ์ด๋ฏธ ์ ์๋ ๋ธ๋์นญ ์ ๋ต ์ค ํ๋์ผ์ง ๊ถ๊ธํด์ก๊ณ , ๊ทธ๋ฌ๋ ์ค Release Flow๋ฅผ ๋ฐ๊ฒฌํ๊ฒ ๋์์ต๋๋ค.
๋ธ๋์นญ ์ ๋ต์ ์กฐ์ง๊ณผ ํ๋ก์ ํธ์ ํน์ฑ์ ๋ง๊ฒ ์กฐ์ ๋์ด์ผ ํฉ๋๋ค. ์ ํฌ์ ๋ธ๋์นญ ์ ๋ต์ด Release Flow๋ฅผ ์๋ฒฝํ๊ฒ ๋ฐ๋ฅด๊ณ ์๋ค๊ณ ๋งํ ์๋ ์์ต๋๋ค๋ง, ์ด ๊ธ์์๋ ์ ํฌ ํ๋ง์ ๋ธ๋์นญ ์ ๋ต์ ์๊ฐํ๊ณ , ์ผ๋ฐ์ ์ธ Release Flow์ ์ด๋ป๊ฒ ๋ค๋ฅธ์ง ๋น๊ตํด ๋ณด๊ฒ ์ต๋๋ค. ์์ ์ ์ผ๋ก ํด๋ผ์ฐ๋ ์๋น์ค๋ฅผ ์ ๊ณตํ๊ณ ํจ์จ์ ์ผ๋ก ๊ฐ๋ฐํ๊ธฐ ์ํ ์ฌ์ํ ๊ณ ๋ฏผ๊ณผ ๋ ธ๋ ฅ์ ์ด ๊ธ์ ํตํด ๊ณต์ ํ๊ณ ์ ํฉ๋๋ค.
Release Flow
Release Flow๋ผ๋ ๋ธ๋์นญ ์ ๋ต์ด ๋ฏ์ ๋ถ๋ค๋ ์์ ํ ๋ฐ์. Release Flow๋ Microsoft์์ ์ฌ์ฉํ๊ณ ์๋ ๋ธ๋์นญ ์ ๋ต์ผ๋ก ์๋ ค์ ธ ์๋๋ฐ์. ์ด ๋ธ๋์นญ ์ ๋ต์ ์์ ์ ์ด๊ณ ํจ์จ์ ์ธ ์ํํธ์จ์ด ๊ฐ๋ฐ๊ณผ ๊ด๋ฆฌ๋ฅผ ์ํด ๋ง๋ค์ด์ก์ต๋๋ค.
Release Flow์ ๋ํ ์์ธํ ์ค๋ช ์ ์ฌ๊ธฐ์ ๋ชจ๋ ๋ค๋ฃจ๊ธฐ๋ ์ด๋ ต์ต๋๋ค. ์๋ ๋งํฌ๋ฅผ ํตํด ์์ธํ ๋ด์ฉ์ ํ์ธํ์ค ์ ์์ต๋๋ค.
- Microsoft์ Release Flow์ ๋ํ ๊ธ
์ ๋งํฌ๋ค์ ๋ฉ์์งํ๋ซํผ๊ฐ๋ฐํ์ ๋ธ๋์นญ ์ ๋ต๊ณผ Release Flow๋ฅผ ๋น๊ตํ๊ณ ์ดํดํ๋ ๋ฐ ์์ด ๋์์ด ๋ ๊ฒ์ ๋๋ค.
Release Flow์ ํต์ฌ ์์
์ ๋งํฌ๋ค์ ์ฝ์ด๋ณด๋ฉด ์ฉ์ด๋ ์ค๋ช ์์ ์๋ก ์ฝ๊ฐ์ ์ฐจ์ด๊ฐ ์กด์ฌํ๋ ๊ฒ์ ๋ฐ๊ฒฌํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋, ๊ณตํต์ ์ผ๋ก ๊ฐ์กฐํ๋ ํต์ฌ ์์๋ ๊ฐ์ต๋๋ค. ๊ทธ์ค ์ ๊ฐ ์๊ฐํ๋ Release Flow์ ํต์ฌ์์๋ ๋ ๊ฐ์ง์ ๋๋ค.
- ๋จ์ํจ: Release Flow๋ Git Flow, GitHub Flow๋ณด๋ค ๋จ์ํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ํนํ Git Flow๋ ๋ค์ํ ์ข
๋ฅ์ ๋ธ๋์น๋ฅผ ์ฌ์ฉํด ๊ตฌ์กฐ๊ฐ ๋ ๋ณต์กํฉ๋๋ค. Release Flow์์๋ ๋๋ถ๋ถ์ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ด ๋ฉ์ธ๋ผ์ธ(
mainline
) ๋ธ๋์น๋ฅผ ๊ธฐ์ค์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค. ์ด๋ ๊ฐ๋ฐ์๋ค์ด ๋ธ๋์นญ ์ ๋ต์ ์ฝ๊ฒ ์ดํดํ๊ณ ์ ์ํ ์ ์๊ฒ ํ๋ฉฐ, ์ค์๋ฅผ ์ค์ฌ์ค๋๋ค. ๊ฐ๋ฐ์๋ ๋ณต์กํ ๋ธ๋์น ๊ตฌ์กฐ๋ฅผ ์ ๊ฒฝ ์ฐ์ง ์์๋ ๋ฉ๋๋ค. - ์ฃผ๊ธฐ์ ์ธ ์ถ์: Release Flow๋ ์ฃผ๊ธฐ์ ์ธ ์ถ์ ์ผ์ ์ ๊ฐ์ง ์ํฐํ๋ผ์ด์ฆ ํ๊ฒฝ์ด๋ ๋๊ท๋ชจ ํ๋ก์ ํธ์ ์ ํฉํฉ๋๋ค. ๋ฆด๋ฆฌ์ค ๋ธ๋์น๋ ์ ํด์ง ์ถ์๋ฅผ ์ค๋นํ๋ฉด์, ๋ฉ์ธ๋ผ์ธ ๋ธ๋์น๋ ๋์์ ๋ค์ ์ถ์์ ํ์ํ ๊ธฐ๋ฅ์ ๋ฐ์ํ ์ ์๋๋ก ํฉ๋๋ค. ๋ฆด๋ฆฌ์ค ๋ธ๋์น๋ ๋ค๊ฐ์ฌ ์ถ์๋ฅผ ์ํด ์ถ๊ฐ์ ์ธ ๊ฒ์ฆ ๊ณผ์ (ํ ์คํธ, ๋ฒ๊ทธ ์์ , ์ต์ ํ)์ ๊ฑฐ์น๋ฉฐ ์์ ์ฑ์ด ํฌ๊ฒ ํฅ์๋ฉ๋๋ค.
Git Flow, GitHub Flow ๋ธ๋์นญ ์ ๋ต๊ณผ์ ์ฐจ์ด์
Git Flow, GitHub Flow, Release Flow๋ ์๋ก ๋ช ํํ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
- Release Flow๋ ๋จ์ํจ๊ณผ ์ฃผ๊ธฐ์ ์ธ ์ถ์๋ผ๋ ๋ ๊ฐ์ง ์ธก๋ฉด์์ ๊ท ํ์ ์ก๊ณ ์์ต๋๋ค. ์ด๋ ํฐ ํ๋ก์ ํธ๋ ๋ค์ํ ํ ๊ตฌ์ฑ์์ด ์๋ ํ๊ฒฝ์์ ํ๋ก์ ํธ์ ํจ์จ์ฑ๊ณผ ์์ ์ฑ์ ๋์์ ํฅ์์ํค๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- Git Flow๋ ๋ค์ํ ์ ํ์ ๋ธ๋์น์ ๋ณต์กํ ๋ธ๋์น ๊ด๋ฆฌ๋ฅผ ํ์๋ก ํ์ง๋ง, ์ด๋ ํฌ๊ณ ๋ณต์กํ ์์คํ , ํนํ ์ฌ๋ฌ ๋ฒ์ ์ ๋์์ ์ ์ง ๊ด๋ฆฌํด์ผ ํ๋ ํ๋ก์ ํธ์ ๋งค์ฐ ์ ํฉํฉ๋๋ค.
- GitHub Flow๋ ์ฒด๊ณ์ ์ธ ๋ธ๋์น ๊ด๋ฆฌ๋ฅผ ํตํด ์์ ์ ์ธ ๊ฐ๋ฐ๊ณผ ์ ์ง ๋ณด์๋ฅผ ์ง์ํ๋ฉฐ, ๋ค์ํ ๋ฆด๋ฆฌ์ค์ ํซํฝ์ค๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ค๋๋ค. GitHub Flow๋ ๊ฐ๊ฒฐํจ๊ณผ ์ง์์ ์ธ ๋ฐฐํฌ์ ์ด์ ์ ๋ง์ถ ์ ๊ทผ ๋ฐฉ์์ผ๋ก ์ธํด ๋น ๋ฅธ ๊ฐ๋ฐ ์ฃผ๊ธฐ์ ์ ์ํ ๋ฐ์์ด ํ์ํ ํ๋ก์ ํธ์ ๋งค์ฐ ์ ํฉํฉ๋๋ค. ์ด๋ ํ์ด ์๋ก์ด ๊ธฐ๋ฅ์ ๋น ๋ฅด๊ฒ ์ถ์ํ๊ณ ์ง์์ ์ผ๋ก ๊ฐ์ ํ ์ ์๋๋ก ๋์์ค๋๋ค.
๊ฐ ๋ธ๋์นญ ์ ๋ต์ ํน์ฑ์ ๋ํ ์ฐจ์ด๋ฅผ ํ๋ก ๋ํ๋ด๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
ํน์ฑ | Release Flow | Git Flow | GitHub Flow |
---|---|---|---|
๊ธฐ๋ณธ ๋ธ๋์น | mainline (๋๋ main ) | main , develop | main |
๊ฐ๋ฐ ๋ฐฉ์ | ์ง์ mainline ์์ ๊ฐ๋ฐ | feature ๋ธ๋์น์์ ๊ฐ๋ฐ ํ develop ์ผ๋ก ๋ณํฉ | ์ง์ main ์์ ๊ฐ๋ฐ |
๋ฆด๋ฆฌ์ฆ ํ๋ก์ธ์ค | release ๋ธ๋์น๋ฅผ ํตํด ๋ฆด๋ฆฌ์ค ๊ด๋ฆฌ | release ๋ธ๋์น๋ฅผ ํตํด ๋ฆด๋ฆฌ์ค ์ค๋น ํ main ์ ๋ณํฉ | main ์์ ๋ฐ๋ก ๋ฐฐํฌ |
ํซํฝ์ค ๊ด๋ฆฌ | mainline ์์ ๋ถ๊ธฐ | hotfix ๋ธ๋์น๋ฅผ main ์ develop ์ ๋ณํฉ | main ์์ ๋ฐ๋ก ์์ |
์ ํฉํ ํ๊ฒฝ | ๋๊ท๋ชจ ํ๋ก์ ํธ์ ์ํฐํ๋ผ์ด์ฆ ํ๊ฒฝ(B2B, Mission Critical) | ๋ณต์กํ ๋ฆด๋ฆฌ์ค ์ฌ์ดํด์ด ์๋ ํ๋ก์ ํธ(์คํ ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ/ํ๋ ์์ํฌ ๋ฑ) | ๋น ๋ฅธ ๋ฐ๋ณต ๊ฐ๋ฐ์ด ํ์ํ ํ๋ก์ ํธ(B2C) |
๋ฉ์์งํ๋ซํผ๊ฐ๋ฐํ์ Release Flow
๋ฉ์์งํ๋ซํผ๊ฐ๋ฐํ์ Release Flow๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ์์ฒด ๋ธ๋์นญ ์ ๋ต์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ด ์ ๋ต์ ๋ค์๊ณผ ๊ฐ์ ์ฃผ์ ๋ธ๋์น๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- ๋ฉ์ธ๋ผ์ธ ๋ธ๋์น (
develop
): ๋ชจ๋ ๊ฐ๋ฐ ํ๋์ ์ค์ฌ์ด ๋๋ ๋ธ๋์น์ ๋๋ค. - ํผ์ฒ ๋ธ๋์น (
feature/{๋ถ๋ชจ๋ธ๋์น}/{๊ฐ๋ฐ์ด์๋ฒํธ}
): ๊ฐ๋ณ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ์ํ ๋ธ๋์น์ ๋๋ค. - ์ํฝ ๋ธ๋์น (
epic-{์์๊ฐ๋ฐ์ด์๋ฒํธ}
): ํฐ ๊ท๋ชจ์ ํ๋ก์ ํธ ๋๋ ์ฌ๋ฌ ๊ธฐ๋ฅ์ ํฌํจํ๋ ๊ฐ๋ฐ ์์ ์ ์ํ ๋ธ๋์น์ ๋๋ค. - ๋ฆด๋ฆฌ์ค ๋ธ๋์น (
release-{์ถ์์ผ}
): ์ถ์ ์ค๋น๋ฅผ ์ํด ๋ฉ์ธ๋ผ์ธ ๋ธ๋์น์์ ๋ถ๊ธฐํ๋ ๋ธ๋์น์ ๋๋ค. - ํ๊ทธ (
{์๋น์ค์ด๋ฆ}/{์ถ์์ผ}/{์ถ์๊ณํ์ด์๋ฒํธ}
): ์ถ์ ์ค๋น๊ฐ ์๋ฃ๋ ๋ฆด๋ฆฌ์ค ๋ธ๋์น๋ฅผ ํ๊น ํฉ๋๋ค. - ํซํฝ์ค ๋ธ๋์น (
hotfix-{ํซํฝ์ค์ผ}
): ๊ธด๊ธํ ๋ฒ๊ทธ ์์ ์ ์ํ ๋ธ๋์น์ ๋๋ค.
์๋์์ ๊ฐ๊ฐ์ ๋ธ๋์น์ ๋ํด ๋ ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค.
1. ๋ฉ์ธ๋ผ์ธ ๋ธ๋์น: develop
๋ฉ์์งํ๋ซํผ๊ฐ๋ฐํ์ develop
์ ๋ฉ์ธ๋ผ์ธ ๋ธ๋์น๋ก ์ฌ์ฉํ๊ณ ์์ต๋๋ค. Release Flow์์๋ ๋ฉ์ธ๋ผ์ธ ๋ธ๋์น๊ฐ ํญ์ ๋น๋์ ๋ฐฐํฌ ๊ฐ๋ฅํด์ผ ๋๋ค๊ณ ํฉ๋๋ค. ์ด๋ ๋ฉ์ธ๋ผ์ธ ๋ธ๋์น์์ ๋๋ถ๋ถ์ ๊ฐ๋ฐ์ด ์ผ์ด๋์ง๋ง ๋ฉ์ธ๋ผ์ธ ๋ธ๋์น๋ฅผ ํญ์ ๋น๋์ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ๊ฒ ๋งํผ ์์ ์ ์ธ ์ํ๋ก ์ ์งํ๋ ๊ฑธ ๋ชฉํ๋ก ํด์ผ ๋๋ค๋ ์๋ฏธ์
๋๋ค. Release Flow๋ ๋ฉ์ธ๋ผ์ธ ๋ธ๋์น์์ ๋ถํฐ ๋์ ์์ค์ ์์ ์ฑ์ ์ ์งํ๋ ๋ฐ ์ค์ ์ ๋ก๋๋ค.
์ฌ๊ธฐ์ ๋ํด Release Flow๋ ์ถ์๋ฅผ ์ํ ๋ฆด๋ฆฌ์ค ๋ธ๋์น๊ฐ ์กด์ฌํฉ๋๋ค. ์ด ๋ฆด๋ฆฌ์ค ๋ธ๋์น๋ ์ถ์ ์ค๋น ๊ธฐ๊ฐ ๋์ ์ถ๊ฐ ๊ฒ์ฆ ๊ณผ์ ์ ๊ฑฐ์ณ ๋ ์์ ํ ์ํ๋ฅผ ์ ์งํฉ๋๋ค.
Release Flow์์ ์ฐจ์ด์
๋ฉ์ธ๋ผ์ธ ๋ธ๋์น์ ์ด๋ฆ์ด ์ผ๋ฐ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉํ๋ main
์ด ์๋ develop
์ธ ๊ฒ ์ธ์ ๋์ผํฉ๋๋ค.
2. ํผ์ฒ ๋ธ๋์น: feature/{๋ถ๋ชจ๋ธ๋์น}/{๊ฐ๋ฐ์ด์๋ฒํธ}
๊ฐ๋ฐ์ ์ํ ํผ์ฒ ๋ธ๋์น ์
๋๋ค. ๋ธ๋์น ์ด๋ฆ์๋ '๋ถ๋ชจ ๋ธ๋์น'์ '์ด์ ๋ฒํธ'๊ฐ ํฌํจ๋์ด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, develop
๋ธ๋์น์์ ์์๋ ํผ์ฒ ๋ธ๋์น๋ feature/develop/1234
์ ๊ฐ์ด ๋ช
๋ช
๋ฉ๋๋ค. ์ฌ๊ธฐ์ '1234'๋ ๊ด๋ จ๋ ์ด์ ๋ฒํธ๋ฅผ ๋ํ๋
๋๋ค.
์ด๋ฌํ ํผ์ฒ ๋ธ๋์น ๋ช ๋ช ๊ท์น์ ๋ธ๋์น์ ๊ด๋ จ ์ด์์ ๋ถ๋ชจ ๋ธ๋์น๋ฅผ ๋ช ํํ ํ์ฌ, ๊ฐ๋ฐ ํ๋ก์ธ์ค์ ํจ์จ์ฑ์ ๋์ผ ์ ์์ต๋๋ค. ๋ถ๊ธฐ๋ ํผ์ฒ ๋ธ๋์น๋ ๊ฐ๋ฐ์ด ์๋ฃ๋๋ฉด ํญ์ ํด๋น ๋ถ๋ชจ ๋ธ๋์น๋ก ๋จธ์ง ๋ฉ๋๋ค. ๊ณผ๊ฑฐ์ ์๋ชป๋ ๋ธ๋์น๋ก ๋จธ์ง ๋์ด ์ฅ์ ๊ฐ ๋ฐ์ํ ์ ์ด ์์๋๋ฐ, ์ด๋ฌํ ์ฌ๋ก๋ฅผ ๋ฐํ์ผ๋ก ํผ์ฒ ๋ธ๋์น์ ์ด๋ฆ์ ๋ ๋ถ๋ช ํ ํ๋ ๋ฐฉ์์ ๋์ ํ์์ต๋๋ค. ์ด๋ฅผ ํตํด PR ๋ฆฌ๋ทฐ ์์๋ ์ฝ๊ฒ ํผ์ฒ ๋ธ๋์น์ ๋ถ๋ชจ๋ฅผ ํ์ ํ ์ ์์ต๋๋ค.
๋ํ, ์ด์ ๋ฒํธ๋ฅผ ํผ์ฒ ๋ธ๋์น ์ด๋ฆ์ ํฌํจ์ํค๋ ๊ฒ์ ์ฝ๋์ ๊ด๋ จ๋ ์ด์๋ฅผ ์ฐ๊ฒฐํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ์ด๋ PR ๋ฆฌ๋ทฐ ๊ณผ์ ์ด๋ ์ถํ ์ฝ๋์ ๋ณ๊ฒฝ ์ด๋ ฅ์ ์ถ์ ํ ๋ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
Release Flow์์ ์ฐจ์ด์
ํผ์ฒ ๋ธ๋์น์ ๋ถ๋ชจ ๋ธ๋์น๋ฅผ ํ๊ธฐํฉ๋๋ค. ๊ทธ ์ธ ๋์ผํฉ๋๋ค.
3. ์ํฝ ๋ธ๋์น: epic-
๊ท๋ชจ๊ฐ ํฌ๊ณ ์ฌ๋ฌ ๊ฐ๋ก ๋๋์ด ์งํํด์ผ ๋ ๊ฐ๋ฐ ์ด์๋ฅผ ์ํ ๋ธ๋์น ์ ๋๋ค. ๋ฉ์ธ๋ผ์ธ ๋ธ๋์น์์ ์ํฝ ๋ธ๋์น๋ฅผ ์์ฑํฉ๋๋ค. ์ผ๋ฐ ํผ์ฒ ๋ธ๋์น์ ์ํฝ ๋ธ๋์น์ ๊ธฐ์ค์ด ๋ฑํ ์ ํด์ ธ ์์ง๋ ์์ง๋ง ํผ์ฒ ๋ธ๋์น๊ฐ ์งง๊ฒ ๋ฆฌ๋ทฐ๋๊ณ ๋จธ์ง ํ ์ ์๋ ํฌ๊ธฐ์ธ ๊ฒฝ์ฐ, ํ๋์ ์์ ๊ฐ๋ฐ ์ด์์ ์ฌ๋ฌ ๊ฐ์ ํ์ ๊ฐ๋ฐ ์ด์๊ฐ ์์ฑ๋ ๊ฒฝ์ฐ, ์ฌ๋ฌ ๋ช ์ ๊ฐ๋ฐ์๊ฐ ํ๋์ ํฐ ๊ธฐ๋ฅ์ ๋ง๋ค ๋ ์ํฝ ๋ธ๋์น๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ํฝ ํผ์ฒ ๋ธ๋์น๋ ์ํฝ ๋ธ๋์น์์ ์์ฑํฉ๋๋ค. ์ํฝ ํผ์ฒ ๋ธ๋์น ์ด๋ฆ์ ํผ์ฒ ๋ธ๋์น ์ด๋ฆ๊ณผ ๋์ผํ ๊ท์น์ ๊ฐ์ง๋๋ค. (์: feature/epic-32/629
)
์ํฝ ๋ธ๋์น์ ์ฌ๋ฌ ๊ฐ์ ์ํฝ ํผ์ฒ ๋ธ๋์น๊ฐ ๋จธ์ง๋๊ณ ๊ฐ๋ฐ์ด ์๋ฃ๋๋ฉด ๋ฉ์ธ๋ผ์ธ ๋ธ๋์น๋ก ๋ฆฌ๋ฒ ์ด์ค(Rebase)๋ฅผ ์ฌ์ฉํ์ฌ ๋ณํฉํฉ๋๋ค.
์ํฝ ๋ธ๋์น ๊ฐ๋ฐ์ด ์๋ฃ๋๋ฉด ์ํฝ ๋ธ๋์น๋ฅผ ๋ฉ์ธ๋ผ์ธ ๋ธ๋์น๋ก ๋ฆฌ๋ฒ ์ด์คํ๊ณ ๋จธ์งํฉ๋๋ค. ๋ฆฌ๋ฒ ์ด์ค๋ฅผ ํตํด ๋ฉ์ธ๋ผ์ธ ๋ธ๋์น์ ์ํฝ ๋ธ๋์น์ ์ปค๋ฐ๋ค์ ๊ทธ๋๋ก ๋ฐ์ํ๊ธฐ ์ํจ์ ๋๋ค.
Release Flow์ ์ฐจ์ด์
Release Flow์ ๋์ผํฉ๋๋ค.
4. ๋ฆด๋ฆฌ์ค ๋ธ๋์น: release-
์ถ์๋ฅผ ์ํ ๋ฆด๋ฆฌ์ค ๋ธ๋์น์ ๋๋ค. ์ถ์ ์ ์ ํด์ง ์ฝ๋ ํ๋ฆฌ์ฆ(Code Freeze) ์ผ์์ ๋ฉ์ธ๋ผ์ธ ๋ธ๋์น์์ ๋ฆด๋ฆฌ์ค ๋ธ๋์น๋ฅผ ์์ฑํฉ๋๋ค. ์ฌ๊ธฐ์ ์ค์ํ ์ ์ ๊ผญ ์๊ฒฉ ์ ์ฅ์(GitHub)์์ ๋ฆด๋ฆฌ์ค ๋ธ๋์น๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค. ์๋ํ๋ฉด ๋ก์ปฌ ์ ์ฅ์์์ ๋ฆด๋ฆฌ์ค ๋ธ๋์น๋ฅผ ์์ฑํ๋ฉด ์ต์ ์ด ์๋ ๋ฉ์ธ๋ผ์ธ ๋ธ๋์น์์ ์์ฑ๋ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด๋ ๊ฒ ์์ฑ๋ ๋ฆด๋ฆฌ์ค ๋ธ๋์น๋ ๊ฒ์ฆ ๊ณผ์ (ํ ์คํธ, ๋ฒ๊ทธ ์์ , ์ต์ ํ)์ ๊ฑฐ์น๋ฉฐ ์์ ์ฑ์ด ๋์ฑ ๊ฐ์ ๋ฉ๋๋ค.
๋ฉ์์งํ๋ซํผ๊ฐ๋ฐํ์ ๋ฆด๋ฆฌ์ค ๋ธ๋์น์ ์ด๋ฆ์ ์ถ์์ผ์ ํฌํจํด์ผ ํฉ๋๋ค. ์๋ ๋ฆด๋ฆฌ์ค ๋ธ๋์น์ ์ถ์์ผ์ ํ์ํ์ง ์์์ต๋๋ค. ์ด๋ก ์ธํด ์๋ชป๋ ๋ธ๋์น๋ก ์ฝ๋๋ฅผ ๋จธ์ง ํด ์ฅ์ ๊ฐ ๋ฐ์ํ ๋ค๋ก ๋ฆด๋ฆฌ์ค ๋ธ๋์น์ ์ถ์์ผ์ ๋ฐ๋์ ํฌํจ์ํค๋ ๊ท์น์ ์ถ๊ฐํ์ต๋๋ค.
๋ฆด๋ฆฌ์ค ๋ธ๋์น์ ์ถ์์ผ์ ํ์ํ๋ ๊ฒ์ ์๋ชป๋ ๋จธ์ง๋ฅผ ์๋ฐฉํ๊ธฐ ์ํจ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ NHN Cloud๋ ์ถ์์ผ ๊ธฐ์ค์ผ๋ก ๋ชจ๋ ๊ฐ๋ฐ ๋ฐ ๊ฒ์ฆ ์ผ์ ์ด ์ ํด์ง๊ธฐ ๋๋ฌธ์ ๋ฆด๋ฆฌ์ค ๋ธ๋์น์ ์ถ์์ผ์ ํ์ํ๋ ๊ฒ์ ์ถ์ ๊ธฐ๋ฐ ํ๊ฒฝ์ ์ผ์ ๊ด๋ฆฌ์ ๋์์ด ๋ฉ๋๋ค.
์ถ์ ์๋ฃ ํ ๋ฆด๋ฆฌ์ค ๋ธ๋์น๋ ๋ฉ์ธ๋ผ์ธ ๋ธ๋์น๋ก ๋จธ์งํฉ๋๋ค. ์ค์ํ ์ ์ ๋ฆด๋ฆฌ์ค ๋ธ๋์น๋ฅผ ๋ฉ์ธ๋ผ์ธ ๋ธ๋์น๋ก ๋จธ์งํ๋ ๊ฒฝ์ฐ, ์ํฝ ๋ธ๋์น์ ๋์ผํ๊ฒ ๋ฆฌ๋ฒ ์ด์ค ํ ๋จธ์งํ๋ ๊ฒ ์ ๋๋ค. ๋ฆฌ๋ฒ ์ด์ค ํ ๋จธ์ง๋ฅผ ํ์ฌ ์ถ์ ์ค๋น ๊ธฐ๊ฐ ๋์์ ์์ ์ฌํญ๋ค์ ๋ฉ์ธ๋ผ์ธ ๋ธ๋์น์๋ ๊ทธ๋๋ก ๋ฐ์ํฉ๋๋ค.
Release Flow์ ์ฐจ์ด์
Release Flow์์๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฆด๋ฆฌ์ค ๋ธ๋์น์ ์ด๋ฆ ๋ค์ ๋ฒ์ ๋ฒํธ๋ ์คํ๋ฆฐํธ/๋ง์ผ์คํค ๋ฒํธ๋ฅผ ๋ถ์ ๋๋ค. ๋ฐ๋ฉด, ๋ฉ์์งํ๋ซํผ๊ฐ๋ฐํ์ ์ถ์์ผ์ ๋ธ๋์น ์ด๋ฆ์ ํฌํจ์ํค๋๋ฐ์. ์ด๋ ์ผ์ ๊ด๋ฆฌ ๋ฐ ์ถ์ ์ ๋์์ด ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
5. ํ๊ทธ: {์๋น์ค์ด๋ฆ}/{์ถ์์ผ}/
๋ฉ์์งํ๋ซํผ๊ฐ๋ฐํ์์๋ ๋ชจ๋ ์ถ์ ์ค๋น๊ฐ ์๋ฃ๋ ํ์, ์ถ์๋ฅผ ์ํ ๋ฆด๋ฆฌ์ค ๋ธ๋์น์์ ํ๊ทธ๋ฅผ ์์ฑํฉ๋๋ค. ํ๊ทธ๋ ๋ฆด๋ฆฌ์ค ๋ธ๋์น ์์ฑ๊ณผ ๋์ผํ๊ฒ GitHub์์ ์์ฑํฉ๋๋ค. ์ด๋ GitHub์์์ ํ๊ทธ ๊ด๋ฆฌ๊ฐ ๋ ์ง๊ด์ ์ด๊ณ , ๋์์ ํญ์ ์ต์ ์ํ์ ๋ฆด๋ฆฌ์ค ๋ธ๋์น์์ ํ๊ทธ๋ฅผ ์์ฑํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
ํ๊ทธ์ ์ด๋ฆ์ '์๋น์ค ์ด๋ฆ', '์ถ์์ผ', '์ถ์ ๊ณํ ์ด์ ๋ฒํธ'๋ฅผ ํฌํจํฉ๋๋ค. ์๋ฅผ ๋ค์ด, SMS ์๋น์ค์ 2024๋ 2์ 27์ผ ์ถ์์ ๋ํ ํ๊ทธ๋ 'SMS/2024-02-27/1024'๊ฐ ๋ฉ๋๋ค. ์ด๋ฌํ ๋ช ๋ช ๊ท์น์ ๋ฐฐํฌ ๊ณผ์ ์์ ์ค์๋ฅผ ์ค์ด๊ณ , ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๊ฒฝ์ฐ ์์ธ์ ์ฝ๊ฒ ์ถ์ ํ ์ ์๊ฒ ๋์์ ์ค๋๋ค.
์ถ์๊ฐ ์๋ฃ๋ ํ, ๋ฆด๋ฆฌ์ค ๋ธ๋์น๋ ๋ฉ์ธ๋ผ์ธ ๋ธ๋์น๋ก ๋จธ์ง๋๊ณ ์ญ์ ๋ฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ๋ฆฌํฌ์งํฐ๋ฆฌ๋ฅผ ๊นจ๋ํ๊ฒ ์ ์งํฉ๋๋ค. ๋ํ ์ด๋ ฅ์ ๋ํ ์ถ์ ๊ณผ ํซํฝ์ค๋ ํ๊ทธ๋ฅผ ์ด์ฉํด ํด๊ฒฐํฉ๋๋ค.
Release Flow์ ์ฐจ์ด์
Release Flow์์๋ ๋ฆด๋ฆฌ์ค ๋ธ๋์น๋ฅผ ์ถ์ ํ์๋ ๋ณด๊ดํ ์ ์์ผ๋ฉฐ, ํ๊ทธ ๋์ ๋ฒ์ ๋ฒํธ๋ ์คํ๋ฆฐํธ/๋ง์ผ์คํค ๋ฒํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฐ๋ฉด, ๋ฉ์์งํ๋ซํผ๊ฐ๋ฐํ ์ฒ๋ผ ํ๊ทธ๋ฅผ ์ด์ฉํ๋ ๊ณณ๋ ์์ต๋๋ค. ๋ฉ์์งํ๋ซํผ๊ฐ๋ฐํ์ ์ถ์์ผ ๊ธฐ๋ฐ์ ํ๊ทธ ๋ช ๋ช ๊ท์น์ ์ฑํํจ์ผ๋ก์จ ์ด์ ์ถ์ ์ ์ฉ์ดํ๊ฒ ํ๊ณ , ๋ฆฌํฌ์งํฐ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ๋ ๊ฐ์ํํฉ๋๋ค.
6. ํซํฝ์ค ๋ธ๋์น: hotfix-
ํซํฝ์ค๊ฐ ํ์ํ ๊ฒฝ์ฐ, ๊ฐ์ฅ ์ต๊ทผ์ ๋ฐฐํฌ๋ ํ๊ทธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํซํฝ์ค ๋ธ๋์น๋ฅผ ์์ฑํฉ๋๋ค. ์ด ๋ฐฉ์์ ํซํฝ์ค๊ฐ ํ์ฌ ์ด์ ์ค์ธ ์ํํธ์จ์ด ๋ฒ์ ์ ์ง์ ์ ์ฉ๋๋๋ก ๋ณด์ฅํฉ๋๋ค.
ํซํฝ์ค ๋ธ๋์น ์ด๋ฆ์ ๋ฆด๋ฆฌ์ค ๋ธ๋์น์ ๋์ผํ ๋ช
๋ช
๊ท์น์ ๋ฐ๋ฅด๋๋ฐ์. ํซํฝ์ค ๋ธ๋์น ์์ฑ ํ, ํซํฝ์ค ํผ์ฒ ๋ธ๋์น(์: feature/hotfix-{ํซํฝ์ค์ผ}/{๊ฐ๋ฐ์ด์๋ฒํธ}
)์์ ์ค์ ์ฝ๋ ์์ ์์
์ ์งํํฉ๋๋ค. ์ด๋ ๊ฒ ์์ ๋ ์ฝ๋๋ ๋ฆฌ๋ทฐ ๊ณผ์ ์ ๊ฑฐ์น ํ ํซํฝ์ค ๋ธ๋์น๋ก ๋จธ์ง ๋๋ฉฐ, ์ด ๋ธ๋์น๋ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ฐฐํฌ๋์ด ๊ฒ์ฆ ๊ณผ์ ์ ๊ฑฐ์น๊ฒ ๋ฉ๋๋ค.
ํซํฝ์ค๊ฐ ์๋ฃ๋๋ฉด, ํซํฝ์ค ๋ธ๋์น๋ ๋ฉ์ธ๋ผ์ธ ๋ธ๋์น๋ก ๋ฆฌ๋ฒ ์ด์ค ํ ๋จธ์ง๋ฉ๋๋ค. ์ด๋ ๋ฆด๋ฆฌ์ค ๋ธ๋์น๋ ์ํฝ ๋ธ๋์น๋ฅผ ๋ฆฌ๋ฒ ์ด์ค๋ก ๋จธ์งํ๋ ์ด์ ์ ๋์ผํฉ๋๋ค. ๋ง์ฝ, ํ์ฌ ์ถ์ ์ค๋น ๊ธฐ๊ฐ์ธ ๊ฒฝ์ฐ, ๋ฆด๋ฆฌ์ค ๋ธ๋์น์ ํซํฝ์ค ๋ธ๋์น์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐ์ํฉ๋๋ค.
Release Flow์์ ์ฐจ์ด์
Release Flow์์๋ ํซํฝ์ค๊ฐ ์ผ๋ฐ์ ์ผ๋ก ๋ฉ์ธ๋ผ์ธ ๋ธ๋์น์์ ๋ถ๊ธฐ๋์ด ๊ฐ๋ฐ๋๊ณ , ๋ค์ ๋ฉ์ธ๋ผ์ธ ๋ธ๋์น๋ก ๋จธ์ง๋ฉ๋๋ค. ๋ฆด๋ฆฌ์ค ๋ธ๋์น์์๋ ํซํฝ์ค ๋ธ๋์น์ ๋ณ๊ฒฝ ์ฌํญ์ ์ฒด๋ฆฌํฝ(cherry-pick
) ๋ฐฉ์์ผ๋ก ๊ฐ์ ธ์ต๋๋ค.
๋๊ฐ๋ฉฐ
์ด๋ฒ ๊ธ์ ์ฐ๋ฉด์ ๋๋ ์ ์ ์ด๋ค ํน์ ํ ๋ธ๋์นญ ์ ๋ต์ ์ผ๋ฅ ์ ์ผ๋ก ์ ์ฉํ ํ์๋ ์๋ค๋ ๊ฒ์ด์์ต๋๋ค. ์ ํํ ๋ธ๋์นญ ์ ๋ต์ ๋ฐฉํฅ์ฑ์ ๋ฐ๋ผ๊ฐ๋ ๋ชจ๋๊ฐ ์ฒํ ์ํฉ๊ณผ ํ๊ฒฝ์ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์, ์ด์ ๋ง๊ฒ ์ต์ ํ ์ํค๋ ๊ฒ ์ค์ํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด๋ฒ์ ์๊ฐํ ๋ฉ์์งํ๋ซํผ๊ฐ๋ฐํ์ ๋ธ๋์นญ ์ ๋ต ์ญ์ ์๋ฒฝํ์ง ์์ต๋๋ค. ์ ํฌ๋ ์ง์์ ์ผ๋ก ๋ถ์กฑํ ๋ถ๋ถ์ ๋ฐ๊ฒฌํ๊ณ , ๊ฐ์ ํด ๋๊ฐ์ผ ํฉ๋๋ค. ์๋ก์ด ๋ธ๋์นญ ์ ๋ต์ด ๋ฑ์ฅํ๊ฑฐ๋ ๊ฐ์ ๊ฐ๋ฅํ ์์๋ฅผ ๋ฐ๊ฒฌํ๋ค๋ฉด, ์ด๋ฅผ ์ ๊ทน์ ์ผ๋ก ๋ฐ์ํ์ฌ ๋ณํํ๋ ํ๊ฒฝ ์์์๋ ํจ์จ์ฑ๊ณผ ์์ ์ฑ์ ๋ชจ๋ ํ๋ณดํด์ผ ํ ๊ฒ์ ๋๋ค.
์ถ์ฒ
์ด ๊ธ์ OpenAI์ GPT-4์ ๋์์ ๋ฐ์ ์์ฑ๋์์ต๋๋ค.