โ ์ฟ ๋ฒ๋คํฐ์ค ์ด๋๋ ํด๋์ค (์ง์ํธ) - Spring 1, 2 ์ ๋ฃ๊ณ ์์ฑํ๋ ๋ณต์ต ๋ธ๋ก๊ทธ ์ ๋๋ค.
(1) DevOps ์์ ๊ฐ์ฅ ์ค์ํ ๊ฒ
1-1. DevOps ์ ์ฒด ๊ตฌ์ฑ๋
๊ฐ๋ฐ ์์ค ๋ฅผ GitHub ์ ์ปค๋ฐํ๋ฉด์ ์์ค ์ฝ๋๋ฅผ ํตํฉ์ ๊ด๋ฆฌ
- CI/CD ํ๊ฒฝ์์ Build ๋ฒํผ์ ๋๋ฅด๋ฉด GitHub ์์ ์ต์ ์์ค ์ฝ๋ ๋ค์ด
- ๋ฉ์ด๋ธ ์ ์ฅ์์์ ์์ค์ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ค์ด
- ์คํํ ์ ์๋ ํํ์ JAR ํ์ผ์ด ์์ฑ ๋๋ฉด์ ์์ค ๋น๋๋ ๋
Kubernetes ํ๊ฒฝ์ผ๋ก ๋ฐฐํฌํด์ผํ๋๊น ์ปจํ ์ด๋ ๋น๋๋ฅผ ํ ๋ฒ ๋ ํด์ผํ๊ณ , ๋์ปค๋ก ๋น๋๊ฐ ์์
- ๋์ปค ํ๋ธ์์ OpenJDK ๊ฐ ์๋ ๋ฒ ์ด์ค ์ด๋ฏธ์ง๋ฅผ ๋ค์ด
- ๋ฐ์ ์ด๋ฏธ์ง์ JAR ํ์ผ์ ๋ฃ์ผ๋ฉด ์ปจ๋ฐ์ดํฐ ์ด๋ฏธ์ง๋ก ๋ง๋ค์ด์ง๋ค
- dockerHub ์ ์ฌ๋ฆฌ๊ธฐ
๋ฐฐํฌ
- kubectl ๋ช ๋ น์ด๋ฅผ ๋ ๋ ค์ ์ฟ ๋ฒ๋คํฐ์ค์ ํ๋๋ฅผ ์์ฑ
- ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ํ์ํ ์ด๋ฏธ์ง๋ฅผ ๋์ปค ํ๋ธ์์ ๋ค์ด
- containerd ์๊ฒ ์ปจํ ์ด๋ ์์ฑ ์์ฒญ
1-2. ๊ฐ๋ฐ -> ๋น๋ -> ์คํํ์ผ
๊ฐ๋ฐํ๊ฒฝ
- ๊ฐ๋ฐํ๊ฒฝ์ ํต์ฐ ๋ด PC
- ๋งฅ์ด๋ ์๋์ฐ ์์ ๊ฐ๋ฐํด์ธ ์ธํ ๋ฆฌ์ ์ด ์ค์น
- ๊ฐ๋ฐ์ ์ํ ํดํท์ธ OpenJDK ๋ฅผ ์ง์ ํ๊ณ ๊ฐ๋ฐํ๋ฉด ๋์ง๋ง ์ฝ๊ฒ ํ๊ธฐ ์ํด์ ์คํ๋ง ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉ
- ์ฝ๋๋ฅผ ์คํ ๊ฐ๋ฅํ ํ์ผ๋ก ๋ง๋ค๋ ค๋ฉด ๋น๋ ํ์
- Gradle ๋ก ๋น๋๋ฅผ ํ์ง๋ง, ๋น๋ ๊ณผ์ ์์ ์์ค๋ฅผ ์ปดํ์ผํ๋ ๋ถ๋ถ์ OpenJDK ๊ฐ ์ฌ์ฉ
- Jar ํ์ผ์ด ๋ง๋ค์ด์ง๋๋ฐ, ์ด ํ์ผ์ด OpenJDK ์ ์๋ JVM ์์์ ์คํ → ๋น๋ํ๊ณ , ํ์ผ์ ์คํ์ํค๋์ OpenJDK ๊ฐ ํญ์ ํ์
- ๊ฐ๋ฐ์๊ฐ ์คํ๋ ์ฑ์ ์ ์ ๊ฐ๋ฅ
- ๊ฐ๋ฐ ํ๊ฒฝ์๋ ๊ฐ๋ฐ, ๋น๋, ์คํํ์ผ ๋์์ ๋ชจ๋ ์คํ
CI/CD ํ๊ฒฝ
- CI/CD ํ๊ฒฝ์์๋ ๋น๋๋ฅผ ํด์ผํ๊ธฐ ๋๋ฌธ์ OpenJDK ์ Gradle ์ด ํ์ + ์ธํ๋ผ ํ๊ฒฝ์ผ๋ก ์คํํ์ผ์ ๋๊ฒจ์ฃผ๊ธฐ ์ํด ๋ฐฐํฌ ๊ณผ์ ์ถ๊ฐ
- ํฌ๊ฒ dev, qa, prod ํ๊ฒฝ์ด ์กด์ฌ
- dev : App ์ด ํ๋๋ ์๋๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ ํ๊ฒฝ์ด ์์ด์ผ ๋ด๊ฐ ๊ฐ๋ฐํ ์ฝ๋๋ฅผ ํธํ๊ฒ ํ ์คํธ ๊ฐ๋ฅ
- qa : ๊ฐ๋ฐ์๊ฐ ์๋ ์ ๋ฌธ ํ ์คํธ ๋ด๋น์ ์ฉ, ์ต๋ํ ์ด์ ํ๊ฒฝ๊ณผ ๋์ผํ๊ฒ ๊ตฌ์ฑ
- prod : ์ด์คํ
- CI/CD ํ๊ฒฝ์ด ํ์ํ ์ด์ : ํผ์ ์ฑ์ ๊ฐ๋ฐํ์ง ์๊ธฐ ๋๋ฌธ์
- ํ ์ฑ์ ๋ง๋ค๋๋ผ๋, ์ฌ๋ฌ ๊ฐ๋ฐ์๋ค์ด ์ฝ๋ฉ
- ์ด ์ฝ๋๋ค์ ํตํฉํด์ผ ํ๊ณ , GitHub ๋ฅผ ์ด์ฉํด ์ต์ ์์ค ์ฝ๋ ์ ์ง
- Jenkins ๊ฐ GitHub ์์ ์์ค๋ฅผ ๋ฐ์์ ๋น๋ํ๊ณ ๋ฐฐํฌํ๋ ์ญํ
- ์ด๋ฐ ์ญํ ์ ํ๋ ํด์ด ์ค์น๊ฐ ๋์ด ์๋ ์๋ฒ๊ฐ CI/CD ํ๊ฒฝ
์ธํ๋ผ ํ๊ฒฝ
- ์ธํ๋ผ ํ๊ฒฝ์์๋ ์คํํ์ผ๊ณผ, ๊ฐ๋ฐ (OpenJDK) ๊ฐ ์์ด์ผ ํ๋ค
๊ธฐ์กด ๊ตฌ์ฑ : ์ปจํ ์ด๋๋ฅผ ๋์ ํ๊ธฐ ์ด์ ๊ตฌ์ฑ
CI/CD | ์ธํ๋ผ |
→ ์๋น์ค๊ฐ ํ์ฑํ๋๋ฉด, ๊ฐ๋ฐํ๊ฒฝ์๋ ์ฌ๋ฌ ๊ฐ๋ฐ์๋ค์ด ์ด์์๋ ์ธ๋ถ ์ฌ์ฉ์๋ค์ด ์ ์ ๊ฐ๋ฅ |
|
์ปจํ ์ด๋ ๊ตฌ์ฑ :
CI/CD | ์ธํ๋ผ |
|
|
⇒ DevOps ๊ฐ ๋ง์ด ๋น๋ํด์ก์ง๋ง, ํต์ฌ์ ๊ฐ๋ฐํ๊ณ , ๋น๋ํด์ ์คํํ์ผ์ ๋ง๋๋ ๊ฒ
(2) DevOps ๋ฅผ ๊ตฌ์ฑํ๋ ์คํ์์ค๋ค
- CI : ํตํฉ๋ ์์ค๋ฅผ ๊ฐ์ง๊ณ ๋น๋ ํ ์คํธ๋ฅผ ์๋ํ
- CD : ๋ฐฐํฌ๋ฅผ ์๋ํ์ํค๋ ๊ธฐ๋ฅ
- ์ธ๋ถ์ ์ผ๋ก๋ 8๊ฐ์ง ๋จ๊ณ
- ๊ฐ๋ฐ
- ๊ณํ : ์ผ์ / ์ด์ / ํ์ ⇒ Jira, Notion, Redmine, slack
- ๊ฐ๋ฐ : ์ธ์ด / ํด / ํ๋ ์์ํฌ / ํ ์คํธ์ฝ๋ / ์ฝ๋๋ถ์ / ํ์ ⇒ IntelliJ, OpenJDK, Spring Boot, JUint, FindBugs, pmd, GitHub
- ๋น๋ : ์์ค / ์ปจํ ์ด๋ ⇒ Gradle, Maven, docker
- ํ ์คํธ : ๊ธฐ๋ฅ / ์ฑ๋ฅ ์ปค๋ฒ๋ฆฌ์ง ⇒ JUnit, JMeter, JACOCO
- ๋ฆด๋ฆฌ์ฆ : ๋์ปค / ์ฟ ๋ฒ๋คํฐ์ค : Docker (Dockerfile), ์ฟ ๋ฒ๋คํฐ์ค (Yaml)
- ๋ฐฐํฌ : ๋์ปค / ์ฟ ๋ฒ๋คํฐ์ค : Kustomize, HELM, argo, dockerhub
- ์ด์ : ๋ฐํ์ / ๋คํธ์ํฌ / ๋ฐ์ดํฐ๋ฒ ์ด์ค : containerd, etcd, NGNIX, CALICO, Istio
- ๋ชจ๋ํฐ๋ง : ์์ ์ฌ์ฉ๋ / App ๋ก๊ทธ / ํธ๋ํฝ ํ๋ฆ : Grafana, Grafana loki, Prometheus, JAGER, ZIPKIN
(3) DevOps ์ ์ฎ์ธ IT ์ง๊ตฐ๋ค
3-1. DevOps ์ ์ฎ์ธ IT ์ง๊ตฐ๋ค
๊ฐ๋ฐ์
- 2๋ ์ฐจ : ์ ๋ฌดํ์์ ์ฌ์ฉํ๋ ๊ฐ๋ฐ ํ๊ฒฝ๋ค์ ๋นจ๋ฆฌ ์ ์ฉ
- 4๋ ์ฐจ : IntelliJ ์ค์ ๋ถํฐ GitHub ๊น์ง ์ฅ์ ๋ ๋ณ๊ฒฝํ ๋ถ๋ถ์ด ์๊ธฐ๋ฉด ์ค์ค๋ก ์ฐพ์์ ์ฒ๋ฆฌํ ์ ๋์ ์ค๋ ฅ
- 6๋ ์ฐจ : ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ช๋ช ํด๋ค์ ๋ณธ์ธ์ด ์ด๊ธฐ ์ธํ ์ ๊ตฌ์ฑํ๊ณ ๋ค๋ฅธ ์ฌ๋๋ค์ ๋ฆฌ๋ํ๋ฉด์ CI ํ๊ฒฝ์ ๋น๋๋ ํ ์คํธ ์๋ํ
- 8๋ ์ฐจ : ์๋ก์ด ํธ๋ ๋๋ฅผ ์ด๋ ์ ๋ ๋ฆฌ๋
๋ฐ๋ธ์ต์ค ์์ง๋์ด
- 2๋ ์ฐจ : ํ์ฌ ํ์ ๊ตฌ์ฑ๋์ด ์๋ CI/CD ํ๊ฒฝ์ ์ ์
- 4๋ ์ฐจ : ์ด์ ํ๊ฒฝ์ ์ค์น๋๋ ํด์ด๋ ๊ฐ๋ฐ์์ GitHub ๊น์ง๋ ๋ด๋น
- 6๋ ์ฐจ : ๋ชจ๋ํฐ๋ง ์์คํ ๋ค๊น์ง ์ค์นํ๊ณ ๊ตฌ์ฑ
์ด์์
- 4๋ ์ฐจ : ํ์ฌ ๋ง๋ค์ด์ ธ ์๋ ์ด์ ํ๊ฒฝ๋ค์ ๋ชจ๋ํฐ๋ง
- 6๋ ์ฐจ : ๋ฆด๋ฆฌ์ฆ์ ๋ฐฐํฌํ๋ ๋ถ๋ถ๊น์ง ์ด๋ป๊ฒ ๊ตฌ์ฑ๋๋์ง ์๊ณ , ๋ชจ๋ํฐ๋ง ํ๋ ํ๋ฉด ๊น์ง
- 8๋ ์ฐจ : ํ์ดํ๋ผ์ธ์ ์์์ธ ๋น๋๋ถํฐ ์ด์ ๋ฐฐํฌ๊น์ง ๋ค ์๊ณ ์์ด์ ์ฃผ๋์ ์ผ๋ก ์ด์์ ํธํ๊ฒ๋ ๊ตฌ์ฑ์ ์ ๋ฐ์ดํธ (์ฌ์ดํธ ์ ๋ขฐ์ฑ ์์ง๋์ด SRE)
3-2. DevOps ์ธ ๋ค๋ฅธ Ops ๋ค
GitOps
- ํ์ดํ๋ผ์ธ์ Git ํ๋๋ก ํต์ผ
- ํ์ดํ๋ผ์ธ์ ์ฌ์ฉ๋๋ ํด๋ค์ด ๋๋ฌด ๋ง๋ค๋ณด๋ ์ฌ์ฉ์๋ค์ด ํด ์ ํํ๋ ๊ฒ์กฐ์ฐจ ํ๋ค์ดํ๋ค → Git ํ๋๋ก ํต์ผํ์
- ์ด์/ํ์ ๊ด๋ฆฌ, ๋น๋/ํ ์คํธ/๋ฐฐํฌ ์ ๊ธฐ๋ฅ๋ค์ ๋ชจ๋ ์ ๊ณต
- Github Actions ⇒ Jenkins ๋์ฒด ๊ฐ๋ฅ
DevSecOps
- ๋น ๋ฅธ ๋ฐฐํฌ์ ๋ณด์์ ๋์์ ์ก์
- ๋ณด์์ฒดํฌ๊น์ง ์๋ํ
- ํ์ดํ๋ผ์ธ ์ค๊ฐ์ค๊ฐ์ ๋ณด์ ๊ฒ์ฌ๋ฅผ ์๋ํ์์ผ ๋์
- Jenkins : sonarQube ๋ก ์ฝ๋ ๋ณด์
- dockerHub : Trivy ๋ก ์ด๋ฏธ์ง ๋ณด์
- Kubernetes : Open Policy Agent, Kyverno ๋ก ํด๋ฌ์คํฐ ๋ณด์
MLOps
- ๋จธ์ ๋ฌ๋, AI ๋ถ์ผ๋ฅผ ์ํ DevOps
- ์ํ์ถ์ฒ, ์ฌ์ฉ์ ํ๋ ์์ธก
- ๋ฐ์ดํฐ ๋ถ์๊ฐ : ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํด์ ๊ฒ์ฆํ๊ณ ํ์ตํ๊ณ ํ๊ฐํ๊ณ ์๋นํด์ ์์คํ ์ ๋ฐ์
- ๋ฐ์ดํฐ ๋ถ์๊ณผ ๊ฐ๋ฐ์ ๊ฐ์ ์ปค๋ฎค๋์ผ์ด์ ์ ์ํด ํ์ดํ๋ผ์ธ์ ๋ง๋ ๋ค
- Kubeflow, Airflow, Knative, KServe
LLMOps
- ChatGPT ์ ๊ฐ์ ๋ฐฉ๋ํ ๊ท๋ชจ ํนํ
FinOps
- ํด๋ผ์ฐ๋ ํ๊ฒฝ ๋น์ฉ ์ ๊ฐ์ ํฌ์ปค์ค
์ด๋ฏธ์ง ์ถ์ฒ URL : https://inf.run/k7mF