๊ฐ๋จํ๊ฒ ๋งํ๋ฉด
๊ฐ๋ฐ์ ํ์ ์ํด ๋ง๋ค์ด์ง ๊ฒฐ๊ณผ๋ฌผ์ ๋ํด ์ง์์ ์ธ ํตํฉ(CI)๊ณผ ์ง์์ ์ธ ๋ฐฐํฌ(CD)๋ฅผ ํ๋ ํ๋ก์ธ์ค์ด๋ค.
1. CI (Continuous Integration)
CI๋ ์์ ๋ ์ฝ๋์ ๋น๋, ํ ์คํธ, ํจํค์ง ์์ ์ ์๋ํ ๊ณผ์ ์ ๋จ๊ณ์ด๋ค.
์์ ๋จ์๋ก ์ฌ๋ฌ๋ฒ ์ง์์ ์ผ๋ก ํตํฉํ์ฌ ๋น๋, ํ ์คํธ ๋์ด์ ์ฌ๋ฌ ๊ฐ๋ฐ์๊ฐ ๊ณต์ ํ๋ ๋ ํผ์งํ ๋ฆฌ์ ํตํฉ๋๋ฏ๋ก ์ฌ๋ฌ ๊ฐ๋ฐ์๊ฐ ๊ฐ์ ์ฝ๋์ ๋ํด์ ์์ ํ ๊ฒฝ์ฐ ๋ฐ์ํ ์ ์๋ ์ถฉ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
2. CD
Continuous Delivery์ Continuous Deployment ๋ ๊ฐ์ง ์๋ฏธ๊ฐ ์๋ค.
(1) Continuous Delivery
CI๋ฅผ ํตํด์ ์ป์ ํตํฉ๋ ๊ฒฐ๊ณผ๋ฌผ์ด ๊ณ ๊ฐ์๊ฒ ๋ฐฐํฌ๋๊ธฐ ์ ์ ๊ฒ์ฆํ๊ณ ์๋์ ์ผ๋ก ๋ฐฐํฌ ์ ๋ฌํ๋ ๋จ๊ณ์ด๋ค.
(2) Continuous Deployment
์๋ํ๋ก ์ ๊ณผ์ ์ ๋ฐฐํฌ๋ฅผ ํ๋ ๋จ๊ณ์ด๋ค.
3. CI/CD work flow์์ ์ฌ์ฉ๋๋ ๊ฒ๋ค
(1) VCS(SCM)
์ฌ๋ฌ ๊ฐ๋ฐ์๋ค์ด ๊ฐ์ ์ฝ๋๋ฅผ ๊ฑด๋๋ฆฌ๋ ์ํฉ์ ์ฝ๋๋ฅผ ์๋ก ์
๋ก๋(commit)๋ฅผ ํ๋ฉด ์๊ธฐ๋ฉด ์ถฉ๋์ด ๋ฐ์ํ ์ ์๋๋ฐ ์ด๊ฒ์ ํผํ๊ธฐ ์ํด ์ฝ๋์ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํด์ผํ๋ค.
๊ทธ๋์ ์ฌ์ฉํ๋๊ฒ ๋ํ์ ์ผ๋ก ํ์ ๊ด๋ฆฌ ์์คํ
์ธ Git์ด๋ค.
(2) CI/CD ๋๊ตฌ (Jenkins, Travis CI, circle ci)
VCS์ ์ ์ฅ๋ ์ฝ๋๋ฅผ ๋ถ๋ฌ์ค๊ณ
build -> test -> package ์ผ๊ด์ ์ธ ์์
์ ์ฒ๋ฆฌํด์ค๋ค.
test๋จ๊ณ์์
(1) ์คํจ๋ฅผ ํ๋ค๋ฉด ๊ฐ๋ฐ์์๊ฒ ๋ฉ์์ง๋ฅผ ๋์ ธ์ค์ ์ฝ๋์ ๊ฐ์ ์ ์์ฒญํ ๊ฒ์ด๊ณ
(2) ์ฑ๊ณตํ๋ค๋ฉด ๋ค์ ๋จ๊ณ์ธ ๋ฐฐํฌ ์์
์ผ๋ก ์ด๋ํ๋ค.
๋ค์ ๋งํด์, Jenkins๋ CI/CD ๋ ๋ถ๋ถ์์ ์ ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๊ฐ๋ฅํ๋ค.
(4) Build tool (Maven, Gradle)
CI๋ฅผ ํตํด ํจํค์ง๋ ์ฝ๋๋ฅผ ๋น๋ํ๊ธฐ ์ํ ๋๊ตฌ๋ก์จ ์ฌ์ฉํ๋ค.
(5) ๋ฐฐํฌ ์๋ํ ๋๊ตฌ (Ansible, Terraform)
IaC(Intrastructure as Code)๋ถ๋ถ์ผ๋ก
์๋ฒ์ ์ธํ๋ผ์คํธ๋ญ์ณ ๊ด๋ฆฌ(ํด๋ผ์ฐ๋์์ ์ฌ์ฉ๋๋ ๊ฐ์ํ ์๋ฒ ๋๋ ๋ฏธ๋ค์จ์ด ์๋น์ค ๊ด๋ฆฌ)๋ฅผ script ์ฝ๋์ ์ํด์ ํ ์ ์๋ ๋๊ตฌ์ด๋ค.
(6) ์ปจํ ์ด๋ ๋ฐํ์ ๋๊ตฌ(Docker, cri-o, Container d)
์ปจํ ์ด๋ ๊ฐ์ํ ํํ๋ก ์ด์๋๋ ์๋ฒ์ ์ ์ฉ๋๋ ๋๊ตฌ
(7) Orchestration ๋๊ตฌ (Kubernetes)
๋์ปค์ ๊ฐ์ ๋๊ตฌ๋ฅผ ํตํด ๋ฐ์ํ ์ปจํ
์ด๋๋ค์ ๋ฐฐํฌ, ์์คํ
, ํ์ฅ, ๋คํธ์ํน ๊ด๋ฆฌ๋ฅผ ์ํ ์ค์ผ์คํธ๋ ์ด์
๋๊ตฌ
์ค์ผ์ค, ์ค์ผ์ผ๋ง ์์
์ ์ฌ์ฉํ๊ธฐ ์ํด ์ด์ฉ๋๊ธฐ๋ ํจ.
4. Jenkins๋ฅผ ์ด์ฉํ ๋ฐฐํฌ ๊ณผ์
(1) IaC๋ฅผ ๊ฑฐ์น์ง ์๋ ํ์ดํ๋ผ์ธ
web application์ ๊ฐ๋ฐํ๋ค๊ณ ํ๋ฉด ์์ฑ๋๋ warํ์ผ์
Was์ธ ์ํ์น ํฐ์บฃ์ ๋ฐฐํฌํ๊ฑฐ๋ OR warํ์ผ์ ์คํํ ์ ์๋ ํ๊ฒฝ ์์ฒด๋ฅผ ์ปจํ
์ด๋ ๊ฐ์ํ ํ๊ฒฝ์ ๊ตฌ์ถํ์ฌ ๋ฐฐํฌํ๋ค.
(2) IaC๋ฅผ ๊ฑฐ์น๋ ํ์ดํ๋ผ์ธ
(3) ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ํฌํจํ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ
์ผ์ชฝ ๋ฐ์ด Jenkins๋ฅผ ์ด์ฉํ๋ ๋ถ๋ถ๊น์ง๋ฅผ Continuous Integration(CI)๋ผ๊ณ ํ ์ ์๊ณ
์ค๋ฅธ์ชฝ ๋ฐ์ด Continuous Delivery, Deployment(CD)๋ผ๊ณ ๋ณผ ์ ์๋ค.
(4) EC2 / VM์ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ
3๋ฒ๊น์ง์ ํ์ดํ๋ผ์ธ์ ๋ก์ปฌ์์์ ํ๊ฒฝ์ด๊ณ ์ด ํ๊ฒฝ์ ๊ทธ๋๋ก ํด๋ผ์ฐ๋์ ์ฎ๊ธธ ์ ์๋ค.
CI/CD๋ฅผ ์ด์ฉํด์ ๋ฐฐํฌ์์
์ด๋ ์ด์์์
์ ํ ๋๋ ๋ณดํต Linuxํ๊ฒฝ์์ ๋ง์ด ์คํ๋๋ฏ๋ก ๋ก์ปฌ์์๋ Linuxํ๊ฒฝ์์ ์์
ํ๋ ๊ฒ์ ์ถ์ฒํ๋ค.
'๐ณ DevOps' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
FEP Server์ ๋ํด์ (0) | 2024.03.18 |
---|