CI / CD ๊ฐ๋ฐ ํ๋ก์ธ์ค
Continuous Integration(์ง์์ ์ธ ํตํฉ)
and Continuous Delivery(์ง์์ ์ธ ์ ๊ณต)
ํน์ Continuous Deployment(์ง์์ ์ธ ๋ฐฐํฌ)
์ดํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ ๋จ๊ณ๋ถํฐ ๋ฐฐํฌ ๋๊น์ง ์ด ๋ชจ๋ ๋จ๊ณ๋ค์ ์๋ํ๋ฅผ ํตํด์ ์กฐ๊ธ ๋ ํจ์จ์ ์ด๊ณ ๋น ๋ฅด๊ฒ ์ฌ์ฉ์์๊ฒ ๋น๋ฒ์ด ๋ฐฐํฌํ ์ ์๋๋ก ๋ง๋๋ ๊ฒ
CI (Continuous Integration, ์ง์์ ์ธ ํตํฉ)
merge
, build
, test
์๋ํ ๊ณผ์
๋ฒ๊ทธ ์์ ์ด๋ ์๋ก ๋ง๋๋ ๊ธฐ๋ฅ๋ค์ด main repository์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋น๋
๋๊ณ ํ
์คํธ
๋๋ฉด์ merge
๋๋ ๊ฒ์ ์๋ฏธ
๊ฐ๋ฐ์๋ค์ ์ฝ๋ ๋ณ๊ฒฝ์ฌํญ์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋น๋ฒํ๊ฒ
๋จธ์งํด์ผ ํ๋ค.
merge ์ถฉ๋์ ํผํ๊ธฐ ์ํด์ ๊ฐ๋ฐ์๋ค์ ์์ ๋จ์๋ก ๊ฐ๋ฐํ๊ณ ํตํฉํด๋๊ฐ์ผํ๋ค.
ํตํฉ์ ์ํ ๋จ๊ณ (๋น๋, ํ
์คํธ, ๋จธ์ง)์ ์๋ํ
์ฃผ๊ธฐ์ ์ผ๋ก merge๋ ์ฝ๋์ ๋ณ๊ฒฝ ์ฌํญ์ด ์๋์ผ๋ก Build๊ฐ ๋์ด์ ์ฝ๋๊ฐ ๋ณ๊ฒฝ๋ ํ์๋ ์ฝ๋๊ฐ ์ฑ๊ณต์ ์ผ๋ก Build๊ฐ ๋๋์ง ํ์ธ์ด ๋์ผํ๊ณ , ์ฝ๋์ ๋ณ๊ฒฝ์ฌํญ ๋ฟ ์๋๋ผ ์์คํ
์ ๋ค๋ฅธ ๋ฒ๊ทธ๋ฅผ ์ด๋ํ์ง ์์๋์ง ์๋์ผ๋ก test๊น์ง ๋์ด์ผ ํ๋ค.
CI ๊ตฌํ ์ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ํ ์๋ก์ด ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ๊ธฐ์ ์ผ๋ก ๋น๋/ํ
์คํธ ๋์ด ๊ณต์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ํตํฉ๋๋ค.
์ปค๋ฐํ ๋๋ง๋ค ๋น๋์ ์ผ๋ จ์ ์๋ ํ
์คํธ๊ฐ ์ด๋ฃจ์ด์ ธ ๋์์ ํ์ธํ๊ณ ๋ณ๊ฒฝ์ผ๋ก ์ธํด ๋ฌธ์ ๊ฐ ์๊ธฐ๋ ๋ถ๋ถ์ด ์๋๋ก ๋ณด์ฅํ๋ค.
์ง์์ ํตํฉ์ CI/CD ํ์ดํ๋ผ์ธ์ ๊ตฌํํ๊ธฐ ์ํ ์ฒซ ๋ฒ์งธ ๋จ๊ณ์ด๊ธฐ๋ ํ๋ค.
๊ฐ๋ฐ ๋ณ๊ฒฝ์ฌํญ์ main repo์ merge ํ๋ค.
merge ํ ์๋์ผ๋ก ํ์์ ๋ง๋ CI script๋ฅผ ํตํด ์ถ๊ฐ๋ ์ฝ๋์ ํจ๊ป repository๊ฐ build๊ฐ ๋๋ค.
build ์ฑ๊ณต ์ ํ์์ ์์ฑํ Unit test, Integration test ๋ฑ ์ฌ๋ฌ๊ฐ์ง test๋ค๋ script๋ฅผ ํตํด์ ์คํ์ด ๋๋ค.
a. build/test ์ฑ๊ณต ํ green sign์ด ๋จ๋ฉด ๋ฐฐํฌํ ๋ ๋ฐ์๋๋ค.
b. ์๋ก ์ถ๊ฐํ ์ฝ๋์ ๋ฌธ์ ๊ฐ ์์ด์ build ์คํจ ํน์ build ์ฑ๊ณต ํ ํ
์คํธ ์คํจ ์ red sign์ด ๋จ๋ฉด ๋ฌธ์ ๋ฅผ ์ผ์ผํจ ๊ฐ๋ฐ์์๊ฒ ์๋์ผ๋ก ์๋ฆผ์ ์ค๋ค.
CD (์ง์์ ์ธ ์ ๊ณต(Continuous Delivery) ๋๋ ์ง์์ ์ธ ๋ฐฐํฌ(Continuous Deployment))
๋ง์ง๋ง ๋ฐฐํฌ ๋จ๊ณ์์ ์ด๋ป๊ฒ ํ๋ฉด ์๋ํํด์ ๋ฐฐํฌ๋ฅผ ํ ์ ์์์ง ๊ณ ๋ฏผํ๋ ๋จ๊ณ
์์ ๋ ์๋ฏธ ๋ชจ๋ ํ์ดํ๋ผ์ธ์ ์ถ๊ฐ ๋จ๊ณ์ ๋ํ ์๋ํ๋ฅผ ๋ปํ์ง๋ง, ์ผ๋ง๋ ๋ง์ ์๋ํ๊ฐ ์ด๋ฃจ์ด์ง๊ณ ์๋์ง๋ฅผ ์ค๋ช
ํ๊ธฐ ์ํด ๋ณ๋๋ก ์ฌ์ฉ๋๊ธฐ๋ ํ๋ค.
Deployment : ๋ฐฐํฌ ๋จ๊ณ๋ฅผ ์๋ํ
CI๋ฅผ ๋ง์น๊ณ ๋ฆด๋ฆฌ์ฆ๊ฐ ๊ฐ๋ฅํ๋ค๋ฉด ๋ฐฐํฌ๊น์ง ์๋์ผ๋ก ์ด๋ฃจ์ด์ง๋ ๊ฒฝ์ฐ
Delivery : ๋ฐฐํฌ ๋จ๊ณ๋ฅผ ์๋ํ
CI๋ฅผ ๋ง์น๊ณ ๋ฆด๋ฆฌ์ฆ๊ฐ ๊ฐ๋ฅํ๋ค๋ฉด ๋ฐฐํฌ ๋จ๊ณ์์ ์ฌ๋(๊ฐ๋ฐ์ ํน์ ๊ฒ์ฆํ)์ ๊ฒ์ฆ์ ํตํด ์๋์ ์ผ๋ก ๋ฐฐํฌ๊ฐ ์ด๋ฃจ์ด์ง๋ ๊ฒฝ์ฐ
์ฝ๋ ๋ณ๊ฒฝ์ด ํ์ดํ๋ผ์ธ์ ์ด์ ๋จ๊ณ๋ฅผ ๋ชจ๋ ์ฑ๊ณต์ ์ผ๋ก ํต๊ณผํ๋ฉด ์๋ ๊ฐ์
์์ด ํด๋น ๋ณ๊ฒฝ ์ฌํญ์ด ํ๋ก๋์
์ ์๋์ผ๋ก ๋ฐฐํฌ๋๋ค. (Continuous Deployment)
์ง์์ ๋ฐฐํฌ๋ฅผ ์ฑํํ๋ฉด ํ์ง ์ ํ ์์ด ์ต๋ํ ๋นจ๋ฆฌ ์ฌ์ฉ์์๊ฒ ์๋ก์ด ๊ธฐ๋ฅ์ ์ ๊ณตํ ์ ์๋ค.
์ ํจ์ค (Jenkins)
Buildkite
Github Actions
Circle CI
AWS Code Deploy
Travis CI