[Feature Store & Feast - Feature Store-lite]

์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ Feast ํ’€๋„์ž… ์ด์ „ ๋‹จ๊ณ„๋กœ, GitOps + Airflow๋ฅผ ์‚ฌ์šฉํ•ด ํ”ผ์ฒ˜ ์ƒ์„ฑ/๋ฒ„์ „ํ™”/์žฌํ˜„์„ฑ์˜ ์ตœ์†Œ ์š”๊ฑด(๊ณ„์•ฝ/๋ฉ”ํƒ€/๋ฒ„์ „ํ™”)์„ ๊ณ ์ •ํ•˜๋Š” Feature Store-lite ์„ค๊ณ„ ์„ ์ˆ˜์ง€์‹ Triton ์„œ๋น™ ํ”Œ๋žซํผ - dynamic_batching + instance_group ์ด ๋‹จ๊ณ„์—์„œ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ Feature Store๋Š” โ€œML ์„ฑ๋Šฅ"์ด ์•„๋‹ˆ๋ผ ์šด์˜ ์•ˆ์ •์„ฑ/์žฌํ˜„์„ฑ์—์„œ ๋จผ์ € ๊ฐˆ๋ฆฝ๋‹ˆ๋‹ค. โ€œ์˜ค๋Š˜ ๋งŒ๋“  feature.csv"๊ฐ€ ์•„๋‹ˆ๋ผ, ์•„๋ž˜๊ฐ€ ๋ฐ˜๋“œ์‹œ ๋‚จ์•„์•ผ ์šด์˜์ด ๋ฉ๋‹ˆ๋‹ค. ์–ธ์ œ ์ƒ์„ฑ๋๋Š”์ง€ (generated_at) ์–ด๋–ค ์Šคํ‚ค๋งˆ(๊ณ„์•ฝ)๋กœ ์ƒ์„ฑ๋๋Š”์ง€ (schema + schema_hash) ์–ด๋–ค ์†Œ์Šค์—์„œ ์ƒ์„ฑ๋๋Š”์ง€ (source) ์–ด๋–ค ๋ฒ„์ „์œผ๋กœ ์ €์žฅ๋๋Š”์ง€ (version) ๊ฒฐ๊ณผ๋ฌผ์ด ์–ด๋”” ์žˆ๋Š”์ง€ (feature_uri) Feature Store ๋„์ž…์„ ๊ณ ๋ฏผํ•˜๋ฉด ํ”ํžˆ โ€œFeast๋ถ€ํ„ฐ ์จ์•ผ ํ•˜๋‚˜?โ€œ๊ฐ€ ๋จผ์ € ๋‚˜์˜ค๋Š”๋ฐ, ๋„๊ตฌ๋ณด๋‹ค ๋จผ์ € ํ”ผ์ฒ˜ ์ƒ์„ฑ/๋ฒ„์ „ํ™”/์žฌํ˜„ ๋ฐฉ์‹์ด ๊ณ ์ •๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ...

January 14, 2026 ยท 4 min

[MLOps ํ”Œ๋žซํผ Observability & Data Pipeline - ์—ํ•„๋กœ๊ทธ]

