8.1.1 · блок 8
Capstone: неделя 1 — каркас
Capstone: неделя 1 — каркас
Зачем это нужно
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→ 200 - [ ] Jenkins 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.