CI/CD ๋์ ๊ธฐ-1. CI/CD ๋ feat. ์ฐ๋ฆฌ ํ์ ๋ธ๋์น ํ๋ก์ฐ ์๊ฐ
CI/CD๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ๋จ๊ณ๋ฅผ ์๋ํํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์ฑ ์งง์ ์ฃผ๊ธฐ๋ก ๊ณ ๊ฐ์๊ฒ ์ ๊ณตํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. CI/CD์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ง์์ ์ธ ํตํฉ, ์ง์์ ์ธ ์๋น์ค ์ ๊ณต, ์ง์์ ์ธ ๋ฐฐํฌ์ ๋๋ค. - redhat, CI/CD๋?
์ ๋ ๋ฐ๋ธ์ฝ์ค์์ ์งํํ ํ ํ๋ก์ ํธ์์ CI/CD ๋ฐ ์ธํ๋ผ ๊ฐ๋ฐ์ ๋งก์์ต๋๋ค. ๊ทธ๋์ ๊ฒฝํ๊ธฐ๋ฅผ 5๋ถ์ ๊ฑธ์ณ์ ์ ๋ฆฌํ๋ ค๊ณ ํฉ๋๋ค. 1๋ถ์์๋ CI/CD์ ๊ฐ๋ ๊ณผ ํ์์ฑ, ๊ทธ๋ฆฌ๊ณ ๊ธฐ์ ์ ํ ์ด์ ์ ํจ๊ป ํ์ ๋ธ๋์น ํ๋ก์ฐ ์๊ฐ๋ฅผ ๋ด์ผ๋ ค๊ณ ํฉ๋๋ค.
1. CI / CD๋
์ฌ๋ฌ ๋ช ์ด์ ๊ฐ๋ฐํ ์ฝ๋๋ฅผ ํ๊บผ๋ฒ์ ํตํฉํ๋ ๊ณผ์ ์ ๊น๋ค๋กญ๊ณ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ธฐ๋ ํฉ๋๋ค. ๋ํ ๊ฐ๋ฐ ๊ณผ์ ์ด ๊ธธ์ด์ง๋ฉด ํตํฉ์ ์ด๋ ค์์ ์ปค์ง๊ณ , ์ค๋ฅ ๋ฐ์์ ์ํ์ด ์ฆ๊ฐํฉ๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์ผ๋ก CI/CD๋ ์๋ก์ด ์ฝ๋์ ํตํฉ์ผ๋ก ์ธํด, ๊ฐ๋ฐ ๋ฐ ์ด์ํ์ ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
CI, Continuous Integration
- ์ง์์ ํตํฉ์ ์์ ๋จ์๋ก ์ฝ๋๋ฅผ ์์๋ก ๋น๋ ๋ฐ ํ ์คํธํ๊ณ ๋ ํฌ์งํ ๋ฆฌ์ ํตํฉํ๋ ๊ณผ์ ์ ๋๋ค
- ๊ธฐ์กด ์ฝ๋์ ์๋ก์ด ์ฝ๋ ๊ฐ์ ์ถฉ๋์ด ๋ฐ์ํ๋ฉด, CI๋ฅผ ํตํด ๋ฒ๊ทธ๋ฅผ ๋ ๋น ๋ฅด๊ณ ์์ฃผ ์์ ์ด ๊ฐ๋ฅํฉ๋๋ค
CD, Continuous Delivery
- ์ง์์ ์ ๊ณต์ ํตํฉ๋ ์ฝ๋๋ฅผ ๋ ํฌ์งํ ๋ฆฌ์ ์๋์ผ๋ก ๋ฆด๋ฆฌ์ฆํ๋ ๊ณผ์ ์ ๋๋ค
- ํ๋ก๋์ ํ๊ฒฝ์ผ๋ก ๋ฐฐํฌํ ์ค๋น๊ฐ ๋์ด์๋ ์ฝ๋๋ฅผ ํ๋ณดํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค
CD, Continuous Deploy
- ์ง์์ ๋ฐฐํฌ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ํ๋ก๋์ ์ผ๋ก ๋ฆด๋ฆฌ์ฆํ๋ ์์ ์ ์๋ํํฉ๋๋ค
- ๊ฐ๋ฐ์๊ฐ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ ๋ฐ์ดํธ ํ ํ ํ๋ก๋์ ํ๊ฒฝ์์ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ฐ๋ก ์คํํ ์ ์์ด, ์ฌ์ฉ์์ ํผ๋๋ฐฑ์ ์ง์์ ์ผ๋ก ์์ ํ๊ณ ํตํฉํ๋ ์ผ์ด ์์ํด์ง๋๋ค
ํ์์ฑ
์ฌ๋ฌ ๋ถ๊ธฐ์ ์ฝ๋๋ฅผ ํตํฉํ ๋ ๋ฐ์ํ๋ ๋ฐ๋ณต์ ์ธ ์์์ ์ ๋ง์ ์๊ฐ๊ณผ ๋ ธ๋ ฅ์ด ์์๋ฉ๋๋ค. ๊ธฐ์กด ์ฝ๋์ ์๋ก์ด ์ฝ๋ ๊ฐ์ ์ถฉ๋์ด ๋ฐ์ํด๋, ๋์ฑ ์์ฃผ ๋น ๋ฅด๊ฒ ํด๊ฒฐํ ์ ์์ต๋๋ค. CI/CD ์๋ํ๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ํญ์ ์ต์ ์ํ๋ก ์ ์งํ ์ ์์ผ๋ฉฐ, ๊ฐ๋ฐ์๋ค์ ์๋น์ค ๊ฐ๋ฐ์ ๋ ์ง์ค ํ ์ ์์ต๋๋ค.
2. CI / CD ๋น๊ต ๋ถ์ : Jenkins vs Github Action
๋ํ์ ์ธ CI/CD ๋๊ตฌ์๋ Jenkins์ Github Action๊ฐ ์์ต๋๋ค.
Jenkins
- ๋ฌด๋ฃ ์คํ์์ค ์๋ํ ์๋ฒ์ ๋๋ค
- ํ์ดํ๋ผ์ธ์ ์ฌ์ฉํด ์์ค์ฝ๋ ๋ ํฌ์งํ ๋ฆฌ์ ๋ํ ์ง์์ ์ธ ํตํฉ๊ณผ ๋ฐฐํฌ๋ฅผ ๋ฌด๋ฃ๋ก ์ ๊ณตํฉ๋๋ค
- ๋์ ๋ณด๋ ๊ธฐ๋ฅ๊ณผ ๋ค์ํ ํ๋ฌ๊ทธ์ธ์ ์ ๊ณตํฉ๋๋ค
Github Action
- Github์์ ์ ๊ณตํ๋ SaaS(Software as a Service) ์ ๋๋ค
- ๋ชจ๋ ํ๋ซํผ์์์ ํ๋ก์ ํธ ๋น๋, ํ ์คํธ, ๋ฐฐํฌ๋ฅผ ์ฝ๊ฒ ์๋ํ ํ ์ ์์ต๋๋ค
- Github์์ ์ผ์ด๋๋ ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก, ์ํฌํ๋ก์ฐ๋ฅผ ๋ง๋ค์ด์ ์๋ํํ๋ ๋๊ตฌ์ ๋๋ค
์ต์ข ๊ฒฐ์ : Github Action
๊ฒฐ์ ์ ์์ด์ ๊ฐ์ฅ ์ค์ํ๊ฒ ์๊ฐํ๋ ๋ถ๋ถ์ “๊ฐ๋จํจ”์ด์์ต๋๋ค. ์ฐ๋ฆฌ ํ๋ก์ ํธ๋ 2-3์ฃผ์ ์งง์ ๊ฐ๋ฐ ๊ธฐ๊ฐ์ ๊ฐ์ง๊ณ ์์๊ณ , ํ๋ก์ ํธ ๋ชฉ์ ์ Spring์ ์ฌ์ฉํ๋ ๋ฐฑ์๋ ๊ฐ๋ฐ์ด ์ค์ฌ์ด ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
1. ํด๋ผ์ฐ๋์์ ๋์ํ๋ฏ๋ก, ์ด๋ค ์ค์น๋ ํ์ํ์ง ์๋ค
Jenkins๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์๋ฒ๋ฅผ ๋์์ผ ํฉ๋๋ค. ํ์ง๋ง Github Action์ ํด๋ผ์ฐ๋์์ ์๋ํ๋ฉฐ, ์ค์ ๊ณผ์ ์ด ํจ์ฌ ๊ฐ๋จํฉ๋๋ค.
2. Github ์ด๋ฒคํธ์ ๋ํด ๋น ๋ฅธ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค
ํ์ Github Action์ ์ฌ์ฉํด ํ๋ก์ ํธ๋ฅผ ์งํํ๋๋ฐ, ์ด๋ ๋ฐ์ํ๋ ๋ชจ๋ ์ด๋ฒคํธ๋ฅผ ํตํด Github Action์ ์คํํ ์ ์์ต๋๋ค.
3. Github์ ์ฌ์ฉํด ๊ฐ๋จํ๊ฒ ๋ณด์ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค
Github์ ์ฐ๊ฒฐ๋์ด ์์ด Github ๊ณ์ ์ผ๋ก ๊ถํ๊ณผ ๊ด๋ฆฌ ์์คํ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. Jenkins๋ ์ง์ ๋ณด์ ์ทจ์ฝ์ ์ ๊ด๋ฆฌํด์ผ ํฉ๋๋ค.
3. ํ์ ๊น ๋ธ๋์น ํ๋ก์ฐ ์๊ฐ
ํ์ ๊น ๋ธ๋์น ํ๋ก์ฐ๋ ์์ ๊ฐ์ต๋๋ค. ํด๋น ๊ณผ์ ์์ github action์ด ์ ์ฉ๋๋ ๋ถ๋ถ์ ๋ํด์ ์๊ฐํ๋ ค๊ณ ํฉ๋๋ค.
ํ์ ๋ธ๋์น๋ ์ธ ๊ฐ์ง ์ข ๋ฅ๋ก ๋๋ฉ๋๋ค.
- Main : ์ฃผ์ ๋ธ๋์น๋ก, ์คํ๋ฆฐํธ๋ฅผ ๊ธฐ๋กํ๋ ๋ธ๋์น
- Develop : ์ฃผ์ ๋ธ๋์น๋ก, ๋ฆด๋ฆฌ์ฆ์ ๋ฐฐํฌ๊ฐ ์ด๋ฃจ์ด์ง๋ ๋ธ๋์น
- Feature : ์ด์๋ฅผ ๋จ์๋ก ๋ง๋ค์ด์ง๋ฉฐ, ์ค์ ๋ก ๊ฐ๋ฐ์ด ์ด๋ฃจ์ด์ง๋ ๋ธ๋์น
Feature → (pull request) → Develop
๊ฐ์ฅ ๋จผ์ ๊ตฌํํ๊ณ ์ ํ๋ ๊ธฐ๋ฅ์ ์ด์ ๋จ์๋ก ์ ๋ฆฌํ๊ณ , ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก feature ๋ธ๋์น๋ฅผ ๋ง๋ค์ด ๋ถ์ ์๋ ๊ฐ์ ๊ฐ๋ฐ์ ์งํํ์ต๋๋ค. ์ดํ feature ๋ธ๋์น์ ๊ฐ๋ฐ์ด ์ข ๋ฃ๋๋ฉด dev์ pull request๋ฅผ ์์ฒญํฉ๋๋ค. github action์ ํตํด, ํด๋น ๋ณ๊ฒฝ ์ฌํญ์ ๋ํด ํ ์คํธ์ ๋น๋๋ฅผ ์งํํ๋ฉฐ ๊ฒ์ฆํฉ๋๋ค.
Feature → (push) → Develop
๋ฌธ์ ๊ฐ ์๋ค๊ณ ํ๋จ๋ ํด๋น feature์ dev์ ํตํฉ๋ฉ๋๋ค. ์ด๋ dev ๋ธ๋์น๋ push(merge)๊ฐ ๋๋ฉด, github action์ ํตํด CI/CD๋ฅผ ์งํํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋์ ๊ฐ๋ฐ์ด ํตํฉ๋๋ฉด ์๋์ผ๋ก ๋น๋์ ํ ์คํธ, ๋ฆด๋ฆฌ์ฆ, ๋ฐฐํฌ๋ฅผ ์งํํฉ๋๋ค. ๋์์ ํตํฉ๋ feature ๋ธ๋์น๋ ์ญ์ ๋ฉ๋๋ค. ์งง์ ์๊ฐ ๋ด์ ๋ณด๋ค ๋ง์ ๋ฆด๋ฆฌ์ฆ์ ๋ฐฐํฌ๋ฅผ ๊ฒฝํํ๊ธฐ ์ํด์ dev์์ ๋ฐ๋ก ๋ฆด๋ฆฌ์ฆ์ ๋ฐฐํฌ๋ฅผ ์งํํ๋ ํ๋ก์ฐ๋ฅผ ๊ณํํ์ต๋๋ค.
4. ๋ง๋ฌด๋ฆฌ
์ด๋ ๊ฒ CI/CD ๋๊ตฌ๋ก Github Action์ ์ฌ์ฉํ ๊ณผ์ ๊ณผ ๊น ๋ธ๋์น ํ๋ก์ฐ๋ฅผ ์๊ฐํ๋ฉด์ ๋๋ต์ ์ธ ์ ์ฉ ํ๋ฆ๋ ์ค๋ช ํด ๋ณด์์ต๋๋ค. ๋ค์ ํธ์๋ docker์ docker compose๋ฅผ ์ค์ฌ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์ด๋ป๊ฒ ๋ฆด๋ฆฌ์ฆํ๊ณ ๋ฐฐํฌํ๋์ง์ ๋ํด ์ค๋ช ํ๋ ค๊ณ ํฉ๋๋ค.
5. ๋ ํผ๋ฐ์ค
https://www.redhat.com/ko/topics/devops/what-is-ci-cd
https://www.hanbit.co.kr/media/channel/view.html?cms_code=CMS2262224323