์—ํ•„๋กœ๊ทธ โ€” โ€œ๊ด€์ธกยท์•Œ๋ฆผยท๋ฐ์ดํ„ฐ๊นŒ์ง€ ํ•œ ๋ฒˆ์— ์ด์–ด์ง€๋Š” MLOps ์šด์˜ ํ”Œ๋žซํผโ€ ๐Ÿ“Œ ์ „์ฒด ๊ฒฝ๋กœ ์š”์•ฝ ์ˆœ์„œ ์ฃผ์ œ 1 ๐Ÿ”— kube-prometheus-stack + GitOps ๊ตฌ์ถ• 2 ๐Ÿ”— Alertmanager Slack & ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… 3 ๐Ÿ”— Prometheus/KSM/Kubelet ์™„์ „ ๋ถ„๋ฆฌ ๊ตฌ์กฐ 4 ๐Ÿ”— Loki/Promtail ๋กœ๊ทธ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ• 5 ๐Ÿ”— ์šด์˜ ์ค‘ ๋ฐœ์ƒํ•œ ์‹ค์ œ ์ด์Šˆ & ํ•ด๊ฒฐ ๊ณผ์ • 6 ๐Ÿ”— FastAPI Observability Dashboard & Alert Library 7 ๐Ÿ”— Data Pipeline ๊ตฌ์ถ• 8 ๐Ÿ”— Data Pipeline ๊ณ ๋„ํ™” 9 ๐Ÿ”— ๊ฒ€์ฆ ๐ŸŽฏ ์ „์ฒด ํšŒ๊ณ  ์š”์•ฝ ๋‹จ๊ณ„ ํ•ต์‹ฌ ๋ชฉํ‘œ ์ฃผ์š” ๊ฐœ์„ ์  1 ๋ชจ๋‹ˆํ„ฐ๋ง ๋ผˆ๋Œ€ ๊ตฌ์ถ• kube-prometheus-stack dev/prod ์™„์ „ ๋ถ„๋ฆฌ 2 Slack ์•Œ๋žŒ ํ†ตํ•ฉ Alertmanager configSecret ํ‘œ์ค€ํ™” + ์•Œ๋žŒ ๋ผ์šฐํŒ… 3 ๋ฉ”ํŠธ๋ฆญ ๊ต์ฐจ ์ˆ˜์ง‘ ์ œ๊ฑฐ KSM/Kubelet ๋ผ๋ฒจ ํ†ต์ผ, Prometheus TSDB local-path 4 ๋กœ๊ทธ ํŒŒ์ดํ”„๋ผ์ธ ์™„์„ฑ Loki/Promtail dev/prod ๋ถ„๋ฆฌ + LogQL Range Query 5 ์‹ค์ œ ์šด์˜ ์ด์Šˆ ํ•ด๊ฒฐ ๋ผ๋ฒจ/Secret/NFS ๊ถŒํ•œ/NFS unmount ๋ฌธ์ œ ์ผ๊ด„ ํ•ด๊ฒฐ 6 FastAPI/Platform ๊ด€์ธก ๋Œ€์‹œ๋ณด๋“œ FastAPI ์„œ๋น„์Šค + Kubernetes/Node ํ”Œ๋žซํผ ๊ด€์ธก ์ฒด๊ณ„ ์™„์„ฑ 7 Data Pipeline ๊ตฌ์ถ• (v1) S3 Raw โ†’ Feature ETL ์ž๋™ํ™” (Airflow DAG) 8 Data Pipeline ๊ณ ๋„ํ™” (v2) ๋ฒ„์ „ยท์Šคํ‚ค๋งˆยท๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ž๋™ํ™” + ๊ด€์ธก ๋Œ€์‹œ๋ณด๋“œ 9 ๊ฒ€์ฆ Observability ๊ณ„์ธต, Grafana ๋Œ€์‹œ๋ณด๋“œ, Datapipeline ๐Ÿ”„ ํ•ต์‹ฌ ๋ฌธ์žฅ: ...

November 20, 2025 ยท 3 min

[MLOps ํ”Œ๋žซํผ Observability & Data Pipeline - 8๋‹จ๊ณ„ : Data Pipeline ๊ณ ๋„ํ™”]

