Коммуникация Producer-Consumer¶
Обзор¶
Workflow взаимодействия между producers и consumers проходит через 5 этапов: Discovery, Subscription, Feedback Loop, Breaking Change Negotiation, Unsubscription.
1. Discovery¶
Consumer находит нужный data product одним из способов:
- OpenMetadata (https://openmetadata.kruma.io) — каталог данных с поиском. Видно: owner, schema, SLA, quality rules, lineage
- GitLab — просмотр
contracts/domains/в репозитории контрактов
2. Subscription (Регистрация consumer)¶
Consumer создаёт MR в contracts repo:
- Добавляет себя в
contract.yaml → metadata.systems.consumers - Указывает: team, contact, какие поля использует (
assets_used), для чего, criticality
consumers:
- name: "Revenue Forecast"
team: "data-science"
contact: "ds-team@company.ru"
gitlab_group: "kruma/data-science"
assets_used:
- field: "order_total"
usage: "Feature для ML модели прогнозирования выручки"
- field: "status"
usage: "Фильтрация по завершённым заказам"
criticality: "high"
- Producer делает review и approve MR
- После merge:
- Consumer автоматически получает права на чтение topic в Kafka (через CI)
- Consumer добавляется в CODEOWNERS для этого контракта
3. Feedback Loop¶
Когда consumer обнаружил проблему с данными:
- Создать Issue в contracts repo с label
data-quality - Заполнить Issue template:
- Что случилось (какие данные некорректны)
- Когда (timestamp, период)
- Какой impact на consumer
- Severity (critical / high / normal)
SLA на response от producer:
| Severity | Response Time | Resolution Time |
|---|---|---|
| Critical | 1 час | 4 часа |
| High | 4 часа | 24 часа |
| Normal | 24 часа | 72 часа |
Эскалация: если producer не ответил в рамках SLA → уведомление manager + Mattermost канал команды.
4. Breaking Change Negotiation¶
Когда producer планирует breaking change:
- CI автоматически определяет affected consumers (см. Breaking Change Workflow)
- CODEOWNERS назначает consumers как reviewers MR
- Producer обязан показать impact до merge
- Consumer имеет право вето через reject MR
- Timeline миграции согласовывается в MR thread
5. Unsubscription¶
Когда consumer больше не использует данные:
- Consumer создаёт MR на удаление себя из
consumersвcontract.yaml - Producer approve
- После merge: consumer убирается из CODEOWNERS → больше не блокирует MR producer'а
Это важно: неактуальные consumers в CODEOWNERS замедляют процесс для всех.
См. также¶
- Breaking Change Workflow — детальный процесс breaking changes
- Change Management — роли и maturity curve
- Migration Playbook — техническая миграция schema