์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ

ArgoCD AppProject์™€ ApplicationSet์„ ์‚ฌ์šฉํ•ด dev/prod ํ™˜๊ฒฝ๊ณผ Core/Baseline/Optional ๋ ˆ์ด์–ด ๊ฒฝ๊ณ„๋ฅผ ๊ตฌ์กฐ์ ์œผ๋กœ ๊ฐ•์ œํ•˜๋Š” ๋ฐฉ๋ฒ•

์„ ์ˆ˜์ง€์‹


ArgoCD AppProject / ApplicationSet

  • dev/prod์™€ ๋ ˆ์ด์–ด ๊ฒฝ๊ณ„๋ฅผ ๊ฐ•์ œํ•˜๊ธฐ

๋“ค์–ด๊ฐ€๋ฉฐ

GitOps๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋ณดํ†ต ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค.

  • Git์ด Single Source of Truth๋‹ค
  • ๋ฐฐํฌ๊ฐ€ ์ž๋™ํ™”๋œ๋‹ค
  • ๋ณ€๊ฒฝ ์ด๋ ฅ์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋‹ค

์ด ์„ค๋ช…์€ ๋งž์ง€๋งŒ, ์šด์˜ ๊ด€์ ์—์„œ GitOps์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์—ญํ• ์€ ๋”ฐ๋กœ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ”๋กœ

๋ฐฐํฌ ๊ฒฝ๊ณ„๋ฅผ ๊ตฌ์กฐ๋กœ ๊ฐ•์ œํ•˜๋Š” ๊ฒƒ

์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด dev์™€ prod ํ™˜๊ฒฝ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค.

๋งŒ์•ฝ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋ผ๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ฐ™์€ Git repository
  • ๊ฐ™์€ Kubernetes cluster
  • ๋‹จ์ง€ namespace ์ด๋ฆ„๋งŒ ๋‹ค๋ฅธ ํ™˜๊ฒฝ

์ด ๊ฒฝ์šฐ ์ž‘์€ ์‹ค์ˆ˜ ํ•˜๋‚˜๋กœ๋„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ผ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • dev ๋ฆฌ์†Œ์Šค๊ฐ€ prod์— ๋ฐฐํฌ๋˜๋Š” ๊ฒฝ์šฐ
  • ํ…Œ์ŠคํŠธ์šฉ ์„ค์ •์ด ์šด์˜ ํ™˜๊ฒฝ์— ์ ์šฉ๋˜๋Š” ๊ฒฝ์šฐ
  • ํŠน์ • ์‹œ์Šคํ…œ์ด ์ž˜๋ชป๋œ namespace๋กœ ๋ฐฐํฌ๋˜๋Š” ๊ฒฝ์šฐ

์ด ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด

ArgoCD ๊ตฌ์กฐ ์ž์ฒด๋ฅผ ํ™˜๊ฒฝ ๊ฒฝ๊ณ„์™€ ๋ ˆ์ด์–ด ๊ตฌ์กฐ์— ๋งž๊ฒŒ ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค.


GitOps ๊ตฌ์กฐ ๊ฐœ์š”

์ด ํ”Œ๋žซํผ์˜ GitOps ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณ„์ธต์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

Root Application
      โ†“
AppProject
      โ†“
ApplicationSet
      โ†“
Application

๊ฐ ๊ณ„์ธต์€ ์„œ๋กœ ๋‹ค๋ฅธ ์—ญํ• ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

๊ณ„์ธต์—ญํ• 
Root ApplicationGitOps ๊ตฌ์กฐ์˜ ์ตœ์ƒ์œ„ ๊ด€๋ฆฌ
AppProject๋ฐฐํฌ ๊ฒฝ๊ณ„ ์ •์˜
ApplicationSetํ™˜๊ฒฝ๋ณ„ ์•ฑ ์ƒ์„ฑ
Application์‹ค์ œ ์„œ๋น„์Šค ๋ฐฐํฌ

์ด ๊ตฌ์กฐ ๋•๋ถ„์— GitOps๊ฐ€ ๋‹จ์ˆœํ•œ ๋ฐฐํฌ ์ž๋™ํ™”๊ฐ€ ์•„๋‹ˆ๋ผ

์šด์˜ ๊ฒฝ๊ณ„๋ฅผ ๊ฐ•์ œํ•˜๋Š” ์‹œ์Šคํ…œ์ด ๋ฉ๋‹ˆ๋‹ค.