์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ ๊ธฐ์กด v1 ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ์— ๋ฒ„์ „ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ, schema.json, metadata.json, KST ํƒ€์ž„๋ผ์ธ์„ ์–น์–ด ML Feature Store์— ๊ฐ€๊นŒ์šด v2 ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ ๊ณ ๋„ํ™”ํ•œ ๊ณผ์ • ์„ ์ˆ˜์ง€์‹ Observability 7๋‹จ๊ณ„: Data Pipeline ๊ตฌ์ถ• ์ด ๋‹จ๊ณ„์—์„œ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ ์ด์ „ ๋‹จ๊ณ„์—์„œ S3 Raw์—์„œ Feature CSV๊นŒ์ง€ ๋™์ž‘ํ•˜๋Š” ์—”๋“œํˆฌ์—”๋“œ ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ(v1)์„ ๋งŒ๋“ค์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‹ค๋ฌด ML ํ”Œ๋žซํผ ์ž…์žฅ์—์„œ๋Š” โ€œ๊ทธ๋•Œ ๊ทธ ์‹คํ–‰์—์„œ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ, ์–ด๋–ค ํ’ˆ์งˆ๋กœ, ์–ด๋А ๋ฒ„์ „์— ์ €์žฅํ–ˆ๋Š”์ง€"๊ฐ€ ์‹œ๊ฐ„/๋ฒ„์ „/์Šคํ‚ค๋งˆ/๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊นŒ์ง€ ํ•œ ๋ฒˆ์— ๋‚จ์•„์•ผ ํ•œ๋‹ค. ์ด๋ฒˆ ๋‹จ๊ณ„์—์„œ๋Š” ๊ธฐ์กด v1 ํŒŒ์ดํ”„๋ผ์ธ์„ ๋ฒ„๋ฆฌ์ง€ ์•Š๊ณ , ๊ทธ ์œ„์— ๋ฒ„์ „ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ + schema.json + metadata.json + KST ํƒ€์ž„๋ผ์ธ์„ ์–น์–ด ์‹ค์ œ ML Feature Store์— ๋” ๊ฐ€๊นŒ์šด v2 ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ ๊ณ ๋„ํ™”ํ–ˆ๋‹ค. ...

November 15, 2025 ยท 6 min

[MLOps ํ”Œ๋žซํผ Observability & Data Pipeline - 7๋‹จ๊ณ„ : Data Pipeline ๊ตฌ์ถ•]

์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ S3 Raw ๋ฐ์ดํ„ฐ๋ฅผ Airflow DAG๋กœ ์ถ”์ถœ/๊ฒ€์ฆ/๊ฐ€๊ณต/์ €์žฅํ•˜๋Š” ์—”๋“œํˆฌ์—”๋“œ ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•˜์—ฌ ML ํ•™์Šต ์ž๋™ํ™”์˜ ๋ฐ์ดํ„ฐ ๋ ˆ์ด์–ด๋ฅผ ํ™•๋ณดํ•œ ๊ณผ์ • ์„ ์ˆ˜์ง€์‹ Observability 6๋‹จ๊ณ„: FastAPI Dashboard & Alert Library ์ด ๋‹จ๊ณ„์—์„œ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ์€ ๊ฒฐ๊ตญ ๋ฐ์ดํ„ฐ ํ’ˆ์งˆ์—์„œ ๊ฒฐ์ •๋œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ถ”์ถœํ•˜๊ณ , ๊ฒ€์ฆํ•˜๊ณ , ๊ฐ€๊ณตํ•˜๊ณ , ์ €์žฅํ•˜๋Š”์ง€๊นŒ์ง€ ์ž๋™ํ™”ํ•˜์ง€ ์•Š์œผ๋ฉด MLOps๋Š” ์™„์„ฑ๋˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋ฒˆ ๋‹จ๊ณ„์—์„œ๋Š” Raw S3์—์„œ ์ „์ฒ˜๋ฆฌ, Feature ์ƒ์„ฑ, ์ €์žฅ๊นŒ์ง€ ์ด์–ด์ง€๋Š” ์—”๋“œํˆฌ์—”๋“œ ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ์„ ์ง์ ‘ ๊ตฌ์ถ•ํ•ด ์ดํ›„ MLflow ํ•™์Šต ์ž๋™ํ™”์™€ ๋ฐ”๋กœ ์—ฐ๊ฒฐ๋  ๋ฐ์ดํ„ฐ ๋ ˆ์ด์–ด๋ฅผ ๋‹ค์กŒ๋‹ค. ...

November 10, 2025 ยท 3 min

[MLOps ํ”Œ๋žซํผ Observability & Data Pipeline - 6๋‹จ๊ณ„ : FastAPI Observability Dashboard & Alert Library]

