[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 ํ”Œ๋žซํผ ๊ตฌ์ถ• : Airflow-MLflow-FastAPI (Helm)]

๐Ÿงฉ ์‹ค์ „ ์‹œ๋‚˜๋ฆฌ์˜ค ๊ธฐ๋ฐ˜ ๊ตฌ์„ฑ ๋ฐฐ๊ฒฝ ์ด ํ”„๋กœ์ ํŠธ๋Š” ๋‹จ์ˆœ ์‹ค์Šต์„ ๋„˜์–ด์„œ, ์‹ค์ œ ๋ฐœ์ƒํ•˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ MLOps ์ธํ”„๋ผ ๊ตฌ์ถ•์„ ๋ชฉํ‘œ๋กœ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋ชจ๋ธ ์‹คํ—˜ ๊ฒฐ๊ณผ๊ฐ€ ๋’ค์„ž์—ฌ ์ถ”์ ์ด ์–ด๋ ค์šด ๋ฌธ์ œ โ†’ MLflow Tracking ์„œ๋ฒ„ + PostgreSQL ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ ๊ตฌ์„ฑ ๋ชจ๋ธ ํŒŒ์ผ ๋ฐ ๋กœ๊ทธ๊ฐ€ ๋กœ์ปฌ์—๋งŒ ์ €์žฅ๋˜์–ด ํ˜‘์—… ๋ฐ ์žฌํ˜„์„ฑ์ด ๋–จ์–ด์ง€๋Š” ๋ฌธ์ œ โ†’ S3 ๊ธฐ๋ฐ˜ artifact store ๊ตฌ์„ฑ + pyfunc ๊ธฐ๋ฐ˜ ๋ชจ๋ธ ์„œ๋น™ ๊ตฌ์กฐ ์„ค๊ณ„ ์ˆ˜์ž‘์—… DAG ๋“ฑ๋ก, ๋ชจ๋ธ ๋ฐฐํฌ ๋“ฑ์˜ ๋น„ํšจ์œจ์  ์šด์˜ ๋ฌธ์ œ โ†’ Airflow + GitSync ์—ฐ๋™์œผ๋กœ ํŒŒ์ดํ”„๋ผ์ธ ์ž๋™ํ™” ๋ฐ ๋ฒ„์ „ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ ...

July 15, 2025 ยท 3 min

[MLOps ํ”Œ๋žซํผ ๊ตฌ์ถ• - 6๋‹จ๊ณ„: ์‹ค์‹œ๊ฐ„ ๋ชจ๋ธ ํ•ซ์Šค์™‘ ๊ตฌ์กฐ ์‹คํ—˜]

์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ Airflow DAG์—์„œ ์กฐ๊ฑด๋ถ€ ๋ชจ๋ธ ๋“ฑ๋ก ํ›„ FastAPI ํ•ซ์Šค์™‘๊นŒ์ง€ E2E ์ž๋™ํ™” ํ๋ฆ„์„ ์‹คํ—˜ํ•ฉ๋‹ˆ๋‹ค. ์„ ์ˆ˜์ง€์‹ MLOps ํ”Œ๋žซํผ ๊ตฌ์ถ• 5๋‹จ๊ณ„: FastAPI ์„œ๋น™ ๋ฐ ํ•ซ์Šค์™‘ ๊ตฌ์กฐ ๊ตฌ์ถ• โ€” FastAPI ๋ชจ๋ธ ๋กœ๋”ฉ๊ณผ /reload API ๊ตฌ์กฐ ์ด ๋‹จ๊ณ„์—์„œ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ ๊ฐœ๋ณ„ ์ปดํฌ๋„ŒํŠธ(Airflow, MLflow, FastAPI)๋ฅผ ๊ฐ๊ฐ ๊ตฌ์„ฑํ–ˆ์ง€๋งŒ, ํ•™์Šต๋ถ€ํ„ฐ ์„œ๋น™๊นŒ์ง€์˜ ์ž๋™ํ™” ํ๋ฆ„์„ E2E๋กœ ๊ฒ€์ฆํ•ด์•ผ ์‹ค์ œ ์šด์˜ ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ๋Š” Airflow DAG์—์„œ ๋ชจ๋ธ ํ•™์Šต โ†’ ์„ฑ๋Šฅ ๊ธฐ์ค€ ๋ถ„๊ธฐ โ†’ MLflow ๋“ฑ๋ก โ†’ FastAPI ํ•ซ์Šค์™‘๊นŒ์ง€ ์ „์ฒด ํŒŒ์ดํ”„๋ผ์ธ์„ ์‹คํ—˜ํ•ฉ๋‹ˆ๋‹ค. ...