AppProject: ๋ฐฐํฌ ๊ฒฝ๊ณ„๋ฅผ ์ •์˜ํ•˜๋Š” ๋ ˆ์ด์–ด

ArgoCD์—์„œ AppProject๋Š” ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

AppProject๋Š” ๋‹ค์Œ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

  • ์–ด๋–ค repository๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€
  • ์–ด๋–ค cluster / namespace์— ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€
  • ์–ด๋–ค ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š”์ง€

์ฆ‰,

Application์ด ์–ด๋””์— ๋ฐฐํฌ๋  ์ˆ˜ ์žˆ๋Š”์ง€ ์ •์˜ํ•˜๋Š” ๊ฒฝ๊ณ„์ž…๋‹ˆ๋‹ค.

์ด ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ AppProject ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Proof:

docs/proof/latest/projects.txt

์‹ค์ œ ์ผ๋ถ€ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

baseline   Baseline stack project (minio / loki / alloy)
bootstrap  Root/Bootstrap project
dev        Dev environment project
optional   Optional project (feature-store / feast)
prod       Prod environment project

์ด ๊ตฌ์กฐ๋Š” ๋‹จ์ˆœํžˆ ์ด๋ฆ„๋งŒ ๋‹ค๋ฅธ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๊ฐ ํ”„๋กœ์ ํŠธ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐฐํฌ ๋ชฉ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.


dev / prod ํ™˜๊ฒฝ ๋ถ„๋ฆฌ

dev์™€ prod๋Š” ๋‹จ์ˆœํžˆ namespace๋งŒ ๋‹ค๋ฅธ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ

ArgoCD ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€์—์„œ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด dev ํ”„๋กœ์ ํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ชฉ์ ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

dev environment project
destination: *-dev namespaces

๋ฐ˜๋ฉด prod ํ”„๋กœ์ ํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

prod environment project
destination: *-prod namespaces

์ด ๊ตฌ์กฐ ๋•๋ถ„์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ผ์ด ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค.

  • dev ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ prod namespace์— ๋ฐฐํฌ๋  ์ˆ˜ ์—†์Œ
  • prod ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ dev namespace์— ๋ฐฐํฌ๋  ์ˆ˜ ์—†์Œ

์ฆ‰,

์ž˜๋ชป๋œ ํ™˜๊ฒฝ ๋ฐ˜์˜์„ ์‚ฌ๋žŒ์˜ ์ฃผ์˜๊ฐ€ ์•„๋‹ˆ๋ผ ๊ตฌ์กฐ๋กœ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.


Baseline ํ”„๋กœ์ ํŠธ

Baseline์€ ์šด์˜ ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

๋Œ€ํ‘œ์ ์œผ๋กœ ๋‹ค์Œ ์‹œ์Šคํ…œ๋“ค์ด ์—ฌ๊ธฐ์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  • Monitoring
  • Logging
  • Object Storage

์‹ค์ œ ๋ฐฐํฌ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์„ฑ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

Proof:

docs/proof/latest/apps.txt

์˜ˆ์‹œ ์ผ๋ถ€:

monitoring-dev
monitoring-prod
loki-dev
loki-prod
minio-dev
minio-prod
alloy-dev
alloy-prod

์ด ์‹œ์Šคํ…œ๋“ค์€ ML ํŒŒ์ดํ”„๋ผ์ธ๊ณผ ์ง์ ‘์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์ง€๋งŒ

ํ”Œ๋žซํผ ์šด์˜์— ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ Baseline ํ”„๋กœ์ ํŠธ๋Š”

Core ์‹œ์Šคํ…œ๊ณผ ๋…๋ฆฝ์ ์œผ๋กœ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค.


Optional ํ”„๋กœ์ ํŠธ

Optional ํ”„๋กœ์ ํŠธ๋Š” ํ™•์žฅ ๊ธฐ๋Šฅ์„ ์œ„ํ•œ ๋ ˆ์ด์–ด์ž…๋‹ˆ๋‹ค.

์ด ํ”„๋กœ์ ํŠธ์—์„œ๋Š” Feature Store๊ฐ€ ์—ฌ๊ธฐ์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

Proof:

docs/proof/latest/apps.txt

์˜ˆ์‹œ:

feast-dev
feast-prod
optional-envs-dev
optional-envs-prod