์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ FastAPI ML ์„œ๋น™ ํ™˜๊ฒฝ์—์„œ ์žฅ์• ๋ฅผ ์ฆ‰์‹œ ๊ฐ์ง€ํ•˜๊ณ  ์›์ธ์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€์‹œ๋ณด๋“œ 3์ข…๊ณผ Alert Library 4์ข…์„ ๊ตฌ์ถ•ํ•œ ๊ณผ์ • ์„ ์ˆ˜์ง€์‹ Observability 5๋‹จ๊ณ„: ์šด์˜ ์ค‘ ์‹ค์ œ ์ด์Šˆ & ํ•ด๊ฒฐ ๊ณผ์ • ์ด ๋‹จ๊ณ„์—์„œ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ FastAPI๋Š” ๋ชจ๋ธ์„ ์„œ๋น™ํ•˜๋Š” ์ž…๊ตฌ์ด์ž, ์žฅ์• ๊ฐ€ ๋‚˜๋ฉด ๊ฐ€์žฅ ๋จผ์ € ํ”๋“ค๋ฆฌ๋Š” ์ง€์ ์ด๋‹ค. A/B, Canary, ํ•ซ์Šค์™‘ ๊ตฌ์กฐ ์œ„์—์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ๋ฐ”๋กœ ๊ฐ์ง€๋˜๊ณ  ์›์ธ์„ ๋ฐ”๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๊ด€์ธก ์ฒด๊ณ„๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์ด๋ฒˆ ๋‹จ๊ณ„์—์„œ๋Š” ์‹ค์ œ ์šด์˜ ์ˆ˜์ค€์˜ FastAPI Observability Dashboard์™€ Alert Library๋ฅผ ๊ตฌ์ถ•ํ•œ๋‹ค. ...

November 5, 2025 ยท 5 min

[MLOps ํ”Œ๋žซํผ Observability & Data Pipeline - 4๋‹จ๊ณ„ : Loki/Promtail ๋กœ๊ทธ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•]

์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ dev/prod ์™„์ „ ๋ถ„๋ฆฌ๋œ Loki + Promtail ๋กœ๊ทธ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•˜๊ณ , LogQL ๊ธฐ๋ฐ˜์œผ๋กœ FastAPI/Airflow ๋กœ๊ทธ๋ฅผ ์ค‘์•™์—์„œ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์„ ์ˆ˜์ง€์‹ Observability 3๋‹จ๊ณ„: Prometheus/KSM/Kubelet ์™„์ „ ๋ถ„๋ฆฌ ๊ตฌ์กฐ ์ด ๋‹จ๊ณ„์—์„œ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ ์šด์˜ํ˜• MLOps์—์„œ ๊ฐ€์žฅ ์œ„ํ—˜ํ•œ ์žฅ์• ๋Š” ๋ชจ๋ธ์ด ์•„๋‹Œ ๋กœ๊ทธ๊ฐ€ ์•ˆ ๋ณด์ด๋Š” ์ˆœ๊ฐ„์ด๋‹ค. FastAPI, MLflow, Airflow๊ฐ€ ๋ชจ๋‘ ๋Œ์•„๊ฐ€๋„, ๋กœ๊ทธ๊ฐ€ ํ•œ ๋ฒˆ ์„ž์ด๊ฑฐ๋‚˜ ๋ˆ„๋ฝ๋˜๋ฉด ์žฅ์•  ์›์ธ์„ ์ฐพ์ง€ ๋ชปํ•ด ์šด์˜ ์ž์ฒด๊ฐ€ ๋ฉˆ์ถฐ๋ฒ„๋ฆฐ๋‹ค. dev/prod๋ฅผ ์™„์ „ํžˆ ๋ถ„๋ฆฌํ•œ Loki + Promtail ๋กœ๊ทธ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•ด, ๋ชจ๋ธ ํ•ซ์Šค์™‘, ์—๋Ÿฌ ํŒจํ„ด, API ์ด์ƒ ์ง•ํ›„๊นŒ์ง€ ํ•œ๋ˆˆ์— ๋ณด์ด๋„๋ก ๋งŒ๋“ ๋‹ค. ...

October 27, 2025 ยท 4 min

[MLOps ํ”Œ๋žซํผ Observability & Data Pipeline - 3๋‹จ๊ณ„ : Prometheus/KSM/Kubelet ์™„์ „ ๋ถ„๋ฆฌ ๊ตฌ์กฐ]

