m@ksim.pro
К списку статей
Данные 3 мин чтения

Контракты данных между командами: простой инструмент против целого класса поломок

Что такое контракты данных, почему они решают проблему, которую не решают технические инструменты, и как начать внедрение без большого проекта.

Есть класс проблем в работе с данными, который регулярно возникает в компаниях с несколькими командами, разными системами и попытками эти системы связать. Выглядит это примерно так: команда аналитики строит отчёт на основе данных из CRM. Команда разработки CRM меняет структуру выгрузки - добавляет поле, переименовывает колонку, меняет формат даты. Отчёт ломается. Аналитики узнают об этом не от разработчиков, а от бизнеса, который получил неправильные цифры.

Это не техническая проблема. Это организационная проблема. И контракты данных - один из способов её решить.

Что такое контракт данных

Контракт данных - это формальное соглашение между командой, которая производит данные (producer), и командой, которая их потребляет (consumer). Соглашение описывает: какие поля есть в данных, какого они типа, как называются, что означают, как часто обновляются, какие значения допустимы.

Это не сложный технический документ. В простейшем виде - это таблица или файл, где написано: "поле customer_id - целое число, не null, уникальный идентификатор клиента из таблицы customers".

Ключевой принцип: если producer хочет изменить данные так, что это нарушает контракт - он обязан сначала согласовать изменение со всеми consumers. Без этого изменение не происходит.

Почему это решает то, что не решают инструменты

Компании обычно пытаются бороться с поломками через технические меры: мониторинг, автоматические тесты, уведомления. Это полезно, но не устраняет причину.

Причина - отсутствие явного соглашения о том, что данные должны быть стабильными для потребителей. Разработчик, который переименовал колонку, не думал о том, что кто-то на неё опирается. Он просто привёл код в порядок.

Контракт данных меняет это на уровне процесса, а не инструмента. Он делает зависимость видимой и требует явного согласования изменений.

Как это работает на практике

Простая схема для начала:

Первый шаг - инвентаризация. Поймите, какие данные от каких команд потребляют другие команды. Это часто нигде не задокументировано и существует только в головах.

Второй шаг - описание. Для каждой значимой зависимости составьте контракт. Не нужно описывать всё - начните с тех данных, поломка которых причинит реальную боль.

Третий шаг - процесс изменений. Договоритесь: любое изменение, нарушающее контракт, требует уведомления consumers за Х дней и согласования. Это не должна быть сложная бюрократия - достаточно простого уведомления в общем канале.

Четвёртый шаг - версионирование. Когда изменения неизбежны, делайте их с версией: старая структура остаётся на какое-то время, новая добавляется рядом. Это даёт consumers время обновить свою часть.

Когда это особенно важно

Контракты данных особенно ценны в нескольких ситуациях:

  • Команда разработки продукта и команда аналитики работают независимо.
  • Несколько систем потребляют данные из одного источника.
  • Данные идут от партнёров или внешних поставщиков - там контракт становится уже юридически значимым документом.
  • В компании идёт активная разработка и структуры данных меняются часто.

Вопросы для старта

  1. Какие три поломки аналитики или интеграций за последние полгода были вызваны неожиданным изменением данных?
  2. Знают ли все, кто потребляет конкретные данные, что они на них опираются - и знают ли об этом производители этих данных?
  3. Есть ли где-то описание того, что означают ключевые поля в ваших системах?
  4. Как сейчас происходит коммуникация об изменениях в данных между командами?
  5. Что нужно изменить в процессах, чтобы поломки из-за неожиданных изменений данных стали редкостью?

Контракты данных - это не платформа и не большой проект. Это договорённость между людьми, зафиксированная в понятном месте. Начать можно с одной критической зависимости и одного текстового файла.

К списку статей
Контакт

Если эта статья отозвалась - напишите. Я отвечаю лично.

Telegram