Перейти к содержанию

Коммуникация 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:

  1. Добавляет себя в contract.yaml → metadata.systems.consumers
  2. Указывает: 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"
  1. Producer делает review и approve MR
  2. После merge:
  3. Consumer автоматически получает права на чтение topic в Kafka (через CI)
  4. Consumer добавляется в CODEOWNERS для этого контракта

3. Feedback Loop

Когда consumer обнаружил проблему с данными:

  1. Создать Issue в contracts repo с label data-quality
  2. Заполнить Issue template:
  3. Что случилось (какие данные некорректны)
  4. Когда (timestamp, период)
  5. Какой impact на consumer
  6. 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:

  1. CI автоматически определяет affected consumers (см. Breaking Change Workflow)
  2. CODEOWNERS назначает consumers как reviewers MR
  3. Producer обязан показать impact до merge
  4. Consumer имеет право вето через reject MR
  5. Timeline миграции согласовывается в MR thread

5. Unsubscription

Когда consumer больше не использует данные:

  1. Consumer создаёт MR на удаление себя из consumers в contract.yaml
  2. Producer approve
  3. После merge: consumer убирается из CODEOWNERS → больше не блокирует MR producer'а

Это важно: неактуальные consumers в CODEOWNERS замедляют процесс для всех.

См. также