Зачем это нужно
Capstone — интеграция модулей 1–7 в один ML-продукт на платформе MDP. Первая неделя не про F1 score; про каркас: repo, CI, namespace, контракты, skeleton inference, GitOps. Без каркаса недели 2–3 превращаются в хаотичный «догоняем Dockerfile в ночь перед защитой».
Этот урок — план работ и критерии приёмки недели 1 для команд и solo-студентов.
Основные идеи
Цель недели 1. End-to-end скелет проходит pipeline: commit → CI green → образ в registry → deploy в dev namespace → health endpoint отвечает (модель может быть stub).
Deliverables checklist.
| # | Артефакт | Связь с курсом |
|---|---|---|
| 1 | Git repo (monorepo или multi) | 1.2 Git, branching |
| 2 | README + C4 Context/Container (draft) | 2.2 C4 |
| 3 | OpenAPI /predict contract |
4.1 ML as API |
| 4 | Dockerfile inference (MLServer base) | 3.1, 7.2 |
| 5 | Jenkinsfile: lint, test, build, push | 3.2 CI/CD |
| 6 | Helm chart or raw manifests | 3.4 Helm |
| 7 | Argo CD Application (dev) | 3.7 GitOps |
| 8 | Namespace + quota request | 3.3 K8s |
| 9 | Stub model + smoke test | 7.2.2 |
| 10 | Jira epic + 3 stories на неделю 2 | 1.1 processes |
Repo structure (рекомендация).
capstone-churn/ ├── README.md ├── docs/ │ ├── architecture/ # C4, ADR │ └── api/openapi.yaml ├── training/ # notebook → script (week 2) ├── feature_repo/ # Feast (optional week 2) ├── serving/ │ ├── model-settings.json │ ├── Dockerfile │ └── tests/ ├── deploy/ │ └── helm/churn-serving/ ├── Jenkinsfile └── .gitignore
OpenAPI stub. Зафиксируйте JSON schema входа/выхода до обучения — contract-first (4.1).
Inference stub. MLServer с dummy sklearn или constant predictor — цель проверить платформу, не ML.
GitOps dev deploy.
`
deploy/argo/churn-dev.yaml
spec: destination: namespace: ml-capstone-dev source: path: deploy/helm/churn-serving helm: valueFiles: [values-dev.yaml] `
Observability hooks (minimal). ServiceMonitor or Pod annotations для Prometheus — даже если dashboard на неделе 3, metrics должны течь с недели 1.
Definition of Done недели 1.
curl https://churn-dev.../v2/health/ready→ 200Jenkins main branch green
Argo CD Application Synced + Healthy
OpenAPI в repo, reviewed одним teammate
Нет secrets в Git (3.2.4)
Риски недели 1.
| Риск | Mitigation |
|---|---|
| Нет доступа к cluster | Ticket platform day 1 |
| Scope creep (Feast+Kafka day 3) | Freeze scope in ADR |
| Solo student overload | Cut Helm, use plain Deployment OK |
Как это выглядит на практике
День 1–2: Epic, repo, OpenAPI, architecture sketch.
День 3–4: Dockerfile + local MLServer smoke; Jenkins build.
День 5: Helm + Argo; fix probes until Ready.
Demo к преподавателю: 5 мин — показать Git → Jenkins → Argo → curl health/infer stub.
Team roles (3 человека).
Platform track: Jenkins, Helm, Argo.
ML track: OpenAPI, model-settings, tests.
Docs track: C4, README, Jira.
Roles rotate week 2.
Что сделать после занятия
Создайте repo и README с описанием кейса (churn / fraud / recommend — один на команду).
Commit OpenAPI v0.1 и получите review.
Добейтесь green deploy stub в
ml-capstone-dev.