์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ๋ฉด์ ์ฝ๋๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์๋์ผ๋ก ๋น๋, ํ ์คํธ, ๋ฐฐํฌํ๋ ๊ณผ์ ์ ์๊ฐํด๋ณธ ์ ์๋์? ๋ฐ๋ก CI/CD(Continuous Integration / Continuous Deployment)์ ๋๋ค!
CI/CD๋ ๋น ๋ฅด๊ณ ์์ ์ ์ธ ์ํํธ์จ์ด ๋ฐฐํฌ๋ฅผ ์ํด ๋ฐ๋์ ํ์ํ ๊ฐ๋ฐ ๋ฐฉ์์ผ๋ก, ๊ฐ๋ฐ ํจ์จ์ฑ์ ๋์ด๊ณ , ์ค๋ฅ๋ฅผ ๋น ๋ฅด๊ฒ ๊ฐ์งํ๋ฉฐ, ์ํํธ์จ์ด ํ์ง์ ํฅ์์ํค๋ ์ญํ ์ ํฉ๋๋ค. ๐ฅ
์ค๋์ CI/CD์ ๊ฐ๋ ๊ณผ ์ญํ , ๊ทธ๋ฆฌ๊ณ ์ค๋ฌด์์ AWS CodeDeploy๋ฅผ ํ์ฉํ์ฌ ์ด๋ป๊ฒ ์๋ ๋ฐฐํฌ๋ฅผ ์ค์ ํ ์ ์๋์ง ์์๋ณด๊ฒ ์ต๋๋ค.
์ด์ ์๋ ๋ฐฐํฌํ ๋ Tar ํ์ผ์ ์คํ ์ด์ง ํ๊ฒฝ์์ ์์ถํ์ฌ ์ด์ ์๋ฒ๋ก ์ ์กํ ํ, ์์ถ์ ํด์ ํ๊ณ ๋ฐฐํฌํ๋ ๋ฐฉ์์ ์ฌ์ฉํ์์ต๋๋ค. ์ด ๋ฐฉ์์ด ๋์์ง๋ ์์์ง๋ง, ์ฌ๋ฌ ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์์ต๋๋ค.์๋ง ํ์ฌ by ํ์ฌ์๊ฒ ์ง๋ง ์ ๊ฐ ๊ทผ๋ฌดํ๊ณ ์๋ ํ์ฌ์์๋ ์๋์ผ๋ก ๋ฐฐํฌ๋ฅผ ํ์์ต๋๋ค.
์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅํ ๊ฒ์ด ๋ฐ๋ก CI/CD์ ๋๋ค.
CI๋ ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ฃผ๊ธฐ์ ์ผ๋ก ํตํฉํ๊ณ , ์ด๋ฅผ ์๋์ผ๋ก ๋น๋ํ๊ณ ํ ์คํธํ๋ ๊ณผ์ ์ ๋๋ค.
CI ๋๋ถ์ ์ฝ๋ ๋ณ๊ฒฝ์ด ๋ ๋น ๋ฅด๊ณ ์์ ํ๊ฒ ์ด๋ฃจ์ด์ง ์ ์์ต๋๋ค. ๐
CD๋ CI๋ฅผ ๊ฑฐ์น ์ฝ๋๊ฐ ์๋์ผ๋ก ํ๋ก๋์ ํ๊ฒฝ๊น์ง ๋ฐฐํฌ๋๋ ๊ณผ์ ์ ์๋ฏธํฉ๋๋ค.
CD ๋๋ถ์ ๋ฐฐํฌํ ๋๋ง๋ค ๊ธด์ฅํ ํ์ ์์ด, ์์ ์ ์ผ๋ก ์ด์ํ ์ ์์ต๋๋ค. ๐
CD(Continuous Deployment)์ ๋น์ทํ์ง๋ง, ํ๋ก๋์ ๋ฐฐํฌ ์ ์ ์๋ ์น์ธ ์ ์ฐจ๊ฐ ํฌํจ๋๋ ๋ฐฉ์์ ๋๋ค.
์ด ๋ฐฉ์์ ์์ ์๋ ๋ฐฐํฌ๊ฐ ๋ถ๋ด์ค๋ฌ์ด ๊ธฐ์ ํ๊ฒฝ์์ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค.
CI/CD ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํ๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ ๋๊ตฌ๋ค์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ชฉ์ | ๋๊ตฌ |
---|---|
CI/CD ์๋ํ | Jenkins, GitHub Actions, GitLab CI, Travis CI, CircleCI |
๋น๋ ๋ฐ ๋ฐฐํฌ | Docker, Kubernetes, AWS CodeDeploy, ArgoCD |
ํ ์คํธ ์๋ํ | JUnit, Selenium, Cypress, Jest |
๋น๋ ์ํฐํฉํธ ์ ์ฅ | AWS S3, Docker Registry, Nexus Repository |
๊ฐ ํ๊ฒฝ์ ๋ง๋ ๋๊ตฌ๋ฅผ ์ ํํ์ฌ ์ต์ ์ CI/CD ํ์ดํ๋ผ์ธ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
โ
๊ฐ๋ฐ์๊ฐ Git์ ์ฝ๋ Push & Pull Request(PR) ์์ฑ
โ
CI ์์คํ
(Jenkins, GitHub Actions ๋ฑ)์ด ์๋์ผ๋ก ์ฝ๋ ๋น๋ ๋ฐ ํ
์คํธ ์คํ
โ ๋ชจ๋ ํ ์คํธ๊ฐ ํต๊ณผ๋๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ํจํค์งํ์ฌ ๋ฐฐํฌ ์ค๋น
โ ๋ฐฐํฌ ํ๊ฒฝ์ ๋ฐ๋ผ ์๋ ๋ฐฐํฌ(Continuous Deployment) ๋๋ ์๋ ์น์ธ ํ ๋ฐฐํฌ(Continuous Delivery) ์งํ
โ
๋ฐฐํฌ ์ํ ๋ฐ ์ฑ๋ฅ ์ ๊ฒ
โ
์ค๋ฅ ๋ฐ์ ์ ์๋ ๋กค๋ฐฑ ์คํ
์ด ๊ณผ์ ์ ํตํด ์ง์์ ์ธ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ๊ณ , ๋ณ๊ฒฝ ์ฌํญ์ด ์ค์๊ฐ์ผ๋ก ์ ์ฉ๋ ์ ์์ต๋๋ค. ๐ฅ
โ
๊ฐ๋ฐ์๊ฐ GitHub ๋๋ GitLab์ ์ฝ๋ Push & PR ์์ฑ
โ
GitHub Actions, Jenkins ๋ฑ์ด ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ์งํ๊ณ ํธ๋ฆฌ๊ฑฐ ํ์ฑํ
โ
์ฝ๋๊ฐ ๋น๋๋๊ณ ์ ๋ ํ
์คํธ ๋ฐ ํตํฉ ํ
์คํธ ์คํ
โ
์ฑ๊ณต์ ์ผ๋ก ํ
์คํธ๊ฐ ์๋ฃ๋๋ฉด ๋ฐฐํฌ ์ค๋น ์์
โ
์ ํ๋ฆฌ์ผ์ด์
์ ํจํค์งํ๊ณ , AWS S3 ๋๋ Docker Registry์ ์
๋ก๋
โ
CodeDeploy๊ฐ ์๋ก์ด ๋ฐฐํฌ ํจํค์ง๋ฅผ ๊ฐ์ง
โ
CodeDeploy๊ฐ ๋ฐฐํฌ ํธ๋ฆฌ๊ฑฐ๋ฅผ ๊ฐ์งํ๊ณ , ์ง์ ๋ EC2 ์ธ์คํด์ค ๋๋ ์ปจํ
์ด๋ ํ๊ฒฝ์ผ๋ก ๋ฐฐํฌ ์งํ
โ
๋ฐฐํฌ ์๋ฃ ํ ์ ํ๋ฆฌ์ผ์ด์
์ํ ํ์ธ
โ
ํ์ ์ ๋กค๋ฐฑ ์คํํ์ฌ ์์ ์ฑ ํ๋ณด
AWS CodeDeploy๋ฅผ ํ์ฉํ๋ฉด ์ฝ๋ ๋ณ๊ฒฝ์ ๋น ๋ฅด๊ณ ์์ ์ ์ผ๋ก ๋ฐฐํฌํ ์ ์์ผ๋ฉฐ, ์ค๋ฅ ๋ฐ์ ์ ์๋ ๋ณต๊ตฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ์๋น์ค ์์ ์ฑ์ ๋์ผ ์ ์์ต๋๋ค. ๐ฅ
CI/CD๋ ์ํํธ์จ์ด ๊ฐ๋ฐ๊ณผ ๋ฐฐํฌ๋ฅผ ์๋ํํ์ฌ ํ์ง์ ๋์ด๊ณ , ๊ฐ๋ฐ ์๋๋ฅผ ๊ฐ์ํ๋ ํ์ ๊ธฐ์ ์ ๋๋ค.
๐ CI/CD & AWS CodeDeploy๋ฅผ ๋์
ํ๋ฉด?
โ ๋ ๋น ๋ฅด๊ฒ ๋ฐฐํฌ ๊ฐ๋ฅ
โ ๊ฐ๋ฐ๊ณผ ๋ฐฐํฌ ์ฌ์ด์ ๋ณ๋ชฉ ํ์ ์ ๊ฑฐ
โ ์ํํธ์จ์ด ํ์ง ํฅ์
โ ๊ฐ๋ฐ์๊ฐ ๋ ๋์ ์ฝ๋์ ์ง์คํ ์ ์์
CI/CD๋ฅผ ์ ์ฉํ๋ ๊ณผ์ ์ ์ด๋ ต์ง ์์ผ๋ฉฐ, ์ฒ์๋ถํฐ ์๋ฒฝํ ์๋ํ๊ฐ ์๋๋๋ผ๋ ์ ์ง์ ์ผ๋ก ์ ์ฉํ ์ ์์ต๋๋ค. ์ง๊ธ ๋ฐ๋ก CI/CD๋ฅผ ๋์ ํด๋ณด์ธ์! ๐ฏ