July 10, 2025 ยท 2 min

[MLOps ํ”Œ๋žซํผ ๊ตฌ์ถ• - 5๋‹จ๊ณ„: FastAPI ์„œ๋น™: MLflow ๋ชจ๋ธ ์—ฐ๋™ ๋ฐ ํ•ซ์Šค์™‘ ๊ตฌ์กฐ ๊ตฌ์ถ•]

์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ MLflow์— ๋“ฑ๋ก๋œ ๋ชจ๋ธ์„ FastAPI๋กœ ์„œ๋น™ํ•˜๊ณ , Stage ๊ธฐ๋ฐ˜ ํ•ซ์Šค์™‘๊ณผ ๋ชจ๋ธ ์ •๋ณด ์กฐํšŒ API๋ฅผ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค. ์„ ์ˆ˜์ง€์‹ MLOps ํ”Œ๋žซํผ ๊ตฌ์ถ• 4๋‹จ๊ณ„: Airflow GitSync + Secret ์—ฐ๋™ โ€” Helm ๋ฐฐํฌ์™€ Secret ๋งˆ์šดํŠธ ํŒจํ„ด ์ด ๋‹จ๊ณ„์—์„œ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ ๋ชจ๋ธ์„ ์ˆ˜๋™์œผ๋กœ ์„œ๋น™ ์„œ๋ฒ„์— ๋ณต์‚ฌํ•˜๋ฉด ๋ฐฐํฌ ์‹ค์ˆ˜์™€ ๋ฒ„์ „ ๋ถˆ์ผ์น˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. MLflow Registry์—์„œ Stage๋ณ„ ๋ชจ๋ธ์„ ์ž๋™ ๋กœ๋”ฉํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค์–ด, ์ฝ”๋“œ ๋ณ€๊ฒฝ ์—†์ด ๋ชจ๋ธ์„ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ“ ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์„ฑ๋„ ๐Ÿณ FastAPI ์ปค์Šคํ…€ ์ด๋ฏธ์ง€ Dockerfile FROM python:3.12 WORKDIR /app COPY app /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"] requirements.txt fastapi==0.110.2 uvicorn==0.29.0 mlflow==2.13.0 pandas==2.1.4 scikit-learn==1.6.1 pydantic==2.7.1 boto3==1.34.113 numpy==1.26.4 packaging==24.2 psutil==7.0.0 scipy==1.15.3 setuptools==69.5.1 ๋นŒ๋“œ & ํ‘ธ์‹œ docker build -t ghcr.io/hoizz/fastapi-ml:mlflow-model-info . docker push ghcr.io/hoizz/fastapi-ml:mlflow-model-info ๐Ÿ“„ app/main.py (ํ•ต์‹ฌ ๋ถ€๋ถ„) app = FastAPI() model = None model_info = {} def load_model_from_mlflow(): global model, model_info tracking_uri = os.environ.get("MLFLOW_TRACKING_URI") model_name = os.environ.get("MODEL_NAME") model_stage = os.environ.get("MODEL_STAGE", "Production") mlflow.set_tracking_uri(tracking_uri) model_uri = f"models:/{model_name}/{model_stage}" model = mlflow.pyfunc.load_model(model_uri) client = MlflowClient() latest = client.get_latest_versions(name=model_name, stages=[model_stage])[0] model_info = { "model_name": model_name, "stage": model_stage, "version": latest.version, "run_id": latest.run_id, "model_uri": model_uri, } @app.on_event("startup") def startup_event(): load_model_from_mlflow() @app.get("/model-info") def get_model_info(): return model_info @app.post("/predict") async def predict(request: Request): input_data = await request.json() prediction = model.predict(input_data) return {"prediction": prediction.tolist()} ์ „์ฒด ์ฝ”๋“œ: GitHub (main.py) ...