์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ dev/prod ๊ฐ„ ๋ฉ”ํŠธ๋ฆญ์ด ๊ต์ฐจ ์ˆ˜์ง‘๋˜๋Š” ๋ฌธ์ œ๋ฅผ ๋ผ๋ฒจ ๊ธฐ๋ฐ˜์œผ๋กœ ์™„์ „ ๋ถ„๋ฆฌํ•˜๊ณ , Prometheus TSDB๋ฅผ local-path๋กœ ์ „ํ™˜ํ•˜์—ฌ ์„ฑ๋Šฅ๊ณผ ์•ˆ์ •์„ฑ์„ ๊ฐœ์„ ํ•˜๋Š” ๊ณผ์ •์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์„ ์ˆ˜์ง€์‹ Observability 2๋‹จ๊ณ„: Alertmanager Slack & ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… ์ด ๋‹จ๊ณ„์—์„œ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ dev์™€ prod๋Š” ๋ถ„๋ฆฌ๋ผ ์žˆ์–ด์•ผ ํ•˜๋Š”๋ฐ, ์ •์ž‘ ๊ด€์ธก ๋ฐ์ดํ„ฐ์—์„œ๋Š” ์„œ๋กœ ์„ž์—ฌ ๋ณด์ด๋Š” ๋ฌธ์ œ๊ฐ€ ๊ณ„์† ์ƒ๊ฒผ๋‹ค. Prometheus/KSM/Kubelet์˜ ๋ผ๋ฒจ๊ณผ ์…€๋ ‰ํ„ฐ๊ฐ€ ์กฐ๊ธˆ๋งŒ ์–ด๊ธ‹๋‚˜๋„ dev์—์„œ prod ๋ฉ”ํŠธ๋ฆญ์„ ์ฝ๋Š” ์‹ฌ๊ฐํ•œ ํ˜ผ์„ ์ด ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋ฒˆ ๋‹จ๊ณ„์—์„œ๋Š” ๊ด€์ธก ์Šคํƒ์„ ๋ผ๋ฒจ ๊ธฐ๋ฐ˜์œผ๋กœ ์™„์ „ํžˆ ์ ˆ๋‹จํ•˜๋Š” ๋ฐ ์ง‘์ค‘ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  TSDB๋Š” ๋กœ์ปฌ ๋””์Šคํฌ๋กœ ์˜ฎ๊ฒจ ์†๋„์™€ ์•ˆ์ •์„ฑ์„ ๋Œ์–ด์˜ฌ๋ฆฌ๊ณ , NFS๋Š” ๋‚˜๋จธ์ง€ ๊ด€์ธก ๋„๊ตฌ ์ „์šฉ์œผ๋กœ ์žฌ์ •๋น„ํ•œ๋‹ค. ...

October 22, 2025 ยท 5 min

[MLOps ํ”Œ๋žซํผ Observability & Data Pipeline - 2๋‹จ๊ณ„ : Alertmanager Slack & ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…]

์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ Alertmanager ์„ค์ •์„ SealedSecret์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ , dev/prod ๊ฐ๊ฐ์˜ Slack ์ฑ„๋„๋กœ ์•Œ๋žŒ์ด ์ •ํ™•ํžˆ ํ๋ฅด๋Š” ๊ด€์ธก ํŒŒ์ดํ”„๋ผ์ธ์„ ์™„์„ฑํ•˜๋Š” ๊ณผ์ •์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์„ ์ˆ˜์ง€์‹ Observability 1๋‹จ๊ณ„: kube-prometheus-stack + GitOps ๊ตฌ์ถ• ์ด ๋‹จ๊ณ„์—์„œ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ ๋ชจ๋ธ์ด ์ž˜ ํ•™์Šต๋˜๊ณ  ์ž˜ ๋ฐฐํฌ๋˜๋Š” ๊ฒƒ๋ณด๋‹ค, ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ ์ฆ‰์‹œ ๊ฐ์ง€๋˜๋Š” ๊ฒƒ์ด ๋” ์ค‘์š”ํ•  ๋•Œ๊ฐ€ ๋งŽ๋‹ค. dev/prod ๊ฐ๊ฐ์—์„œ ์•Œ๋žŒ์ด ์ •ํ™•ํ•œ Slack ์ฑ„๋„๋กœ, ๊นจ์ง ์—†์ด ํ๋ฅด๋Š” ๊ด€์ธก ํŒŒ์ดํ”„๋ผ์ธ์„ ๋จผ์ € ์™„์„ฑํ•ด์•ผ ํ•œ๋‹ค. ์ด ๊ธฐ๋ฐ˜์ด ๊ฐ–์ถฐ์ ธ์•ผ ์ดํ›„ FastAPI ์ง€์—ฐ, ํ•ซ์Šค์™‘ ์‹คํŒจ, DAG ์—๋Ÿฌ ๊ฐ™์€ ์šด์˜ํ˜• MLOps ์ด๋ฒคํŠธ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. ...

