Зачем это нужно
Код отвечает на вопрос как система работает сейчас. Но команда также должна знать зачем принято решение, как поднять сервис в 3 часа ночи и кто владелец компонента. Confluence — wiki-корпоративного уровня от Atlassian: место для документации, которая не помещается в комментарии к коду.
Если Jira — «что делаем сейчас», то Confluence — «что мы знаем о системе в целом». Без связки Jira ↔ Confluence теряется контекст: через полгода никто не вспомнит, почему выбрали batch-inference вместо online.
Основные идеи
Типы страниц, которые должен знать инженер:
Service Page (страница сервиса) — паспорт микросервиса или ML-компонента:
Назначение и владелец (owner + backup).
Репозиторий, ссылка на CI/CD.
Зависимости: базы, очереди, другие сервисы.
SLO: доступность, latency, error budget.
Контакты on-call.
Runbook (руководство по эксплуатации) — пошаговые инструкции для типовых и аварийных ситуаций:
Как проверить, что сервис жив (
curl, Grafana dashboard).Как перезапустить pod / systemd-unit.
Как откатить релиз.
Что делать при алерте «ModelLatencyHigh».
Runbook пишут так, чтобы дежурный инженер без глубокого знания ML мог стабилизировать сервис.
ADR (Architecture Decision Record) — короткая запись об архитектурном решении. Формат: контекст → решение → последствия. ADR хранят в Confluence или в репозитории (docs/adr/). Подробнее — в модуле 2.2.
Связь Jira ↔ Confluence:
В Story вставляют макрос «Ссылка на Confluence» — design doc, runbook.
На странице Confluence — макрос «Jira Issues» — список открытых задач по компоненту.
При закрытии Epic обновляют Service Page: новая версия API, изменившиеся зависимости.
Принцип «docs as part of DoD»: если вы выкатили фичу, но не обновили runbook — задача не Done.
Как это выглядит на практике
Страница «ML Scoring Service» в Confluence:
` Owner: @ivanov (MLE), backup: @petrov (SRE) Repo: gitlab.company.com/ml/scoring-service Prod URL: https://scoring.internal/v1/predict SLO: 99.5% availability, p95 < 200ms
Dependencies:
- PostgreSQL (features store)
- Redis (model cache)
- S3 (model artifacts)
Runbook: [ссылка на дочернюю страницу] ADR-003: Batch vs Online inference [ссылка] Open Jira: [макрос JQL: component = scoring AND status != Done] `
Runbook «Scoring Service — High Error Rate»:
Открыть Grafana dashboard «Scoring Overview».
Проверить
kubectl get pods -n ml-scoring— все Running?Если CrashLoopBackOff — посмотреть логи:
kubectl logs -l app=scoring --tail=100.Откат:
helm rollback scoring 42.Эскалация: #ml-oncall в Slack, создать Incident в Jira.
Story ML-89 в Jira содержит в описании: «Design: Confluence → ML Scoring / ADR-004 Feature Store Migration».
Что сделать после занятия
Создайте шаблон Service Page для учебного ML-сервиса (можно в Markdown локально).
Напишите runbook на 1 страницу: «сервис не отвечает» — минимум 5 шагов с командами.
Опишите, какие 3 ссылки из Jira-ticket вы бы добавили на Confluence.