Optional ํ”„๋กœ์ ํŠธ์˜ ํŠน์ง•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • Core ์‹œ์Šคํ…œ๊ณผ ๋ถ„๋ฆฌ
  • ํ•„์š”ํ•  ๋•Œ๋งŒ ํ™œ์„ฑํ™”
  • ์ œ๊ฑฐํ•ด๋„ ํ”Œ๋žซํผ์ด ์ •์ƒ ๋™์ž‘

์ด ๊ตฌ์กฐ ๋•๋ถ„์— Feature Store ๊ฐ™์€ ์‹œ์Šคํ…œ์„

์ฝ”์–ด ๊ตฌ์กฐ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


Root Application: GitOps ๊ตฌ์กฐ์˜ ์‹œ์ž‘์ 

GitOps ๊ตฌ์กฐ์˜ ์‹œ์ž‘์ ์€ Root Application์ž…๋‹ˆ๋‹ค.

Proof:

docs/proof/latest/root-apps.txt

Root Application์€ ๋‹ค์Œ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

root-apps
root-baseline
root-optional

์ด ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

Root Application
   โ”œโ”€ root-apps
   โ”œโ”€ root-baseline
   โ””โ”€ root-optional

์ฆ‰, ๋ฃจํŠธ ์•ฑ์ด ์ „์ฒด ํ”Œ๋žซํผ ๊ตฌ์กฐ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฐฉ์‹์€ ํ”ํžˆ App-of-Apps ํŒจํ„ด์ด๋ผ๊ณ  ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค.


ApplicationSet: ํ™˜๊ฒฝ๋ณ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒ์„ฑ

ApplicationSet์€ GitOps ํ™˜๊ฒฝ์—์„œ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

ApplicationSet์„ ์‚ฌ์šฉํ•˜๋ฉด

์—ฌ๋Ÿฌ ํ™˜๊ฒฝ์— ๋™์ผํ•œ ๊ตฌ์กฐ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ApplicationSet
   โ”œโ”€ airflow-dev
   โ”œโ”€ airflow-prod
   โ”œโ”€ mlflow-dev
   โ”œโ”€ mlflow-prod
   โ”œโ”€ triton-dev
   โ””โ”€ triton-prod

์‹ค์ œ๋กœ ์ด ํ”„๋กœ์ ํŠธ์—์„œ๋„ ApplicationSet์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

Proof:

mlops-core ApplicationSet

ApplicationSet ๋•๋ถ„์— ๋‹ค์Œ์ด ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค.

  • dev / prod ํ™˜๊ฒฝ์„ ๋™์ผํ•œ ๊ตฌ์กฐ๋กœ ์œ ์ง€
  • ํ™˜๊ฒฝ ์ถ”๊ฐ€ ์‹œ ์ž๋™ ํ™•์žฅ
  • Git ๋ณ€๊ฒฝ์œผ๋กœ ์ „์ฒด ๊ตฌ์กฐ ์—…๋ฐ์ดํŠธ

์‹ค์ œ ๋ฐฐํฌ๋œ Core ์‹œ์Šคํ…œ

Application ๋ชฉ๋ก์„ ๋ณด๋ฉด Core ์‹œ์Šคํ…œ์ด

dev์™€ prod ํ™˜๊ฒฝ์— ๊ฐ๊ฐ ๋ฐฐํฌ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Proof:

docs/proof/latest/apps.txt

์˜ˆ์‹œ:

airflow-dev
airflow-prod
mlflow-dev
mlflow-prod
fastapi-dev
fastapi-prod
triton-dev
triton-prod

์ด ๊ตฌ์กฐ ๋•๋ถ„์— ๋‹ค์Œ์ด ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค.

  • dev ํ™˜๊ฒฝ์—์„œ ๋ชจ๋ธ ๊ฒ€์ฆ
  • prod ํ™˜๊ฒฝ์—์„œ ์•ˆ์ •์ ์ธ ์„œ๋น™
  • ๋‘ ํ™˜๊ฒฝ์„ ๋™์ผํ•œ ๊ตฌ์กฐ๋กœ ์œ ์ง€

์™œ ์ด ๊ตฌ์กฐ๊ฐ€ ์ค‘์š”ํ•œ๊ฐ€

์ด ๊ตฌ์กฐ๋Š” ๋‹จ์ˆœํžˆ GitOps๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

์˜คํžˆ๋ ค ์ค‘์š”ํ•œ ์ ์€ ๋‹ค์Œ์ž…๋‹ˆ๋‹ค.