October 18, 2025 ยท 5 min

[MLOps ์šด์˜ ๊ณ ๋„ํ™” - ๊ฒ€์ฆ (Proof of Automation)]

๐Ÿง  Proof of Automation โ€” ์ž‘๋™ ๊ฒ€์ฆ ๋ฃจํ”„ ํ•˜๋‚˜์˜ ์ปค๋ฐ‹์œผ๋กœ CI โ†’ CD โ†’ ํ•™์Šต/๋“ฑ๋ก โ†’ READY โ†’ ํ•ซ์Šค์™‘ โ†’ ์‹คํ—˜ โ†’ ๊ด€์ œ๊นŒ์ง€ ์ž๋™ํ™”๋˜์—ˆ์Œ์„ ์‹œ๊ฐ์ ์œผ๋กœ ์ฆ๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿงญ ๋ชฉ์ฐจ # ์„น์…˜ 0 ์ค€๋น„ (CI/CDยทGitOpsยทSecrets ๊ธฐ๋ณธ ์„ธํŒ…) 1 CI ์‹คํ–‰ (GitHub Actions) 2 ArgoCD ์ž๋™ ๋™๊ธฐํ™” 3 Airflow ํ•™์Šตโ†’๋“ฑ๋กโ†’READY (FAIL/SUCCESS + Slack) 4 MLflow ๋ชจ๋ธ ๋“ฑ๋กยท๋ณ„์นญยท์•„ํ‹ฐํŒฉํŠธ 5 FastAPI ํ•ซ์Šค์™‘ (/reload) 6 ์ˆ˜๋™ ๋กค๋ฐฑ (์šด์˜ ๋ณต๊ตฌ ๊ฐ€๋“œ๋ ˆ์ผ) 7 ๋กœ๊ทธ ๊ณ„์ธต (Airflow=S3 / FastAPI=NFS) 8 ArgoCDโ†”Slack ์šด์˜ ๊ด€์ œ 9 ๋ณด์•ˆ ์ž๋™ํ™” (AWS Rotation + SealedSecrets Re-seal) 10 ํŠธ๋ž˜ํ”ฝ ์‹คํ—˜ (A/B ยท Canary ยท Blue-Green) 11 One-Commit Flow ์ „์ฒด ์ฒด์ธ ๊ฒ€์ฆ 0) ๐Ÿงฐ ์ค€๋น„ (GitOps) charts/fastapi/values/{dev,prod}.yaml์—์„œ ALIAS_SELECTION_MODE/DEFAULT_ALIAS/CANARY_PERCENT ๊ฐ’์„ ์‹œ๋‚˜๋ฆฌ์˜ค๋ณ„๋กœ ์ˆ˜์ • โ†’ git commit โ†’ git push (ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ) /ops/ab_test.sh ์ €์žฅ (์•„๋ž˜ ์ œ๊ณต) 1) ๐Ÿงช CI ์ง„์ž… (GitHub Actions) ...

October 15, 2025 ยท 14 min

[MLOps ์šด์˜ ๊ณ ๋„ํ™” - ์—ํ•„๋กœ๊ทธ]