July 7, 2025 ยท 2 min

[MLOps ํ”Œ๋žซํผ ๊ตฌ์ถ• - 4๋‹จ๊ณ„: Airflow : GitSync + ์™ธ๋ถ€ PostgreSQL + Secret ์—ฐ๋™]

์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ Airflow๋ฅผ Helm์œผ๋กœ ๋ฐฐํฌํ•˜๋ฉด์„œ GitSync DAG ๋™๊ธฐํ™”, ์™ธ๋ถ€ PostgreSQL, AWS Secret ๋งˆ์šดํŠธ๋ฅผ ์—ฐ๋™ํ•ฉ๋‹ˆ๋‹ค. ์„ ์ˆ˜์ง€์‹ MLOps ํ”Œ๋žซํผ ๊ตฌ์ถ• 3๋‹จ๊ณ„: MLflow Helm ๊ตฌ์„ฑ โ€” Helm ๊ธฐ๋ฐ˜ ๋ฐฐํฌ์™€ Secret ์ฃผ์ž… ํŒจํ„ด ์ด ๋‹จ๊ณ„์—์„œ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ DAG ์ฝ”๋“œ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์—…๋กœ๋“œํ•˜๋ฉด ๋ฒ„์ „ ๊ด€๋ฆฌ์™€ ํ˜‘์—…์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. Git ๊ธฐ๋ฐ˜ DAG ๊ด€๋ฆฌ(GitSync)๋ฅผ ๋„์ž…ํ•˜๊ณ , SSH Key/AWS ์ธ์ฆ์„ Secret์œผ๋กœ ์ฃผ์ž…ํ•˜๋ฉฐ, ์™ธ๋ถ€ PostgreSQL์„ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋กœ ์—ฐ๋™ํ•˜๋Š” GitOps ํŒจํ„ด์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ“ ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์„ฑ๋„ ๐Ÿณ ์ปค์Šคํ…€ Airflow ์ด๋ฏธ์ง€ ๊ตฌ์„ฑ GitSync DAG์—์„œ MLflow ์—ฐ๋™ ๋˜๋Š” AWS SDK ์‚ฌ์šฉ์„ ์œ„ํ•œ Python ํŒจํ‚ค์ง€ ์„ค์น˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ...

July 3, 2025 ยท 3 min

[MLOps ํ”Œ๋žซํผ ๊ตฌ์ถ• - 3๋‹จ๊ณ„: MLflow : PostgreSQL + S3 ์—ฐ๋™ ๊ธฐ๋ฐ˜ Helm ๊ตฌ์„ฑ]

์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ MLflow๋ฅผ PostgreSQL + S3 ๋ฐฑ์—”๋“œ๋กœ ๊ตฌ์„ฑํ•˜์—ฌ Kubernetes์— Helm ๋ฐฐํฌํ•˜๊ณ , ์ปค์Šคํ…€ ์ด๋ฏธ์ง€์™€ Ingress๋ฅผ ์—ฐ๋™ํ•ฉ๋‹ˆ๋‹ค. ์„ ์ˆ˜์ง€์‹ MLOps ํ”Œ๋žซํผ ๊ตฌ์ถ• 2๋‹จ๊ณ„: S3 & PostgreSQL Secret ๊ด€๋ฆฌ โ€” Secret/ConfigMap ์ฃผ์ž… ์ „๋žต ์ด ๋‹จ๊ณ„์—์„œ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ ํ•œ ํ”„๋กœ์ ํŠธ์— ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ ๋ชจ๋ธ์ด ๋“ฑ์žฅํ•˜๋ฉด, ๊ฐ ์‹คํ—˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ/๋ฉ”ํŠธ๋ฆญ/์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ์ถ”์ ํ•  ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋กœ์ปฌ MLflow UI(SQLite + file ์ €์žฅ)๋กœ๋Š” ํŒ€ ๊ณต์œ ์™€ ์•„ํ‹ฐํŒฉํŠธ ์˜์†์„ฑ์ด ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ๋Š” MLflow๋ฅผ PostgreSQL(๋ฉ”ํƒ€๋ฐ์ดํ„ฐ) + S3(์•„ํ‹ฐํŒฉํŠธ) ๋ฐฑ์—”๋“œ๋กœ ๊ตฌ์„ฑํ•˜๊ณ  Helm์œผ๋กœ Kubernetes์— ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. ...