GitOps๋ฅผ ์‚ฌ์šฉํ•ด ์šด์˜ ๊ฒฝ๊ณ„๋ฅผ ๊ณ ์ •ํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๊ตฌ์กฐ ๋•๋ถ„์— ๋‹ค์Œ ๋ฌธ์ œ๊ฐ€ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

  • dev โ†’ prod ์ž˜๋ชป๋œ ๋ฐฐํฌ
  • Optional ๊ธฐ๋Šฅ์ด Core ์‹œ์Šคํ…œ์„ ๋ณ€๊ฒฝ
  • ์šด์˜ ์‹œ์Šคํ…œ๊ณผ ML ์‹œ์Šคํ…œ์ด ๋’ค์„ž์ด๋Š” ๋ฌธ์ œ

์ฆ‰,

GitOps๊ฐ€ ๋‹จ์ˆœํ•œ ๋ฐฐํฌ ์ž๋™ํ™” ๋„๊ตฌ๊ฐ€ ์•„๋‹ˆ๋ผ

์šด์˜ ์•ˆ์ •์„ฑ์„ ํ™•๋ณดํ•˜๋Š” ๊ตฌ์กฐ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.


๋‹ค์Œ ๊ธ€

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” GitOps ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด

  • dev / prod ํ™˜๊ฒฝ
  • Core / Baseline / Optional ๋ ˆ์ด์–ด

์˜ ๊ฒฝ๊ณ„๋ฅผ ์–ด๋–ป๊ฒŒ ๊ฐ•์ œํ–ˆ๋Š”์ง€๋ฅผ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด ๊ตฌ์กฐ๊ฐ€ ์‹ค์ œ๋กœ ์œ ์šฉํ•œ์ง€ ํ™•์ธํ•˜๋ ค๋ฉด

๋‹ค์Œ ์งˆ๋ฌธ์— ๋‹ตํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Optional ๊ธฐ๋Šฅ์„ ์‹ค์ œ๋กœ ์ œ๊ฑฐํ•ด๋„ ํ”Œ๋žซํผ์ด ์ •์ƒ ๋™์ž‘ํ• ๊นŒ?

๋‹ค์Œ ๊ธ€์—์„œ๋Š”

Optional ๊ธฐ๋Šฅ์„ ์‹ค์ œ๋กœ ON/OFFํ•˜๋ฉด์„œ Core ์‹œ์Šคํ…œ์ด ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ๊ณผ์ •์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Proof์—์„œ ํ™•์ธํ•  ์ž๋ฃŒ:

docs/proof/latest/core_only/*
docs/proof/latest/optional_on/*

์ด๋ฅผ ํ†ตํ•ด Optional ๋ ˆ์ด์–ด๊ฐ€ ๋‹จ์ˆœํ•œ ๊ฐœ๋…์ด ์•„๋‹ˆ๋ผ

์‹ค์ œ๋กœ Attach / Detach ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ์ธ์ง€ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


์„ค๊ณ„ ํŒ๋‹จ (Why This Way?)

AppProject๋กœ namespace ๋ฐฐํฌ ๊ฒฝ๊ณ„๋ฅผ ๊ฐ•์ œํ•˜์—ฌ dev ๋ฆฌ์†Œ์Šค๊ฐ€ prod์— ๋ฐฐํฌ๋˜๋Š” ๊ฒƒ์„ GitOps ๊ตฌ์กฐ ์ž์ฒด๊ฐ€ ์ฐจ๋‹จํ•˜๊ณ , App-of-Apps ํŒจํ„ด์œผ๋กœ ์ „์ฒด ํ”Œ๋žซํผ์„ ๋‹จ์ผ Git ์ปค๋ฐ‹์œผ๋กœ ์„ ์–ธ์  ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ApplicationSet์œผ๋กœ ํ™˜๊ฒฝ๋ณ„ Application์„ ์ž๋™ ์ƒ์„ฑํ•˜์—ฌ ํ™˜๊ฒฝ ์ถ”๊ฐ€ ์‹œ ์ˆ˜๋™ ์ž‘์—… ์—†์ด ๋™์ผ ๊ตฌ์กฐ๊ฐ€ ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค.


๋‹ค์Œ์— ์ฝ์„ ๊ธ€

โ†’ GitOps ๊ธฐ๋ฐ˜ E2E ML Platform - ํ† ๊ธ€ ๊ตฌ์กฐ โ€” Optional ON/OFF ์‹ค์ œ ๊ฒ€์ฆ