ML Lifecycle M3 사이클 — 6 PR 통합 가이드
개요
2026-05-28 단일 세션에서 ML 라이프사이클 4 Gap (#1081/#1082/#1083/#1084) + MLOps Governance Theme G 3 GAP (#1213/#1214/#1215) 의 M3 백엔드 페이즈 를 일괄 구현했다. 5 M3 PR + 1 i18n 회귀 fix = 총 6 PR 머지.
머지된 PR
| PR | 영역 | 변경 요약 |
|---|---|---|
| #1281 | Gap 3 M3 — Lineage emit | pipelines/gend_pipelines/ml/lineage_emit.py 신규. batch_predict_asset 가 Iceberg Gold 적재 후 POST /api/v1/lineage/edges 자동 호출 (fire-and-forget). |
| #1282 | G-2 M3 — Predict PII masking | services/serving/inference_proxy.py 의 predict() 가 request/response body 를 TextPIIMasker 로 재귀 마스킹. fail-open + audit metadata 에 mask_count. |
| #1283 | Gap 4 M3 — Bytewax KEDA | infra/keda/scaledobjects/bytewax-anomaly-scaledobject.yaml 신규. Kafka consumer lag 100+ → scale up (max 4 pods), CPU 70%+ 트리거. |
| #1284 | G-1 M3 — Drift Slack 알림 | services/drift_service.py 의 compute_and_persist() 가 drift_status='breach' 시 NotificationService.dispatch(event_type="drift.breach") 자동 호출. |
| #1285 | G-3 M3 — ML Plugin /train | services/ml_plugins/dagster_trigger.py 신규. POST /api/v1/ml-plugins/{id}/train → Dagster GraphQL launchRun (ml_plugin_train_repo/ml_plugin_train_job selector). 3-layer allowlist 보안 가드. |
| #1286 | i18n — UI 회귀 fix | ui/src/locales/en.json + ko.json 에 mlPlugins.* + drift.* + modelGrants.* 키 220 lines 추가. vitest 78 files / 560 tests PASS. |
검증
CI 통과 매트릭스
| PR | Test API | Test UI | Test Pipelines | Lint | Build |
|---|---|---|---|---|---|
| #1281 | ✅ | ✅ | ✅ | ✅ | ✅ |
| #1282 | ✅ | ✅ | ✅ | ✅ | ✅ |
| #1283 | ✅ | ✅ | ✅ | ✅ | ✅ |
| #1284 | ✅ | ✅ | ✅ | ✅ | ✅ |
| #1285 | ✅ | ✅ | ✅ | ✅ | ✅ |
| #1286 | ✅ | ✅ | ✅ | ✅ | ✅ |
AKS prod 배포
gend-api:0.2.20260528-426f010(= main HEAD426f010e)gend-streaming:0.1.20260528-77db49ee(= #1280 머지 tag)- Build & Deploy run 26578003906 SUCCESS
Endpoint smoke test (인증 필요 = 라우트 정상 등록)
$ curl -o /dev/null -w "%{http_code}\n" https://gend.genon.ai/api/v1/lineage/tables
401
$ curl -o /dev/null -w "%{http_code}\n" https://gend.genon.ai/api/v1/ml-plugins
401
$ curl -o /dev/null -w "%{http_code}\n" https://gend.genon.ai/api/v1/model-grants
401
$ curl -o /dev/null -w "%{http_code}\n" https://gend.genon.ai/api/v1/models/credit_risk/drift
401
후속 작업 (다음 사이클)
- AKS prod KEDA 설치: 현재 prod 클러스터에 KEDA operator 미설치. ScaledObject YAML 적용 시
no matches for kind "ScaledObject" in version "keda.sh/v1alpha1". 별도 epic 으로 KEDA Helm 설치 + ScaledObject apply 필요. - 실 환경 E2E:
- Dagster
ml_batch_demo_credit_risk_job수동 trigger → Iceberg Gold 적재 → ArangoDBdata_lineagecollection 에mlflow.Production.credit_risk→iceberg.gold.predictions_demo_credit_riskedge 자동 생성 확인. POST /api/v1/models/credit_risk/drift/compute수동 호출 → breach 발생 시 Slack 알림 발송 확인.POST /api/v1/ml-plugins/{id}/train호출 → Dagster run 시작 확인.
- Dagster
- UI 스크린샷:
/admin/drift,/admin/model-grants,/admin/ml-pluginsPlaywright 캡처 후docs-site/static/img/m3-cycle/추가. - 추가 plugin/grant 시드 데이터: H2O AutoML provider, AutoKeras provider — separate PR.