June 30, 2025 ยท 3 min

[MLOps ํ”Œ๋žซํผ ๊ตฌ์ถ• - 2๋‹จ๊ณ„: S3 & PostgreSQL ์—ฐ๋™์„ ์œ„ํ•œ ๊ตฌ์„ฑ ๋ฐ Secret ๊ด€๋ฆฌ ์ „๋žต]

์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ Kubernetes Secret๊ณผ ConfigMap์œผ๋กœ S3/PostgreSQL ์ธ์ฆ ์ •๋ณด๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ฃผ์ž…ํ•˜๋Š” ์ „๋žต์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์„ ์ˆ˜์ง€์‹ MLOps ํ”Œ๋žซํผ ๊ตฌ์ถ• 1๋‹จ๊ณ„: ์ธํ”„๋ผ ์„ค๊ณ„ ๋ฐ ํ™˜๊ฒฝ ์ค€๋น„ โ€” NFS/PostgreSQL/S3 ํ™˜๊ฒฝ ๊ตฌ์ถ• ์ด ๋‹จ๊ณ„์—์„œ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ ๋ชจ๋“  ๊ตฌ์„ฑ ์š”์†Œ(MLflow, Airflow, FastAPI)๊ฐ€ ์™ธ๋ถ€ DB, GitHub, S3 ๋“ฑ ๋ฏผ๊ฐํ•œ ๋ฆฌ์†Œ์Šค์™€ ์—ฐ๋™๋ฉ๋‹ˆ๋‹ค. API ํ‚ค์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ YAML์ด๋‚˜ ์ฝ”๋“œ์— ์ง์ ‘ ๋„ฃ์œผ๋ฉด ๋ณด์•ˆ ์œ„ํ—˜์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ๋Š” Kubernetes Secret๊ณผ ConfigMap์„ ํ™œ์šฉํ•˜์—ฌ ์ธ์ฆ ์ •๋ณด๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•˜๊ณ  ์ฃผ์ž…ํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค. ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์„ฑ๋„ ...

June 26, 2025 ยท 3 min

[MLOps ํ”Œ๋žซํผ ๊ตฌ์ถ• - 1๋‹จ๊ณ„: ์ธํ”„๋ผ ์„ค๊ณ„ ๋ฐ ํ™˜๊ฒฝ ์ค€๋น„]

์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ Kubernetes ๊ธฐ๋ฐ˜ MLOps ์ธํ”„๋ผ์˜ ์ „์ฒด ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•˜๊ณ , NFS/PostgreSQL/S3 ๊ธฐ๋ฐ˜ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค. ์„ ์ˆ˜์ง€์‹ Airflow 5๋‹จ๊ณ„: PythonOperator + MLflow Tracking ์—ฐ๋™ โ€” Level 1 ์™„๋ฃŒ ํ›„ ์‹œ์ž‘ ๊ถŒ์žฅ ์ด ๋‹จ๊ณ„์—์„œ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋ฌธ์ œ ML ๋ชจ๋ธ์„ ์‹คํ—˜ํ•˜๊ณ  ์ถ”์ ํ•˜๋ ค๋ฉด ๋‹จ์ˆœ Jupyter Notebook์œผ๋กœ๋Š” ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. ํ•™์Šต ์ด๋ ฅ ์ถ”์ (MLflow), ํŒŒ์ดํ”„๋ผ์ธ ์ž๋™ํ™”(Airflow), ๋ชจ๋ธ ์„œ๋น™(FastAPI)์„ ํ•˜๋‚˜์˜ ํ”Œ๋žซํผ์—์„œ ์šด์˜ํ•˜๋ ค๋ฉด Kubernetes ๊ธฐ๋ฐ˜ ์ธํ”„๋ผ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ๋Š” ๊ทธ ๊ธฐ๋ฐ˜์ด ๋˜๋Š” NFS, PostgreSQL, S3, Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ํ™˜๊ฒฝ์„ ์„ค๊ณ„ํ•˜๊ณ  ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค. ...

June 23, 2025 ยท 3 min