์๋ ํ์ธ์ ๊ตฌ๋ ์๋, DevOps ์์๊ณผ ๊ธฐ์ ์ง์์ ์ ๋ฆฌํด์ ๊ณต์ ํด๋๋ฆฌ๋ DevOps ์ฌํ์ ์ํ ์์์ง์ ๋๋ค.
๋ณดํต CI/CD(์ง์์ ํตํฉ/์ง์์ ๋ฐฐํฌ)๋ผ๊ณ ํ๋ฉด, ๋ง์ ์ฌ๋๋ค์ด ํจ๊ป ๊ฐ๋ฐํ๋ ๋๊ท๋ชจ ํ๋ก์ ํธ์์ ์ฌ์ฉํ๋ค๋ ๋๋์ด ์ธ์์ด ๊ฐํ๋ฐ์.
ํ์ง๋ง ์๊ท๋ชจ ํ๋ก์ ํธ๋ ์ฌ์ด๋ ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐํ๋๋ผ๋ CI/CD๋ฅผ ๋์ ํ๋ฉด ๋ฐฐํฌ ๊ณผ์ ์์ ๋ฐ์ํ ์ ์๋ ํด๋จผ ์๋ฌ๋ฅผ ์ค์ด๊ณ ์์ ์ ์ธ ๊ฐ๋ฐ ๋ฐ ์ด์์ด ๊ฐ๋ฅํ๋ค๋ ์ฌ์ค, ์๊ณ ๊ณ์ จ๋์?
ํ๋ก์ ํธ ์ฑ๊ฒฉ์ ๋ฐ๋ผ ๋น๋ ํ ์คํธ๋ถํฐ ์ ๋ ํ ์คํธ, ๋ฐฐํฌ ์์ ๊น์ง ์๋ํํ ์ ์๊ธฐ ๋๋ฌธ์, ์์ ์ ์ธ ํ๋ก์ ํธ ์งํ์ ์ํ๋ค๋ฉด ๊ฐ๋ฐ ์ด๊ธฐ์ CI/CD ๋์ ์ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ฌผ๋ก CI/CD ํด์ด ์๋ ๋ค์ํ๋ค๋ณด๋ ๊ท๋ชจ๊ฐ ํฌ์ง ์์ ํ๋ก์ ํธ์์ ์ฌ์ฉํ CI/CD ํด์ ๊ณ ๋ฅด๊ธฐ๋ ์ฝ์ง ์์ต๋๋ค.
์๊ท๋ชจ ํ๋ก์ ํธ ์งํ์ ๋ฌด์๋ณด๋ค ์ค์ํ ๊ฒ์ด ์์ฐ์ธ ๋งํผ, ๋ฌด๋ฃ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ํด์ ์ค์ ์ ์ผ๋ก ๋ณด๋ฉด ์ข๊ฒ ์ฃ ?
๊ทธ๋์ ์ด๋ฒ ๊ธ์์๋ 1์ธ ๊ฐ๋ฐ ๋ฐ ์ฌ์ด๋ ํ๋ก์ ํธ์ ์ ํฉํ ๋ฌด๋ฃ CI/CD ํด์ธ GitHub Actions, GitLab Runner, Jenkins๋ฅผ ๋น๊ตํด๋ณด๊ณ , ๊ฐ๊ฐ์ ํน์ง๊ณผ ์ฅ์ ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
โพ๏ธ์ ๊ทผ์ฑ์ด ๋ฐ์ด๋ GitHub Actions
GitHub Actions๋ GitHub ํ๋ซํผ ๋ด์์ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ CI/CD ํด์ ๋๋ค.
GitHub๋ ์ ์ธ๊ณ ์๋ง์ ๊ฐ๋ฐ์๋ค์ด ์์ค์ฝ๋๋ฅผ ๊ด๋ฆฌํ๊ณ ํ์ ํ๋ ํ๋ซํผ์ผ๋ก, ์ด๋ฏธ ๋ง์ ๊ฐ๋ฐ์๋ค์ด ์ฌ์ฉํ๊ณ ์๋๋ฐ์.
์ด๋ฐ GitHub์์ ์๋น์คํ๊ณ ์๋ GitHub Actions์ ํด๋ผ์ฐ๋ ํ๊ฒฝ์์ ์ ๊ณต๋๊ธฐ ๋๋ฌธ์, ๋ณ๋์ ์๋ฒ ์์ด GitHub ๋ ํ์งํ ๋ฆฌ ๋ด์์ CI/CD ํ์ดํ๋ผ์ธ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ๊ทธ๋์ ์ค์ ๊ณผ ์ ์ง ๊ด๋ฆฌ๊ฐ ๊ฐํธํ์ฃ .
๋ํ GitHub์ ๋ค์ํ API์ ์ปค๋ฎค๋ํฐ์์ ๊ฐ๋ฐ๋ ๋ค์ํ ํ๋ฌ๊ทธ์ธ(์ก์ )์ ํ์ฉํด ๋น ๋ฅด๊ฒ ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํ ์ ์๋ค๋ ์ฅ์ ๋ ์์ต๋๋ค.
GitHub Actions์ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ณต๊ฐ ๋ ํ์งํ ๋ฆฌ(Public Repository)์ ๋ํด์๋ ์ ํ ์์ด ๋ฌด๋ฃ๋ก ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
๋ค๋ง, ๋น๊ณต๊ฐ ๋ ํ์งํ ๋ฆฌ(Private Repository)์ ๋ํด์๋ ์๋ ์ ํ ๋ฒ์ ๋ด์์ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
- GitHub Actions์ด ์ฌ์ฉ ๊ฐ๋ฅํ ์คํ ๋ฆฌ์ง ์ต๋ 500MB๊น์ง ์ ๊ณต
- ๋งค์ ์ต๋ 2,000๋ถ๊น์ง ์ฌ์ฉ ๊ฐ๋ฅ
๐ฆ์ข ๋ ์์ ์ ์ธ DevOps ํ๋ซํผ์ ํ์ฉํ๊ณ ์ถ๋ค๋ฉด, GitLab Runner
GitLab Runner๋ GitLab์์ ์ ๊ณตํ๋ CI/CD ๋๊ตฌ๋ก, ํด๋ผ์ฐ๋ ๋ฐ ์ค์นํ ๋ ๊ฐ์ง ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
GitLab์ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ์ผ๋ก ์ ๊ณต๋๊ฑฐ๋, ์์ฒด ์๋ฒ์ ์ค์นํ ์ ์๋ ์คํ์์ค DevOps ํ๋ซํผ์ธ๋ฐ์. ์ฝ๋ ๊ด๋ฆฌ๋ถํฐ CI/CD๊น์ง ํตํฉ๋ ์๋ฃจ์ ์ ์ ๊ณตํ๋ ํด์ ๋๋ค.
GitLab Runner๋ GitLab์ ํ์ดํ๋ผ์ธ์ ์คํํ๋ ์์ด์ ํธ๋ก, GitLab์ ํด๋ผ์ฐ๋ ์๋น์ค๋ฅผ ์ด์ฉํ๋ฉด ๋ณ๋์ ์๋ฒ ์์ด๋ CI/CD๋ฅผ ์ํํ ์ ์์ต๋๋ค.
๋ค๋ง, ํด๋ผ์ฐ๋๋ก ์ ๊ณต๋๋ GitLab Runner ์ญ์ ๋งค์ ์ต๋ 400๋ถ ๋ฌด๋ฃ ์ฌ์ฉ ๊ฐ๋ฅ์ด๋ผ๋ ์ ํ์ด ์กด์ฌํ๋๋ฐ์.
๋ง์ฝ GitLab์ ์คํ์์ค(Community Edition) ๋ฒ์ ์ ๋ณ๋์ ์์ฒด ์๋ฒ์ ์ค์นํ๋ฉด ์ ํ ์์ด ๋ฌด๋ฃ๋ก CI/CD ์คํ์ด ๊ฐ๋ฅํฉ๋๋ค.
ํ์ง๋ง ์ด๊ธฐ ์ค์ ์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ณ ์๋ฒ ๋ฆฌ์์ค๊ฐ ์ง์์ ์ผ๋ก ์๋ชจ๋๊ธฐ ๋๋ฌธ์ ์ฝ๊ฒ ์ ๊ทผํ ์ ์๋ ๋ฐฉ๋ฒ์ ์๋๋๋ค.
๐คต์ด๋ฏธ ๋ํ์ ์ธ CI/CD ํด๋ก ์ ๋ช ํ Jenkins
Jenkins๋ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์คํ์์ค CI/CD ๋๊ตฌ ์ค ํ๋๋ก, ๋ณ๋์ ์๋ฒ์ ์ค์นํ์ฌ ์ฌ์ฉํ๋ ๋ฐฉ์์ ๋๋ค.
Jenkins๋ ์ค๋ ๊ธฐ๊ฐ ๋์ ์คํ์์ค ํ๋ก์ ํธ๋ก์ ๊ฐ๋ฐ๋์๊ธฐ ๋๋ฌธ์ ๋ค์ํ ํ๋ฌ๊ทธ์ธ์ ํตํด ๊ฑฐ์ ๋ชจ๋ CI/CD ์๊ตฌ ์ฌํญ์ ์ง์ํ๋ฉฐ, ์ปค์คํฐ๋ง์ด์ง์ด ์์ ๋กญ์ต๋๋ค.
์คํ์์ค์ด๊ธฐ ๋๋ฌธ์ ๋น์ฉ ๋ถ๋ด์ด ์๋ค๋ ์ฅ์ ๋ ์๋๋ฐ์. ๋ค๋ง GitLab์ CE ๋ฒ์ ์ ์ค์นํ๋ ๊ฒฝ์ฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก, ์์ฒด ์๋ฒ ๊ตฌ์ถ ๋ฐ ์ ์ง ๊ด๋ฆฌ๊ฐ ํ์ํฉ๋๋ค.
๊ฒฐ๋ก
์ง๊ธ๊น์ง ์ดํด๋ณธ 3๊ฐ์ง CI/CD ํด์ ์ ๊ณต ๋ฐฉ์, ๋น์ฉ, ๋์ ์ฉ์ด์ฑ ์ธก๋ฉด์์ ๋น๊ตํด๋ณด๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
- GitHub Actions:
- ์ ๊ณต ๋ฐฉ์: GitHub ํ๋ซํผ ๋ด์์ ๋ฐ๋ก ์ ๊ณต
- ๋น์ฉ: ๊ณต๊ฐ ๋ฆฌํฌ์งํ ๋ฆฌ๋ ๋ฌด์ ํ, ๋น๊ณต๊ฐ ๋ฆฌํฌ์งํ ๋ฆฌ๋ ๋ฌด๋ฃ ํ ๋น๋(์ 2,000๋ถ) ๋ด์์ ๋ฌด๋ฃ
- ๋์ ์ฉ์ด์ฑ: ๋ณ๋์ ์๋ฒ ์์ด ์ฆ์ ์ฌ์ฉ ๊ฐ๋ฅํ์ฌ ์๊ท๋ชจ ํ๋ก์ ํธ์ ์ ํฉ
- GitLab Runner:
- ์ ๊ณต ๋ฐฉ์: GitLab์ ํด๋ผ์ฐ๋ ์๋น์ค์ ์์ฒด ์๋ฒ ์ค์นํ ๋ ๊ฐ์ง ์ต์ ์ ๊ณต
- ๋น์ฉ: ํด๋ผ์ฐ๋ ์๋น์ค๋ Free ํ๋์ผ๋ก ์ 400๋ถ ์ ๊ณต, ๋ฌด์ ํ ์ฌ์ฉ์ ์ํ๋ฉด ์์ฒด ์๋ฒ์ ์ค์น ํ์
- ๋์ ์ฉ์ด์ฑ: ํด๋ผ์ฐ๋ ์๋น์ค๋ ๋์ ์ด ๋น๊ต์ ๊ฐํธํ์ง๋ง, ์์ฒด ์๋ฒ ์ค์น ์ ์ด๊ธฐ ์ค์ ๋ฐ ์ ์ง ๊ด๋ฆฌ ํ์
- Jenkins:
- ์ ๊ณต ๋ฐฉ์: ๋ณ๋์ ์๋ฒ์ ์ค์น
- ๋น์ฉ: ์คํ์์ค๋ก ๋ฌด๋ฃ์ง๋ง, ์์ฒด ์๋ฒ ๊ตฌ์ถ ๋ฐ ์ ์ง์ ์ถ๊ฐ ๋น์ฉ ๋ฐ์
- ๋์ ์ฉ์ด์ฑ: ์์ ๋๊ฐ ๋์ผ๋, ์ด๊ธฐ ์ค์ ๋ฐ ์ ์ง ๊ด๋ฆฌ์ ๋ฆฌ์์ค๊ฐ ํ์
์ง๊ธ๊น์ง ๋น๊ตํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด, ๋ง์ฝ ๋ณ๋์ ์๋ฒ ์์ด ๋น ๋ฅด๊ฒ CI/CD๋ฅผ ๋์ ํ๊ณ ์ ํ๋ค๋ฉด GitHub Actions๊ฐ ๊ฐ์ฅ ์ ํฉํ ์ ํ์์ ์ ์ ์์ต๋๋ค.
๊ณต๊ฐ ๋ ํ์งํ ๋ฆฌ์์๋ CI/CD๋ฅผ ์ ํ ์์ด ๋ฌด๋ฃ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ, ๋น๊ณต๊ฐ ๋ ํ์งํ ๋ฆฌ๋ผ๊ณ ํ๋๋ผ๋ ์ 2,000๋ถ์ด๋ผ๋ ๊ฐ์ฅ ๋ง์ ์ฌ์ฉ๋์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ธ๋ฐ์.
๊ฒ๋ค๊ฐ GitHub์ ์ด๋ฏธ ์๋ง์ ๊ฐ๋ฐ ํ๋ก์ ํธ๊ฐ ์ ์ฅ๋๋ ๊ณณ์ด๊ธฐ ๋๋ฌธ์ ์ ๊ทผ์ฑ๋ ์ฐ์ํฉ๋๋ค.
๋ง์ฝ ์์ฒด ์๋ฒ๋ฅผ ์ด์ํ ์ ์๊ณ , ๋ ์ ์ฐํ ์ปค์คํฐ๋ง์ด์ง์ด ํ์ํ๋ค๋ฉด GitLab Runner๋ Jenkins๋ฅผ ๊ณ ๋ คํ ์ ์์ต๋๋ค.
๋จ, ์ด ๊ฒฝ์ฐ์๋ ์ด๊ธฐ ์ค์ ๋ฐ ์ ์ง ๊ด๋ฆฌ์ ๋ค์ด๊ฐ๋ ๋ฆฌ์์ค๋ฅผ ๊ณ ๋ คํด์ผ ํ ๊ฒ์ ๋๋ค.
๐ญ๋ง์น๋ฉฐ...
์ด๋ฒ ์์์ง์์๋ ์ฌ์ด๋ ํ๋ก์ ํธ์ ์๊ท๋ชจ ๊ฐ๋ฐ ํ๋ก์ ํธ์์๋ ํ์ฉํ ์ ์๋ ๋ฌด๋ฃ CI/CD ํด 3๊ฐ์ง๋ฅผ ๋น๊ตํ๋ฉฐ ์ดํด๋ดค๋๋ฐ์.
ํน์ ์ด๋ฒ ๋ด์ฉ ๊ด๋ จํด์ ๋ ๊ถ๊ธํ ์ ์ด ์์ผ์๋ค๋ฉด ์๋ ๋ฉ์ผ๋ฆฌ ๋๊ธ ๋จ๊ฒจ์ฃผ์ธ์.
๊ทธ๋ผ, ๋ค์ ์์์ง์์ ๋ณด๋ค ์์ฐจ๊ณ ํฅ๋ฏธ๋ก์ด ๋ด์ฉ์ผ๋ก ์ฐพ์๋ต๊ฒ ์ต๋๋ค.
์ค๋๋ ๊ฐ์ฌํฉ๋๋ค, ๊ตฌ๋ ์๋ ๐บ
๐References
์๊ฒฌ์ ๋จ๊ฒจ์ฃผ์ธ์