์ด ๊ธ์ GitOps ๊ธฐ๋ฐ E2E ML Platform์ด
๊ตฌ์กฐ์ ์ผ๋ก ๋ถ๋ฆฌ๋์ด ์๊ณ , ์ค์ ๋ก ๋์ํ๋ฉฐ, ์ด์ ๊ด์ธก๊ณผ ๋ณต๊ตฌ๊น์ง ๊ฐ๋ฅํ ์ํ์์
์บก์ฒ์ ์คํ ๊ฒฐ๊ณผ๋ก ๊ฒ์ฆํ๋ ๊ธฐ๋ก์ ๋๋ค.
๐งญ ๋ชฉ์ฐจ
| # | ์น์ |
|---|---|
| 0 | ์ค๋น |
| 1 | GitOps ๊ฒฝ๊ณ ๊ฒ์ฆ |
| 2 | Core-only ๊ฒ์ฆ |
| 3 | Optional ON ๊ฒ์ฆ |
| 4 | Airflow E2E DAG ์คํ ๊ฒ์ฆ |
| 5 | Serving Runtime ๊ฒ์ฆ |
| 6 | Observability ๊ฒ์ฆ |
| 7 | ์ด์ ๋ฌธ์ / Proof ๊ตฌ์กฐ ๊ฒ์ฆ |
| 8 | ์ต์ข ๊ฒฐ๋ก |
0) ๐งฐ ์ค๋น
์ด๋ฒ ๊ฒ์ฆ์ ๋ค์ ๊ธฐ์ค์ผ๋ก ์งํํ์ต๋๋ค.
- GitOps ๊ตฌ์กฐ๋ ArgoCD Project / Application / Root App ๊ธฐ์ค์ผ๋ก ํ์ธ
- Optional ๋ ์ด์ด๋ ON / OFF ์คํ ๊ฒฐ๊ณผ๋ก ํ์ธ
- Airflow ํ์ดํ๋ผ์ธ์ E2E DAG orchestration ์คํ ๊ฒฐ๊ณผ ๊ธฐ์ค์ผ๋ก ํ์ธ
- ์๋น ์ํ๋ Triton READY / FastAPI health / reload / metrics ๊ธฐ์ค์ผ๋ก ํ์ธ
- ์ด์ ๊ด์ธก์ Prometheus / Alertmanager / ServiceMonitor / PrometheusRule ๊ธฐ์ค์ผ๋ก ํ์ธ
- ๋ชจ๋ ๊ฒฐ๊ณผ๋
docs/proof/latest/๊ธฐ์ค ์ต์ ์ค๋ ์ท์ผ๋ก ์ ๋ฆฌ
์ฌ์ฉํ ์ฃผ์ ๊ฒฝ๋ก:
docs/proof/latest/projects.txt
docs/proof/latest/apps.txt
docs/proof/latest/root-apps.txt
docs/proof/latest/core_only/*
docs/proof/latest/optional_on/*
docs/proof/latest/e2e_success/*
docs/proof/latest/observability/*
1) ๐งญ GitOps ๊ฒฝ๊ณ ๊ฒ์ฆ
1-1) ArgoCD Project ๊ฒฝ๊ณ ๊ฒ์ฆ

๐ธ proof-01-projects.png
โ ํ์ธ ํฌ์ธํธ:
AppProject๊ฐ
baseline,bootstrap,dev,optional,prod๋ก ๋ถ๋ฆฌ๋์ด ์์ผ๋ฉฐproject(default)๋ ๊ธฐ๋ณธ ์ ๊ณต ํ๋ก์ ํธ๋ก ์กด์ฌ
dev๋-dev,prod๋-prodnamespace ๋ฒ์๋ฅผ ๋์์ผ๋ก ํจ
optional์ feature-store / feast ์ ์ฉ ๋ ์ด์ด๋ก ๋ถ๋ฆฌ๋จ๊ฐ AppProject๋ GitOps repository
(mlops-infra-gitops)๋ฅผ ์ฃผ์ source๋ก ์ฌ์ฉํ๋ฉฐ,
์ผ๋ถ baseline ์ปดํฌ๋ํธ๋ Helm chart repository๋ฅผ ํจ๊ป ์ฌ์ฉ
๐งฉ ์๋ฏธ:
๋จ์ namespace ์ด๋ฆ ๊ตฌ๋ถ์ด ์๋๋ผ,
ArgoCD AppProject ์์ค์์ ๋ฐฐํฌ ๊ฒฝ๊ณ๋ฅผ ๊ฐ์ ํ๊ณ ์์์ ์ฆ๋ช ํฉ๋๋ค.
์ฆ dev / prod / optional / baseline์ด ๊ตฌ์กฐ์ ์ผ๋ก ๋ถ๋ฆฌ๋ GitOps ํ๊ฒฝ์ ๋๋ค.
1-2) ArgoCD Application ์ ์ฒด ๊ตฌ์กฐ ๊ฒ์ฆ

๐ธ proof-02-01-apps-list.png

๐ธ proof-02-02-apps-list.png
โ ํ์ธ ํฌ์ธํธ:
- Core:
airflow-dev/prod,mlflow-dev/prod,fastapi-dev/prod,triton-dev/prod- Baseline:
alloy-*,loki-*,minio-*,monitoring-*- Optional:
feast-dev/prod,optional-envs-dev/prod- ๋๋ถ๋ถ ์ฑ์ด
Synced / Healthy์ํ- Root Application (root-apps / root-baseline / root-optional)์ ํตํด GitOps ๋ ์ด์ด๋ณ ApplicationSet์ด ๊ด๋ฆฌ
๐งฉ ์๋ฏธ:
๋ฌธ์์ Core / Baseline / Optional ๊ตฌ๋ถ์ด ์๋๋ผ,
์ค์ ArgoCD Application ๋ชฉ๋ก ์์ฒด๊ฐ ๋ ์ด์ด ๊ตฌ์กฐ๋ฅผ ๋ฐ์ํ๊ณ ์์์ ๋ณด์ฌ์ค๋๋ค.
1-3) Root Application ๊ตฌ์กฐ ๊ฒ์ฆ

๐ธ proof-03-root-apps.png
โ ํ์ธ ํฌ์ธํธ:
root-apps๊ฐ bootstrap ํ๋ก์ ํธ ์๋์์ ๋์AppProject,Application,ApplicationSet๋ฆฌ์์ค๋ฅผ ํจ๊ป ๊ด๋ฆฌmlops-coreApplicationSet ์กด์ฌ ํ์ธ๐งฉ ์๋ฏธ:
์ด ํ๋ซํผ์ ๋จ์ํ ์ฑ ๋ช ๊ฐ๋ฅผ ์๋ ๋ฑ๋กํ ๊ตฌ์กฐ๊ฐ ์๋๋ผ,
Root App โ Project โ AppSet โ App ์ผ๋ก ์ด์ด์ง๋ GitOps ์ด์ ๊ตฌ์กฐ๋ฅผ ๊ฐ๊ณ ์์์ ์ฆ๋ช ํฉ๋๋ค.
2) ๐งฑ Core-only ๊ฒ์ฆ
2-1) Optional OFF ์คํ ๊ฒ์ฆ

๐ธ proof-04-01-optional-off-run.png

๐ธ proof-04-02-optional-off-run.png

๐ธ proof-04-03-optional-off-run.png
โ ํ์ธ ํฌ์ธํธ:
feast-dev,feast-prod,optional-envs-dev,optional-envs-prod,root-optional์ญ์ ์ํ๋๊ธฐ ํ optional scope app ์ ๊ฑฐ ์๋ฃ ๋ฉ์์ง ํ์ธ
Optional ๋ ์ด์ด ON/OFF๋ Makefile ๊ธฐ๋ฐ ์ด์ ์คํฌ๋ฆฝํธ๋ก ๊ด๋ฆฌ
Root Application์ AppProject์ ApplicationSet์ ํจ๊ป ๊ด๋ฆฌํ๋ฉฐ
Core ๋ ์ด์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ApplicationSet(mlops-core)์ ํตํด ์์ฑ
๐งฉ ์๋ฏธ:
Optional OFF๊ฐ ๋จ์ ๊ฐ๋ ์ด ์๋๋ผ,
์ค์ ArgoCD ์ฑ ๋ ๋ฒจ์์ Optional ๋ ์ด์ด๋ฅผ ๋ถ๋ฆฌ(detach)ํ๋ ๋์์์ ์ฆ๋ช ํฉ๋๋ค.
2-2) Optional ์ฑ ์ ๊ฑฐ ์๋ฃ ๊ฒ์ฆ

๐ธ proof-05-optional-scope-zero.png
โ ํ์ธ ํฌ์ธํธ:
argocd app list | grep optional,grep feast๊ฒฐ๊ณผ๋ก Optional ๊ด๋ จ ์ฑ์ด ๋ ์ด์ ์กฐํ๋์ง ์์feast-dev,feast-prodnamespace ๋ด๋ถ ๋ฆฌ์์ค๋ ์ ๊ฑฐ๋จ๐งฉ ์๋ฏธ:
Optional ๋ ์ด์ด ๊ด๋ จ ์ฑ๊ณผ ์ฃผ์ ๋ฆฌ์์ค๊ฐ ์ ๊ฑฐ๋์ด,
Core/Baseline๋ง ๋จ๋ Core-only ์ํ๊ฐ ์ค์ ๋ก ๋ง๋ค์ด์ก์์ ๋ณด์ฌ์ค๋๋ค.
2-3) Core-only ์ํ ํฌ์ค ๊ฒ์ฆ

๐ธ proof-06-core-health-probes-fastapi.png
โ ํ์ธ ํฌ์ธํธ:
- dev ์๋ํฌ์ธํธ(
https://fastapi.local/health) โstatus=ok- prod ์๋ํฌ์ธํธ(
https://fastapi.prod/health) โstatus=ok๐งฉ ์๋ฏธ:
Optional ๊ธฐ๋ฅ์ ์ ๊ฑฐํ ๋ค์๋
FastAPI ๊ธฐ๋ฐ core serving ์๋ํฌ์ธํธ๊ฐ ์ ์ ์ ์ง๋จ์ ๋ณด์ฌ์ค๋๋ค.
2-4) Feature Store namespace ๋นํ๊ดด ์ ์ง ๊ฒ์ฆ

๐ธ proof-07-feature-store-ns-retained.png
โ ํ์ธ ํฌ์ธํธ:
feature-store-dev,feature-store-prodnamespace๋Active์ํ๋ก ์ ์ง๋จkubectl get all๊ธฐ์ค namespace ๋ด๋ถ ์ํฌ๋ก๋ ๋ฆฌ์์ค๋ ์ ๊ฑฐ๋ ์ํ์๐งฉ ์๋ฏธ:
Optional OFF๋ namespace ์ญ์ ๊ฐ ์๋๋ผ
๋นํ๊ดด Detach ๋ฐฉ์์ผ๋ก ์ค๊ณ๋์์์ ์ฆ๋ช ํฉ๋๋ค.
์ด๋ก ์ธํด ์ฌ๋ถ์ฐฉ ์์ ์ฑ๊ณผ ์ด์ ๊ฒฝ๊ณ ์ ์ง๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
3) ๐ Optional ON ๊ฒ์ฆ
3-1) Optional ON ์คํ ๊ฒ์ฆ

๐ธ proof-08-optional-on-run.png
โ ํ์ธ ํฌ์ธํธ:
optional-envs-dev,optional-envs-prod,feast-dev,feast-prod๋๊ธฐํ ์ฑ๊ณต- ์ ์ฒด ON ํ๋ก์ธ์ค๊ฐ ์ ์ ์๋ฃ๋จ
๐งฉ ์๋ฏธ:
Optional ๋ ์ด์ด๋ฅผ ํ์ํ ๋ ๋ค์ ๋ถ์ผ ์ ์๋
Attach ๊ฐ๋ฅํ ํ์ฅ ๊ตฌ์กฐ์์ ์ฆ๋ช ํฉ๋๋ค.
3-2) Optional ์ฑ ๋ณต๊ตฌ ๊ฒ์ฆ

๐ธ proof-09-optional-scope-restored.png
โ ํ์ธ ํฌ์ธํธ:
feast-dev,feast-prod,optional-envs-dev,optional-envs-prod,root-optional์์ฑ- ์ํ๊ฐ
Synced / Healthy๋ก ๋ณต๊ตฌ๋จ๐งฉ ์๋ฏธ:
Optional ๊ธฐ๋ฅ์ ์ฝ์ด์ ๋ฐํ ์๋ ๊ตฌ์กฐ๊ฐ ์๋๋ผ,
ํ์ ์ ์์ ํ๊ฒ attach / detach ๊ฐ๋ฅํ ๋ ๋ฆฝ ๋ ์ด์ด์์ ์ฆ๋ช ํฉ๋๋ค.
4) ๐ Airflow E2E DAG ์คํ ๊ฒ์ฆ
4-1) E2E DAG ์ ์ฒด ์ฑ๊ณต ํ๋ฆ ๊ฒ์ฆ

๐ธ proof-09-01-e2e-dag-success.png

๐ธ proof-09-02-e2e-dag-success.png
โ ํ์ธ ํฌ์ธํธ:
e2e_fullDAG์์dp.extract_raw_data โ dp.validate_data โ dp.build_features โ dp.store_features โ drift_gate โ train_and_evaluate โ check_result โ register_model_task โ check_model_ready โ deploy โ commit_current โ fastapi_reload โ observe_post_deploy_metrics โ summarize_runํ๋ฆ์ด ์ฑ๊ณตshadow_start,notify_failure,rollback_minimalํ์คํฌ๋ ์ด๋ฒ ์คํ์์ ๋ถ๊ธฐ ์กฐ๊ฑด์skipped์ฒ๋ฆฌ๋จdp,deployTaskGroup ํฌํจ ์ ์ฒด orchestration chain์ด ์ ์ ์ข ๋ฃ๋จ๐งฉ ์๋ฏธ:
์ด ํ๋ซํผ์ด ๋จ์ํ Triton/FastAPI๊ฐ ๋ ์๋ ๊ตฌ์กฐ๊ฐ ์๋๋ผ,
Airflow๊ฐ ๋ฐ์ดํฐ ์ค๋น๋ถํฐ ์ด์ ๋ฐ์ ํ ๊ด์ธก๊น์ง ์ ์ฒด ํ๋ฆ์ ์ ์ดํ๋ E2E ML Platform ์์ ์ฆ๋ช ํฉ๋๋ค.
4-2) Promotion / Shadow ๋ถ๊ธฐ ๊ตฌ์กฐ ๊ฒ์ฆ

๐ธ proof-09-03-branch-promotion-shadow.png

๐ธ proof-09-04-branch-promotion-shadow.png
โ ํ์ธ ํฌ์ธํธ:
check_result์ดํ ์ ์ฑ ๋ฐ ์๊ณ๊ฐ์ ๋ฐ๋ผpromotion_start๋๋shadow_start๋ก ๋ถ๊ธฐ- ์ฑ๊ณต ์ฌ๋ก์์๋
register_model_task โ check_model_ready โ deployํ๋ฆ์ผ๋ก ์ด์ด์ ธ MLflow register ๋ฐ FastAPI reload๊น์ง ์งํ- ์ฐจ๋จ ์ฌ๋ก์์๋
shadow_start์notify_failureํ๋ฆ์ด ์ ํ๋๋ฉฐ, Slack ์๋ฆผ์Branch: shadow,reason: below_threshold,Shadow path selected๋ฉ์์ง๊ฐ ๋จ์๐งฉ ์๋ฏธ:
์ด ํ๋ซํผ์ ํ์ต ์๋ฃ๋ฅผ ๊ณง๋ฐ๋ก ์ด์ ๋ฐ์์ผ๋ก ๋ณด์ง ์๊ณ ,
์๊ณ๊ฐ ๋ฐ ์ ์ฑ ๊ธฐ๋ฐ์ผ๋ก promotion / shadow ๊ฒฝ๋ก๋ฅผ ์ค์ ๋ก ๋ถ๊ธฐํ๋ ์ด์ํ ML ํ์ดํ๋ผ์ธ์์ ์ฆ๋ช ํฉ๋๋ค.
4-3) READY Sensor ๋ฐฐํฌ ๊ฒ์ดํธ ๊ฒ์ฆ

๐ธ proof-09-05-model-ready-sensor.png
โ ํ์ธ ํฌ์ธํธ:
- promotion ๊ฒฝ๋ก ์คํ์์๋
check_model_readyํ์คํฌ๊ฐ register ์ดํ, deploy ์ด์ ๋จ๊ณ์์ ์ฑ๊ณต- shadow ๋ถ๊ธฐ ์คํ์์๋
check_model_ready๊ฐskipped์ฒ๋ฆฌ๋์ด, ๋ฐฐํฌ ๊ฒ์ดํธ๊ฐ promotion ๊ฒฝ๋ก์์๋ง ์ ์ฉ๋จ- ๋ชจ๋ธ์ด READY ์ํ๊ฐ ๋๊ธฐ ์ ๊น์ง deploy ๋จ๊ณ๊ฐ ์งํ๋์ง ์์
๐งฉ ์๋ฏธ:
๋ฑ๋ก๋ ๋ชจ๋ธ์ด ์กด์ฌํ๋ค๊ณ ๋ฐ๋ก ์ด์์ ๋ฐ์ํ๋ ๊ฒ์ด ์๋๋ผ,
READY sensor๋ฅผ ๋ช ์์ ๋ฐฐํฌ ๊ฒ์ดํธ๋ก ์ฌ์ฉํ๋ ์์ ํ ์ด์ ๋ฐ์ ๊ตฌ์กฐ์์ ์ฆ๋ช ํฉ๋๋ค.
4-4) Manual Rollback DAG ์คํ ๊ฒ์ฆ

๐ธ proof-09-06-manual-rollback-dag.png

๐ธ proof-09-07-manual-rollback-dag.png
โ ํ์ธ ํฌ์ธํธ:
rollback_manualDAG์์validate_conf โ load_ctx โ guard_repo โ write_ssot_files โ rollback_triton โ reload_fastapi โ verify_convergence์ ๋จ๊ณ ์ฑ๊ณต (validate_conf๋ ์ ๋ ฅ๊ฐ ๊ฒ์ฆ ๋ฐ path traversal ๋ฐฉ์ง ๊ฐ๋)- rollback ์ดํ
/models์๋ต์์ SSOT ๊ธฐ์ค served version์ด ์ด์ ๋ฒ์ ์ผ๋ก ๋ณต์๋๊ณ , Slack์๋ FastAPI reload ๊ฒฐ๊ณผ๊ฐ ๊ธฐ๋ก๋จclear pod-local cache์ํ ํcache_pod_local์ด ๋น์์ง ์ํ๋ก ํ์ธ๋์ด, pod-local override๊ฐ ์๋ SSOT ๊ธฐ์ค ์ํ๋ก ์๋ ดํ์์ ํ์ธ๐งฉ ์๋ฏธ:
์๋ rollback๊ณผ ๋ณ๊ฐ๋ก,
์ด์์๊ฐ ๋ช ์์ ์ผ๋ก ๋ณต๊ตฌ๋ฅผ ์ํํ ์ ์๋ ์๋ ๋กค๋ฐฑ ๊ฐ๋๋ ์ผ์ด ์ค์ DAG๋ก ๊ตฌํ๋์ด ์์์ ์ฆ๋ช ํฉ๋๋ค.
5) ๐ Serving Runtime ๊ฒ์ฆ
5-1) Triton READY ์ํ ๊ฒ์ฆ (dev/prod)

๐ธ proof-10-triton-ready.png
โ ํ์ธ ํฌ์ธํธ:
HTTP/1.1 200 OK- repository index ๊ฒฐ๊ณผ์์ dev ํ๊ฒฝ์
best_model,best_model_shadow, prod ํ๊ฒฝ์best_model์ด ๋ก๋๋ ์ํ๋ฅผ ํ์ธ๐งฉ ์๋ฏธ:
dev/prod ํ๊ฒฝ์์ Triton์ด ๋จ์ ์คํ ์ค์ธ ๊ฒ์ด ์๋๋ผ,
์ค์ READY ์ํ์ ๋ชจ๋ธ์ ๋ก๋ํด ์๋น ๊ฐ๋ฅํ ๋ฐํ์์์ ์ฆ๋ช ํฉ๋๋ค.
5-2) FastAPI health / models / metrics ๊ฒ์ฆ (dev/prod)

๐ธ proof-11-01-fastapi-health.png

๐ธ proof-11-02-fastapi-models.png

๐ธ proof-11-03-fastapi-dev-metrics.png

๐ธ proof-11-03-fastapi-prod-metrics.png
โ ํ์ธ ํฌ์ธํธ:
/healthโstatus=ok/modelsโ alias A/B์version,run_id๋ ธ์ถ/metricsโhttp_requests_total, process/python ๋ฉํธ๋ฆญ ๋ ธ์ถ๐งฉ ์๋ฏธ:
FastAPI๊ฐ ๋จ์ gateway๊ฐ ์๋๋ผ
์ด์ ์ํ ์กฐํ + serving metadata ๋ ธ์ถ + metrics exporter ์ญํ ๊น์ง ์ํํจ์ ์ฆ๋ช ํฉ๋๋ค.
5-3) Reload API ์ฑ๊ณต ๊ฒ์ฆ

๐ธ proof-12-reload-variant-a-b.png
โ ํ์ธ ํฌ์ธํธ:
status: successvariant: A, Bversion: 79, 9run_id: e57473991dc14de6a57dc7e5dfa1aa70๐งฉ ์๋ฏธ:
FastAPI
/variant/{alias}/reloadAPI๊ฐ ์ค์ ๋ก ์ฑ๊ณตํ๊ณ ,Triton ์๋น ์ํ์ ์ฐ๊ฒฐ๋ reload ๊ฒฝ๋ก๊ฐ ์ด์์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์์ค์ผ๋ก ๋์ํ์์ ์ฆ๋ช ํฉ๋๋ค.
6) ๐ Observability ๊ฒ์ฆ
6-1) Metrics API ํ์ฑํ ๊ฒ์ฆ

๐ธ proof-13-metrics-api.png
โ ํ์ธ ํฌ์ธํธ:
v1beta1.metrics.k8s.ioAPIService๊ฐAVAILABLE=True๐งฉ ์๋ฏธ:
Kubernetes cluster-level metrics๊ฐ ํ์ฑํ๋์ด,
node / pod ๋ฆฌ์์ค usage๋ฅผ ์กฐํํ ์ ์๋ metrics API ๊ธฐ๋ฐ์ด
์ค์ ๋ก ์ค๋น๋์ด ์์์ ์ฆ๋ช ํฉ๋๋ค.
6-2) Prometheus / Alertmanager / ServiceMonitor / Rule ๊ฒ์ฆ (dev/prod)

๐ธ proof-14-monitoring-objects.png
โ ํ์ธ ํฌ์ธํธ:
- Prometheus / Alertmanager ๋ฆฌ์์ค ์กด์ฌ
fastapi-(dev|prod)-smํฌํจ ServiceMonitor ๋ค์ ์กด์ฌfastapi-alerts,triton-alertsํฌํจ PrometheusRule ์กด์ฌ๐งฉ ์๋ฏธ:
dev/prod ํ๊ฒฝ์์ ๋จ์ ๋ชจ๋ํฐ๋ง ์ค์น๊ฐ ์๋๋ผ,
FastAPI / Triton ์๋น ๊ณ์ธต์ ๋์์ผ๋ก ํ ServiceMonitor ๊ธฐ๋ฐ metrics ์์ง๊ณผ PrometheusRule ๊ธฐ๋ฐ alert ์ ์ฑ ์ด ํจ๊ป ๋ฐฐํฌ๋์ด ์์์ ์ฆ๋ช ํฉ๋๋ค.
6-3) Pod ๋ฆฌ์์ค ๊ด์ธก ๊ฒ์ฆ

๐ธ proof-15-top-pods-head.png
โ ํ์ธ ํฌ์ธํธ:
airflow-*,fastapi-*,loki-*,minio-*,feast-*๋ฑ์ CPU / Memory ์ฌ์ฉ๋ ํ์ธ ๊ฐ๋ฅ๐งฉ ์๋ฏธ:
๊ด์ธก ์์คํ ์ด ๋จ์ ์ค์ ์ผ๋ก ๋๋ ๊ฒ์ด ์๋๋ผ,
์ค์ ์ํฌ๋ก๋ ๋ฆฌ์์ค ์ฌ์ฉ๋๊น์ง ํ์ธ ๊ฐ๋ฅํ ์ํ์์ ๋ณด์ฌ์ค๋๋ค.
6-4) Grafana ๋์๋ณด๋ ๊ฒ์ฆ
Dev ํ๊ฒฝ

๐ธ proof-15-01-grafana-dashboard-dev.png
Prod ํ๊ฒฝ

๐ธ proof-15-02-grafana-dashboard-prod.png
โ ํ์ธ ํฌ์ธํธ:
- Grafana์์ FastAPI ์์ฒญ๋, Pod CPU/Memory, Triton inference ๋ฐ ์๋น ๋ฆฌ์์ค๊ฐ ์๊ฐํ๋จ
- Prometheus๊ฐ ์์งํ ๋ฉํธ๋ฆญ์ด Grafana ๋์๋ณด๋์ ์ฐ๊ฒฐ๋์ด ์์
- ์๋น์ค ์ํ, API ํธ๋ํฝ, ์๋น ๊ณ์ธต, ๋ฆฌ์์ค ์ฌ์ฉ๋์ ํ ํ๋ฉด์์ ํ์ธ ๊ฐ๋ฅ
๐งฉ ์๋ฏธ:
์ด ํ๋ซํผ์ ๋ฉํธ๋ฆญ์ ๋จ์ํ ์์งํ๋ ๋ฐ์ ๋๋์ง ์๊ณ ,
Prometheus ๊ธฐ๋ฐ ์์ง ๊ฒฐ๊ณผ๋ฅผ Grafana์์ ์๊ฐ์ ์ผ๋ก ํ์ธํ ์ ์๋ observability ํ๋ฆ๊น์ง ๊ฐ์ถ ์ํ์์ ๋ณด์ฌ์ค๋๋ค.
7) ๐ ์ด์ ๋ฌธ์ / Proof ๊ตฌ์กฐ ๊ฒ์ฆ
7-1) Proof Index ๊ฒ์ฆ

๐ธ proof-16-proof-index.png
โ ํ์ธ ํฌ์ธํธ:
core_only/,optional_on/,e2e_success/,observability/๋๋ ํ ๋ฆฌ๊ฐ ๋ถ๋ฆฌ๋์ด ์กด์ฌprojects.txt,root-apps.txt,root-baseline.txt,root-optional.txt๋ฑ GitOps ๊ฒฝ๊ณ ๊ด๋ จ proof ํ์ผ ์กด์ฌpv.txt,pvc_all.txt๋ฑ ์คํ ๋ฆฌ์ง ๊ด๋ จ proof ํ์ผ๋ ํจ๊ป ์ ๋ฆฌ๋จ๐งฉ ์๋ฏธ:
์ด ํ๋ก์ ํธ๋ ์ฝ๋๋ง ์๋ ๊ฒ์ด ์๋๋ผ,
ํ๋ซํผ ์ํ๋ฅผ ์นดํ ๊ณ ๋ฆฌ๋ณ๋ก ์ฆ๋ช ํ๋ proof ์ฒด๊ณ๋ฅผ ํจ๊ป ๊ฐ๊ณ ์์์ ๋ณด์ฌ์ค๋๋ค.
7-2) ์ด์ ๋ฌธ์ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ ๊ฒ์ฆ

๐ธ proof-17-docs-structure.png
โ ํ์ธ ํฌ์ธํธ:
docs/overviewdocs/runbookdocs/securitydocs/proofdocs/feature-store๐งฉ ์๋ฏธ:
์ด ํ๋ก์ ํธ๋ ๋จ์ ๊ตฌํ๋ฌผ์ด ์๋๋ผ
๊ตฌ์กฐ ์ค๋ช (overview), ์ด์ ์ ์ฐจ(runbook), ๋ณด์ ์ ์ฑ (security), ์คํ ์ฆ๊ฑฐ(proof) ๋ฅผ ๋ถ๋ฆฌํด ๊ด๋ฆฌํ๋ ๋ฌธ์ํ ํ๋ซํผ์์ ๋ณด์ฌ์ค๋๋ค.
8) ๐ ์ต์ข ๊ฒฐ๋ก
8-1) ์ ์ฒด ๊ฒ์ฆ ์์ฝ
| ์์ญ | ๊ฒ์ฆ ๊ฒฐ๊ณผ |
|---|---|
| GitOps ๊ฒฝ๊ณ | โ AppProject / Root App / AppSet ๊ตฌ์กฐ ํ์ธ |
| Core-only | โ Optional ์ ๊ฑฐ ํ FastAPI / Triton ๊ฒ์ฆ |
| Optional ON | โ Feast / optional-envs ์ฌ๋ถ์ฐฉ ์ฑ๊ณต |
| Airflow DAG | โ E2E orchestration / branch / sensor / manual rollback ๊ฒ์ฆ |
| Serving Runtime | โ Triton READY / FastAPI metadataยทreloadยทmetrics ๊ฒ์ฆ |
| Observability | โ Prometheus / Alertmanager / ServiceMonitor / Rule ๋ฐฐํฌ ํ์ธ |
| ๋ฌธ์ / ์ฆ๊ฑฐ | โ overview / runbook / security / proof ๊ตฌ์กฐ ์กด์ฌ |
8-2) ๊ฒฐ๋ก
์ด ํ๋ซํผ์ GitOps ๊ธฐ๋ฐ์ผ๋ก ๋ฐฐํฌ ๊ฒฝ๊ณ๋ฅผ ๋๋๊ณ ,
Optional ๊ธฐ๋ฅ์ ๋ ๋ฆฝ์ ์ผ๋ก ๋ค๋ฃจ๋ฉฐ,
Airflow๊ฐ E2E ์ด์ ๋ฐ์ ํ๋ฆ์ ์ ์ดํ๊ณ ,
Triton / FastAPI ์๋น ๊ฒฝ๋ก์ Observability๊น์ง ํฌํจํด
์ค์ ๋ก ๊ฒ์ฆ ๊ฐ๋ฅํ ์ด์ํ E2E ML Platform์์ Proof๋ก ํ์ธํ์ต๋๋ค.