
Бывает, что в рабочий мессенджер без остановки сыпятся алерты, тесты уже месяц висят красными и непонятно, кто за что отвечает и что на самом деле важно.
Миккель Денгсё и Петр Янда вместе с дата-отделами сотен стартапов и компаний из Fortune 500 составили «Гайд по созданию высококачественных дата‑продуктов» для тех, кто устал от хаоса и хочет навести порядок в тестах, управлении качеством и инцидентами.
Разберем главные инсайты и наглядные кейсы.
Как выбраться из спагетти-линейджа
У Aiven было свыше 900 dbt-моделей. Из-за круговых зависимостей линейдж превратился в запутанный комок спагетти. Особенно страдали ключевые расчеты вроде ARR с сотнями апстрим-зависимостей: любое изменение цепляло половину стека.
Категории были большими и размытыми: «Маркетинг», «Продажи», «Продукт». Когда где‑то ломались данные, алерты сообщали, что сломался, допустим, «Маркетинг», но никто толком не понимал:
Что именно сломалось?
Насколько это критично?
Кто за это отвечает?
На какие бизнес‑процессы это влияет?
Проблемы диагностировали медленно, а решали с большим трудом.
Методично выделяя из больших продуктов вроде «Маркетинга» продукты поменьше, например «Атрибуция маркетинга», в Aiven стали быстрее находить ошибки и понимать, кто за них отвечает.
Правило 1: мыслите продуктами, а не отделами
Разбейте расплывчатые корзины вроде «Маркетинг» на конкретные продукты под одну задачу: «Атрибуция маркетинга», «CLTV», «Market Research». Так при сбое понятно, что именно рухнуло и как срочно нужно реагировать (атрибуция — сразу, ресерч — позже).
Оформляйте продукт так, чтобы короткая карточка всегда была рядом с кодом: задача, владелец (команда и канал), приоритет (P1–P4), входы/выходы, перечень ключевых таблиц/моделей.
Правило 2: держите правильную глубину
Слишком крупные продукты никак не помогают расставлять приоритеты. В Aiven ушли на уровень внутри домена: в «Маркетинге» выделили, например, «Attribution» (P1) и «Market Research» (P3). Приоритеты сразу перестали быть предметом споров.
Правило 3: назначайте владельца по-взрослому
Не «вся дата-команда» и не «один герой». Привязывайте к командам и их каналам, храните в метаданных (owner-теги, dbt groups), проверьте в CI, что у каждой модели есть владелец. Тогда эскалации предсказуемы.
Если у всего высокий приоритет, то у всего низкий приоритет
Это как с торрентами: если сразу для всех загрузок выставить высокий приоритет, то ничего не изменится, потому что их относительный вес будет тем же.
Так было в Lunar, где каждая команда считала свои данные самыми важными. Это мешало работе.
При этом каждая команда была права: ее данные — самые важные, но только для нее самой. Важность элементов системы не могут оценивать сами элементы.
Решение простое: раз в квартал руководство, стоящее над всеми командами, стало собираться, чтобы определить самые критичные данные на ближайшее время и установить понятные SLA, например, время реакции на сбои.
Правило 1: расставляйте приоритеты сверху, а не снизу
Если каждая команда помечает свои данные как P1, нечем управлять: все важное = ничего не важного.
Как делать:
Раз в квартал собирайте «совет приоритетов» (C-level + лиды продуктов и данных).
Формируйте единый список топ-10 критичных дата-продуктов на квартал.
Решайте по простым критериям: деньги под риском, клиентская поверхность, регуляторный риск.
Для остальных продуктов — P2/P3/P4 по убыванию важности.
Правило 2: привязывайте приоритет к действиям и срокам
Метка P1 без сроков — пустой ярлык. Для каждого уровня задайте явные цели реакции и восстановления.
Как делать:
P1 (клиент видит): подтверждение — 5 мин, обнаружение — до 10 мин, уведомление клиента — до 30 мин, временный обход сразу, фикc в приоритет.
P2 (критичные выгрузки/фон): подтверждение — 30 мин, фикc — в тот же день.
P3 (аналитика/BI): до конца следующего рабочего дня.
P4 (низкий риск): по бэклогу.
Назначьте владельца и on-call под каждый P-уровень.
Правило 3: держите приоритеты в тонусе
Приоритеты расползаются: все снова становятся P1.
Как делать:
Лимит на P1. Например, не больше 8 P1-продуктов на компанию. Хочешь добавить новый P1 — сними один старый.
Пересмотр раз в квартал. Обновляйте топ-10, смотрите факты: какие сбои реально били по деньгам и клиентам.
Фильтр апгрейда. Повышать приоритет можно только с бизнес-обоснованием: деньги под риском, клиентская поверхность, регуляторика.
Публичная доска. Таблица по доменам: список продуктов, их P-уровень и SLA. Видно всем.
Не нужно все тестировать, а то оглохнете от шума
В Google и Monzo на первых порах придавали огромное значение проверкам всех таблиц и столбцов. В результате получали сотни алертов, большинство которых не имели вообще никакого значения.
Помогла смена стратегии: тестировать стали в первую очередь источники данных, которые влияют на все остальное. Шум стих, система стала надежнее.
Правило 1: привяжите тест к действию
Тест без понятного next step — мусор. Ставьте проверку только там, где заранее известно: кто реагирует и что делает.
Пример:
Вчерашние заказы не пришли до 08:15 по графику → владелец перезапускает джоб, если не помогло — переключает на резервный источник и пишет статус.
Плохой тест:
В колонке price есть null. Если нет заранее описанного шага исправления, такой алерт только шумит.
Как понять, что тест полезен:
За квартал тест привел к фиксу хотя бы N раз и почти не давал ложных срабатываний. Если нет, перепишите или выключите.
Правило 2: тестируйте узлы с большим радиусом влияния
Не размазывайте силы по сотням таблиц. Найдите узлы влияния — точки, от которых зависят десятки витрин: каталоги товаров, справочники клиентов, платежные загрузки, ключевые объединения.
Сделайте короткий список топ 20 узлов по числу зависимых артефактов и дайте им усиленные проверки: корректность форматов, полнота, отсутствие дубликатов, стабильная структура, граничные значения.
Например, ошибка в «Каталоге товаров» ломает цены, остатки и маржинальность сразу в десяти отчетах. Один точный тест на каталог дает больше пользы, чем сотня проверок внизу по цепочке.
Правило 3: держите тесты в форме и соблюдайте гигиену
Тесты плодятся, стареют и начинают шуметь. Команда тонет в алертах и перестает реагировать.
Перед добавлением теста — паспорт из 3 строк:
Цель (что ловим) → Владелец (кто чинит) → Действие (что делает при срабатывании). Нет одной из строк — тест не ставим.
Лимит шума (alert budget):
Задайте потолок, например не больше 5 алертов в день на команду. Превысили — пауза на новые тесты, чистим шумные.
Ежемесячный разбор «польза vs шум». Для каждого теста смотрим:
Всего срабатываний.
Полезные (привели к фиксу).
Ложные/дубли.
0 полезных за 90 дней → удалить/переписать. 30% ложных → переписать (порог, окно ожидания, условия). Дубли ловят одно и то же → объединить в один.
Календарь исключений:
Заложите выходные поставщика, окна обслуживания, праздники. Для «свежести» в эти периоды увеличивайте таймаут, иначе получите плановые «ложные» алерты.
Жизненный цикл теста (и когда двигать):
Черновик → Активный → Проверенный → Устарел → Архив. Переводим в «Устарел», если 90 дней без пользы, в «Архив» — после замены новым.
Пример:
Тест «Аномально мало заказов по понедельникам» дал 12 срабатываний, из которых 10 ложных (праздники). Добавили календарь и окно ожидания до 10:00 — за месяц 3 срабатывания, 3 фикса, 0 ложных. Полезность выросла, шум исчез.
Мораль: устранять ошибки в производных — вычерпывать воду, а исправить ошибки в источнике данных — залатать течь.
Превращайте риск в источник доверия
Shalion — платформа екоммерс-аналитики: клиенты видят дашборды и выгрузки, по которым принимают решения. По сути, продукт — сами данные в реальном времени.
Когда данные — это продукт, доверие клиента становится главным KPI. Ошибки неизбежны: падают пайплайны, меняются схемы, растут лаги. Опасна не сама ошибка, а тишина, размытая ответственность и лавина пустых алертов.
Ниже — рабочие правила из практики Shalion: как сделать алерт действием, беречь внимание команды, заранее согласовать реалистичную надежность и мерить не только «как работает», но и «что под контролем». Это поможет превратить риск в источник доверия.
Правило 1: алерт должен вести к действию
Каждое уведомление — мини-план, а не крик «Все пропало». В алерте должны быть: что сломалось, где именно, кто владелец, кого задело, что делать (ссылки на инструкцию и цепочку зависимостей). Договоритесь про реакцию: подтверждение за 5 минут, через 10 — эскалация. Тогда алерты чинят, а не читают.
Правило 2: берегите внимание команды
Не рассылайте 150 уведомлений «Свежесть просела», если упал один пайплайн. Пусть прилетает один сигнал с корневой причиной, списком витрин и владельцем. Некритичные вещи пусть уходят в профильные каналы или в еженедельный разбор.
Правило 3: договоритесь про реальность заранее
Не все должно быть 99,9%. Для клиентской поверхности — да. Для внутренних витрин часто достаточно 95%. Это нормальная инженерная экономика: где риск ниже, там дорогая надежность не окупается. Важно проговорить это с клиентом до инцидентов.
В Shalion не прикидываются, будто ошибок не бывает. Они эти ошибки быстро находят, чинят и открыто сообщают клиенту. Так угроза клиентскому доверию становится источником этого доверия. Снимаем шляпу.
Правило 4: меряйте не только «как работает», но и «что вообще под контролем»
Зеленый дашборд может скрывать красные источники. Если вы смотрите лишь на прохождение проверок в витрине, то не видите, сколько критичных объектов вообще никем не контролируется, сбои проскочат — и ударят по доверию.
Держите рядом две метрики:
Coverage — доля важных объектов, которые вы реально проверяете.
Quality/SLA — доля проходящих проверок на этих объектах.
Правильно их читайте:
Coverage низкий, Quality высокий → иллюзия стабильности. Сначала расширьте покрытие на критичный апстрим (коннекторы, ключевые join), иначе следующий сбой не заметите.
Coverage высокий, Quality низкий → все видно, но работает плохо. Чините причины: договоритесь с источником, оптимизируйте пайплайн, сократите MTTR, усиливайте тесты там, где реально ломается.
Обе высокие → фиксируйте практики и поддерживайте уровень.
Бывает, что Coverage 60% при Quality 99% — это опасный комфорт: 40% цепочки остаются в слепой зоне. Доведите Coverage хотя бы до 90%, потом улучшайте Quality.
Если все проверенные данные в порядке, это значит, что вы не проверили все те, которые не в порядке.
Гайд не привязывается к инструментам, а учит принципам. Подходит командам из 5 человек и большим отделам. Полезен независимо от масштаба компании и зрелости дата-культуры.
Сохраните себе, расскажите коллегам.