๐ CI/CD๋?
๋งค๋ฒ ๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ฅผ ์์ ํ๊ณ ๋น๋์ ํ ์คํธ๋ฅผ ํ๊ณ ๋ฐฐํฌ๊น์ง ํ๋ค๋ฉด ์๋นํ ๋ง์ ์๊ฐ์ด ์์๋ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ git์ ์ฝ๋๋ฅผ ์ฌ๋ฆฌ๋ ๊ฒ๋ง์ผ๋ก๋ ๋น๋์ ํ ์คํธ, ๋ฐฐํฌ๊น์ง ํด์ค๋ค๋ฉด, ์ธ๋ฐ์๋ ์๊ฐ์ ๋จ์ถ์ํค๊ณ ๊ฐ๋ฐ์ ๋ ๋ง์ ์๊ฐ์ ํฌ์ํ ์ ์์ ๊ฒ์ด๋ค. ์ด๋ฅผ ์ํด ๊ณ ์๋ ๋ฐฉ๋ฒ์ด CI/CD์ด๋ค.
CI/CD ์๋น์ค๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถ, ํ ์คํธ ๋ฐ ๋ฐฐํฌ์ ์๋ํ๋ฅผ ์ ์ฉํ์ฌ ๊ฐ๋ฐ ๋ฐ ์ด์ ํ๋๊ณผ ํ ๊ฐ์ ๊ฒฉ์ฐจ๋ฅผ ํด์ํ๋ค. ๊ฐ๋ฐ์๊ฐ ๋ง๋ ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ปดํ์ผํ ๋ค์ ์ด๋ฅผ ์ํํธ์จ์ด ๊ฒฐ๊ณผ๋ฌผ์ ์ฐ๊ฒฐํ๊ณ ํจํค์งํ๊ณ , ์๋ํ๋ ํ ์คํธ๋ฅผ ํตํด ์ํํธ์จ์ด ๊ธฐ๋ฅ์ ํ์ธํ์ฌ ์๋ํ๋ ๋ฐฐํฌ ์๋น์ค๋ก ์ด๋ฅผ ์ต์ข ์ฌ์ฉ์์๊ฒ ์ ๊ณตํ๋ค.
๋ชฉํ๋ ์กฐ๊ธฐ ๊ฒฐํจ ๋ฐ๊ฒฌ์ ๋์ด๊ณ ์์ฐ์ฑ์ ๋์ด๋ฉฐ ๋ ๋น ๋ฅธ ๋ฆด๋ฆฌ์ค ์ฃผ๊ธฐ๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ผ๋ก ์ด ํ๋ก์ธ์ค๋ ์ต์ ๋ฒ์ ์ ๋ฐฐํฌํ๊ธฐ ์ ์ ์ํํธ์จ์ด ์
๋ฐ์ดํธ ๋ชจ์์ ํ๋์ ๋๊ท๋ชจ ๋ฐฐ์น๋ก ํตํฉํ๋ ๊ธฐ์กด ๋ฐฉ๋ฒ๊ณผ ๋์กฐ๋๋ค. ํ๋์ DevOps ์คํ์๋ ์ง์์ ์ธ ๊ฐ๋ฐ, ์ง์์ ์ธ ํ
์คํธ, ์ง์์ ์ธ ํตํฉ, ์ง์์ ์ธ ๋ฐฐํฌ ๋ฐ ๊ฐ๋ฐ ์๋ช
์ฃผ๊ธฐ ์ ๋ฐ์ ๊ฑธ์น ์ํํธ์จ์ด ์์ฉ ํ๋ก๊ทธ๋จ์ ์ง์์ ์ธ ๋ชจ๋ํฐ๋ง์ด ํฌํจ๋๋ค. CI/CD ํ์ดํ๋ผ์ธ์ ํ๋ DevOps ์ด์์ ์ค์ถ๋ฅผ ํ์ฑํ๋ค.
๐ CI๋?
์ดํ๋ฆฌ์ผ์ด์ ์ ๋ณ๊ฒฝ ์ฌํญ์ด ์๋์ผ๋ก ๋น๋๋๊ณ ํ ์คํธ๋์ด ๊ณต์ ๋ ํฌ์งํ ๋ฆฌ์ ๋ณํฉ๋๋ ๊ฒ.
CI(Continuous Integration)๋ ๋จ์ด ๋ป ๊ทธ๋๋ก๋ '์ง์์ ์ธ ํตํฉ'์ ์๋ฏธํ๋ฉฐ, ๊ฐ๋ฐ์์ ๊ด์ ์์๋ ๋น๋/ํ ์คํธ ์๋ํ ๊ณผ์ ์ ์๋ฏธํ๋ค. CI๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ๊ตฌํํ ๊ฒฝ์ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์๋ก์ด ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ๊ธฐ์ ์ผ๋ก ๋น๋ ๋ฐ ํ ์คํธ๋์ด ๊ณต์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ํตํฉ๋๋ฏ๋ก ์ฌ๋ฌ ๋ช ์ ๊ฐ๋ฐ์๊ฐ ๋์์ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ๊ณผ ๊ด๋ จ๋ ์ฝ๋ ์์ ์ ํ ๊ฒฝ์ฐ ์๋ก ์ถฉ๋ํ ์ ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
์ง์์ ํตํฉ์ ์คํ์ ์์ค/๋ฒ์ ๊ด๋ฆฌ ์์คํ ์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ ์ ๊ธฐ์ ์ผ๋ก ์ปค๋ฐํ์ฌ ๋ชจ๋ ์ฌ๋์๊ฒ ๋์ผ ์์ ๊ธฐ๋ฐ์ ์ ๊ณตํ๋ ๊ฒ์ผ๋ก ์์ํ๋ค. ์ปค๋ฐํ ๋๋ง๋ค ๋น๋์ ์ผ๋ จ์ ์๋ ํ ์คํธ๊ฐ ์ด๋ฃจ์ด์ ธ ๋์์ ํ์ธํ๊ณ ๋ณ๊ฒฝ์ผ๋ก ์ธํด ๋ฌธ์ ๊ฐ ์๊ธฐ๋ ๋ถ๋ถ์ด ์๋๋ก ๋ณด์ฅํ๋ค. ์ง์์ ํตํฉ์ ๊ทธ ์์ฒด๋ก ์ ์ตํ์ง๋ง CI/CD ํ์ดํ๋ผ์ธ์ ๊ตฌํํ๊ธฐ ์ํ ์ฒซ ๋ฒ์งธ ๋จ๊ณ์ด๊ธฐ๋ ํ๋ค.
๐ CD๋?
๋น๋์ ํ ์คํธ๋ฅผ ๊ฑฐ์ณ github์ ๊ฐ์ ์ ์ฅ์์ ์ ๋ก๋ํ๋ ๊ฒ.
์ฑ๊ณต์ ์ผ๋ก ๋ณํฉ๋ ๋ด์ญ์ ์ ์ฅ์ ๋ฟ ์๋๋ผ ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉํ ์ ์๋ ํ๊ฒฝ๊น์ง ๋ฐฐํฌํ๋ ๊ฒ.
CD๋ ๊ฐ๋จํ ๋งํ๋ฉด ๋ฐฐํฌ ์๋ํ ๊ณผ์ ์ด๋ค. Continuous Delivery(์ง์์ ์ธ ์๋น์ค ์ ๊ณต) ๋๋ Continuous Deployment(์ง์์ ์ธ ๋ฐฐํฌ)๋ฅผ ์๋ฏธํ๋ค. ๋ ๊ฐ์ง ์๋ฏธ ๋ชจ๋ ํ์ดํ๋ผ์ธ์ ์ถ๊ฐ ๋จ๊ณ์ ๋ํ ์๋ํ๋ฅผ ๋ปํ์ง๋ง ๋๋ก๋ ์ผ๋ง๋ ๋ง์ ์๋ํ๊ฐ ์ด๋ฃจ์ด์ง๊ณ ์๋์ง๋ฅผ ์ค๋ช ํ๊ธฐ ์ํด ๋ณ๋๋ก ์ฌ์ฉ๋๊ธฐ๋ ํ๋ค.
๐ CI/CD์ ์ข ๋ฅ
- Jenkins
- CircleCI
- TravisCI
- Github Actions
- etc
๐ CI/CD ์ ์ฉ ์ ๊ณผ ํ
CI/CD๋ฅผ ์ ์ฉํ๊ธฐ ์ ์์
1. ์ฝ๋ ์์ .
2. ๊ฐ์์ feature ๋ธ๋์น์ ์ฝ๋๋ฅผ push. (์ด๋ ํ ๋ถ๋ถ์์ ์๋ฌ๊ฐ ๋๋ ๋์น์ฑ์ง ๋ชปํจ.)
3. ๊ฐ์์ ์ฝ๋๋ฅผ git์ ์ฌ๋ฆฌ๊ณ ํตํฉ(Intergration).
4. ์๋ฌ๊ฐ ๋ฐ์ํ์ง๋ง ์ด๋ ๋ถ๋ถ์์ ์๋ฌ๊ฐ ๋ฌ๋์ง ๋ชจ๋ฅด๋ฏ๋ก ๋ค์ ์ด๋๋ถ๋ถ์ ์๋ฌ๊ฐ ์๋์ง ๋๋ฒ๊น ํ๊ณ ์ฝ๋ ์์ .
5. (1) ~ (4)์ ๊ณผ์ ์ ๋ฐ๋ณต.
6. ๋ง์ ์๊ฐ์ ํ ์ ํ์ฌ ์๋ฌ๊ฐ ํด๊ฒฐ๋์์ผ๋ฉด ๊ฐ๋ฐ์๋ค์ด ์ง์ ๋ฐฐํฌ.
CI/CD๋ฅผ ์ ์ฉํ ํ ์์
1. ์ฝ๋ ์์ .
2. ๊ฐ์์ feature ๋ธ๋์น์ ์ฝ๋๋ฅผ push.
3. git push๋ฅผ ํตํด Trigger๋์ด CI์๋ฒ์์ ์์์ Build, Test, Lint๋ฅผ ์คํํ๊ณ ๊ฒฐ๊ณผ ์ ์ก.
3. ๊ฐ๋ฐ์๋ค์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ก๋ฐ๊ณ ์๋ฌ๊ฐ ๋ ๋ถ๋ถ์ด ์๋ค๋ฉด ์๋ฌ๋ถ๋ถ์ ์์ ํ๊ณ ์ฝ๋๋ฅผ master ๋ธ๋์น์ merge.
4. master ๋ธ๋์น์ ์ฝ๋๋ฅผ mergeํ๊ณ Build, Test๊ฐ ์ ์์ ์ผ๋ก ์ํ์ด ๋์๋ค๋ฉด CI์๋ฒ์์ ์์์ Deploy ๊ณผ์ ์ ์ํ.
๐ CI/CD์ ํน์ง
- ์์ฅ ์ถ์ ๊ธฐ๊ฐ ๋จ์ถ : ํ์ ๊ธฐ๋ฅ์ ์ฐ์ ์ผ๋ก ๊ฐ๋ฐํ์ฌ ๋ฐฐํฌํ๊ณ ์ค์๊ฐ์ผ๋ก ํผ๋๋ฐฑ ๋ฐ ๊ธฐ๋ฅ์ถ๊ฐ๋ฅผ ํ์ฌ ์ถ์ ๊ธฐ๊ฐ์ ๋จ์ถํ ์ ์๋ค.
- ์ํ ๊ฐ์ : ์ง์์ ์ผ๋ก ํตํฉ ๋ฐ ๋ฐฐํฌ๋ฅผ ํ๋ฉด์ ์ํ ์์๋ฅผ ๋น ๋ฅด๊ฒ ๋ฐ๊ฒฌํ๊ณ ์ฆ๊ฐ ๋์ํ ์ ์๋ค.
- ๊ฒํ ์๊ฐ ๋จ์ถ : ์ง์์ ์ผ๋ก ํตํฉ ๋ฐ ๋ฐฐํฌ๋ฅผ ํ ์ ์์ผ๋ฏ๋ก ์ฝ๋๋ฅผ ์ ๊ธฐ์ ์ผ๋ก ๊ฒํ ๋ฐ ์์ ํ ์ ์์ด ๊ฒํ ์๊ฐ์ ๋จ์ถํ ์ ์๋ค.
- ์ฝ๋ ํ์ง ๊ฐ์ : ์ง์์ ์ธ ํตํฉ ๊ธฐ๋ฅ์ ์ํํจ์ ์์ด์ ์๋ํ ํ ์คํธ ๊ธฐ๋ฅ์ด ์์ด์ ์ฝ๋๋ฅผ ๊ธฐ๋ฅ๋จ์๋ก ์ฆ๊ฐ ํ ์คํธ ๋ฐ ์ฝ๋ ํ์ง ๊ฒ์ฌ๋ฅผ ํ ์ ์๋ค.
- ๋ ๋น ๋ฅธ ๋ฒ๊ทธ ์์ : ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ์ ๋ ์ค์๊ฐ์ผ๋ก ๋ฌธ์ ๋ฅผ ํ์ธํ์ฌ ํด๊ฒฐํ ํ ๋ฐ์์ ํ ์ ์์ด์ ๊ธฐ์กด์ ๋ฐฉ์์ ๋นํด ๋น ๋ฅด๊ฒ ๋ฒ๊ทธ๋ฅผ ์์ ํ ์ ์๋ค.
- ๋ ๊ธด๋ฐํ ํผ๋๋ฐฑ ๋ฃจํ : DevOps ์ ๊ทผ ๋ฐฉ์์ ํต์ฌ ์์์ธ ๊ธด๋ฐํ ํผ๋๋ฐฑ์ CI/CD๋ฅผ ํตํด์ ์ง์์ ์ผ๋ก ๊ด๋ฆฌ๋ฅผ ํ ์ ์๋ค.
์ถ์ฒ :