์—ํ•„๋กœ๊ทธ โ€” โ€œํ•œ ๋ฒˆ์˜ ์ปค๋ฐ‹์œผ๋กœ ๋๊นŒ์ง€ ๊ฐ€๋Š” ์ž์œจํ˜• MLOps ํ”Œ๋žซํผโ€ ๐Ÿ“Œ ์ „์ฒด ๊ฒฝ๋กœ ์š”์•ฝ ์ˆœ์„œ ์ฃผ์ œ 0 ๐Ÿ”— FastAPI A/BยทCanaryยทBlue-Green ์„œ๋น™ ๋ฒ ์ด์Šค 1 ๐Ÿ”— ํ•ซ์Šค์™‘ ๊ณ ๋„ํ™” (/reload ๋ณด์•ˆยทDAG ์ž๋™ํ™”) 2 ๐Ÿ”— Slack Alert ํ†ตํ•ฉ (FastAPIยทAirflow ๊ณต์šฉ) 3 ๐Ÿ”— ๋ชจ๋ธ ๋กค๋ฐฑ ์ž๋™ํ™” (๋“ฑ๋ก ์‹คํŒจ ๋Œ€๋น„ ๋ณต๊ตฌ) 4 ๐Ÿ”— FastAPI ๋กœ๊ทธ ์•ˆ์ •ํ™” (NFS + PV/PVC + Loguru) 5 ๐Ÿ”— Airflow ์•ˆ์ •ํ™” & FastAPI HTTPS ๋ณด์•ˆ 6 ๐Ÿ”— GitOps ๊ณ ๋„ํ™” (Argo CDยทMetalLBยทApplicationSet) 7 ๐Ÿ”— Argo CD Notifications ์ž๋™ํ™” (Slack ์—ฐ๋™) 8 ๐Ÿ”— CI/CD ์šด์˜ ์ž๋™ํ™” (GitHub ActionsยทHelm Lint) 9 ๐Ÿ”— ์‹œํฌ๋ฆฟ ๊ด€๋ฆฌ & ํ‚ค ํšŒ์ „ ์ž๋™ํ™” (AWSยทSealedSecret) 10 ๐Ÿ”— ๊ฒ€์ฆ (Proof of Automation) ๐ŸŽฏ ์ „์ฒด ํšŒ๊ณ  ์š”์•ฝ (0~9๋‹จ๊ณ„) ๋‹จ๊ณ„ ํ•ต์‹ฌ ๋ชฉํ‘œ ์ฃผ์š” ๊ฐœ์„ ์  0 FastAPI ๋ฆฌ๋‰ด์–ผ /predictยท/variantยท/reload๋กœ A/BยทCanaryยทBlue-Green ๊ณต์šฉ ๋ผ์šฐํŒ… 1 ํ•ซ์Šค์™‘ ๋ณด์•ˆ/์ž๋™ํ™” ํ† ํฐ ์ธ์ฆ /reload + Ingress ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ/TLS 2 Slack Alert ํ†ตํ•ฉ FastAPIยทAirflow ๊ณต์šฉ ์•Œ๋ฆผ ํ•จ์ˆ˜ + ์‹คํŒจ ์ฝœ๋ฐฑ Slack ์—ฐ๋™ 3 ๋กค๋ฐฑ ์ž๋™ํ™” ๋“ฑ๋ก ์‹คํŒจ ์‹œ ์ด์ „ ๋ฒ„์ „ ๋กค๋ฐฑ + READY ํ›„ ์ž๋™ /reload 4 ๋กœ๊ทธ ์•ˆ์ •ํ™” FastAPI=NFS, Airflow=S3 ๋กœ๊ทธ ๊ณ„์ธต ๋ถ„๋ฆฌยทํ‘œ์ค€ํ™” 5 Airflow ์•ˆ์ •ํ™”ยทHTTPS Sensor/์˜์กด์„ฑ ์ •๋ฆฌ + cert-manager ๊ธฐ๋ฐ˜ TLS 6 GitOps ์ „ํ™˜ MetalLB + SealedSecret + ApplicationSet ๋ฐฐํฌ ๊ตฌ์กฐ 7 GitOps ๋ชจ๋‹ˆํ„ฐ๋ง ArgoCD โ†’ Slack Sync/Health ์ƒํƒœ ์•Œ๋ฆผ 8 CI/CD ๊ณ ๋„ํ™” Helm Lint + kubeconform + yamllint PR/๋จธ์ง€ ํŒŒ์ดํ”„๋ผ์ธ 9 SecretOps ํ‘œ์ค€ํ™” AWS Key Rotation + SealedSecret Re-seal ์ž๋™ํ™” ๐Ÿ”„ ํ•ต์‹ฌ ...

October 3, 2025 ยท 3 min