
В Островке мы строим экосистему вокруг данных — от хранилищ и пайплайнов до систем мониторинга и каталогов. Но когда всё только начиналось, под часть наших процессов просто не существовало готовых решений. Так появился наш собственный дата-каталог DataPortal — лёгкий, быстрый и идеально подходящий для небольшой компании.
Со временем всё изменилось: объём данных вырос в десятки раз, появились новые команды, и вместе с этим начали звучать вопросы вроде «где лежат данные для этого дашборда?», «кому писать, если он упал?» и «можно ли этим данным доверять?». Так мы поняли, что пора взрослеть — и искать инструмент, который поможет масштабировать не только инфраструктуру, но и дата-культуру.
Мы выбрали DataHub — open-source каталог, обещавший прозрачность, автоматизацию и гибкость. Развернули, подключили источники, построили lineage, и даже порадовались, что всё заработало с первого раза. А потом стало ясно: DataHub не заменил наш DataPortal. Более того, оба инструмента отлично дополнили друг друга — инженерное ядро и удобное окно в данные для бизнеса.
Почему два дата-каталога оказались лучше одного, как это повлияло на культуру работы с данными и что нам дал DataHub помимо красивых графов lineage — рассказываем под катом.
Привет, Хабр! Я Алексей Чумагин, Data Quality Team Lead в Островке. В недавнем посте я рассказал об инструментах, с помощью которых мы обеспечиваем качество данных в компании. Сегодня сделаю акцент на управлении метаданными: поделюсь историей нашего пути от собственного каталога DataPortal до опенсорсного DataHub.
Дальше — практический разбор: где наш дата-каталог перестал справляться с инженерными задачами, какие грабли нас ждали при переходе на DataHub и как в итоге родилась двухуровневая архитектура каталогов (спойлер: сейчас она работает для нас лучше, чем любое «универсальное» решение).
Дата-каталогов не бывает много?
Когда в компании только формировалась культура работы с данными, DataPortal реально выручал. Он был лёгким, понятным и по-домашнему удобным: открыл — нашёл нужное, не утонул в настройках. Благодаря этому быстро стал точкой входа для аналитиков и инженеров.

Данных становилось всё больше, и для оптимизации их хранения мы решили переехать с Vertica на Ozone S3. Тогда-то и начали проявляться технические ограничения DataPortal:
второй источник данных подключить оказалось нетривиально;
с ростом количества объектов потребовался продвинутый поиск;
lineage отсутствовал как класс;
никакого внешнего API (значит, никакой автоматизации);
К тому же регулярно приходили новые сотрудники, не знакомые с внутренним инструментом, а это осложняло онбординг.
Чем чаще аналитики спрашивали «где лежат новые данные?», «кто отвечает за витрину, построенную на DBT?», «можно ли ей доверять с точки зрения Data Governance?» — тем чётче мы понимали, что DataPortal больше не масштабируется архитектурно.
На старте это выглядело как локальные неудобства. Но по факту это был сигнал зрелости: мы выросли из инструмента, который был идеален для небольшого, стабильного ландшафта.
Почему не «допилить своё» и почему DataHub
Первый импульс был предсказуемым: «Ну мы же уже всё написали — давайте добавим ещё пару фич». Но быстро стало понятно, что дорабатывать решение, в силу специфики его архитектуры, будет экономически невыгодно.
Чтобы не городить вечный ремонт, мы сформулировали критерии, которые должны были решить проблему не на полгода, а на годы вперёд:
несколько источников данных out-of-the-box;
автоматизация ingestion, а не скрипты-коннекторы;
полноценный lineage;
API-first подход, чтобы метаданные можно было использовать дальше в экосистеме;
домены/глоссарии как фичи платформы, а не отдельно существующие сервисы.
Выбирали прежде всего среди open-source-решений с развитым комьюнити — расчёт на перспективу предполагает, что и инструмент не должен стоять на месте. В шорт-листе у нас оказались OpenMetadata и DataHub — у первого более подробная документация, но мы рассудили, что в эпоху LLM вопрос документации уже не стоит так остро.
В целом DataHub оказался «золотой серединой»: достаточно инженерный, чтобы расширять, и достаточно зрелый, чтобы не писать пол-системы самим.
Как проходила миграция: первые успехи и «подводные камни»
Когда мы развернули DataHub, взяли и подключили готовые коннекторы, наступил тот редкий момент в жизни дата-инженера, когда что‑то действительно «завелось с первого раза». Сложности начались, когда мы начал делать lineage, и когда источников стало не два, а десять.
DataHub отлично работает, пока метаданных мало. Но когда ingestion-пайплайны начали собирать сотни объектов из разных систем, performance неожиданно стал первой болью. Мы старались оптимизировать нагрузку: совершать меньше запросов к самому DH и делать ingestion только тогда, когда метаданные реально менялись.

С чем ещё столкнулись в процессе?
Грабли №1: колоночный профайлинг. В теории он красивый, в практике — он съедал ресурсы так, что ingestion шёл часами. Мы в итоге просто вырубили его и оставили только табличный. Сразу стало легче. Но мы продолжаем думать над тем, как нам делать колоночный профайлинг, поскольку он важен для ряда юзеров.
Грабли №2: коннекторы «не из коробки». Документация DataHub местами есть, а местами «тут должен быть текст». Когда писали свой ingestion для одной из внутренних систем, половину API приходилось буквально раскапывать в исходниках.
Грабли №3: поиск «похудел» после миграции. Наши пользователи привыкли к режиму «пишешь public. — и сразу видишь public.orders». DataHub ранжирует объекты иначе, и первые пару недель люди реально думали, что таблицы «пропали».
После этого стало понятно: само развёртывание — это только прогрев. Настоящая работа начинается, когда люди приходят в систему жить, а не смотреть демо.
Как мы стабилизировали ingestion и не утонули в метаданных
Когда мы поняли, что «оно работает» ≠ «оно тянет прод», начался тюнинг.
Первое решение было почти терапевтическим: мы отключили колоночный профайлинг и оставили только табличный. Это был тот случай, когда «выключить фичу» даёт больше пользы, чем её «оптимизировать». Вздохнули все — и DataHub, и мы.
Второе — мы перестали бороться с ограничениями DataHub в плане ограничений ingestion и часть метаданных продолжаем обогащать собственными пайплайнами. Встроенная магия работает хорошо до определённого масштаба, дальше нужен ремесленный напильник.
Далее — Kubernetes. Мы развернули DataHub с автоскейлингом и наконец перестали думать, «а не задохнёмся ли мы завтра». Спойлер: без автоскейлинга — задохнулись бы.
И наконец, осознание: DataPortal не надо выключать. Его надо превратить из «отдельного каталога» в «партнёра» DataHub. По факту, DataHub стал бэкендом, а DataPortal — тонким фронтом для бизнес-пользователей. И внезапно пазл сложился.
Почему мы оставили два инструмента — и это не костыль
Когда DataHub заработал в проде, у нас был соблазн: «ну всё, старый портал можно выключать». Но реальность быстро нас вернула на землю. DataPortal был уже не просто «инструментом» — он стал мышечной памятью команд.
А дальше произошёл интересный сдвиг: мы перестали думать «как заменить одно другим» и начали думать «какую задачу закрывает каждый слой». В итоге получилась двухуровневая архитектура, которая решает разные типы сценариев без компромиссов.
Вот как это выглядит вживую:
Сценарий |
DataPortal |
DataHub |
Найти таблицу/витрину и понять, можно ли её использовать |
✅ мгновенно |
⚙️ можно, но дольше |
Посмотреть lineage и цепочку преобразований |
❌ нет |
✅ это его стихия |
Узнать владельца/зону ответственности |
✅ (через синхронизацию) |
✅ первоисточник |
Автоматизировать обновления / описания через API |
❌ |
✅ |
Быстро «пригласить в контекст» аналитика или продакта |
✅ всё на одной странице |
❌ слишком технично |
Типичные запросы наших аналитиков в DataHub: «если я удалю эту витрину, то кто пострадает?», «кто владелец этого дашборда?», «сколько у него просмотров?», «из какого продукта мы забираем данные для этого дашборда?»
Типичные запросы наших бизнес-юзеров в DataPortal: «какие дата-продукты у нас есть?», «какие дашборды популярны?», «какая основная информация есть по этой странице?»
Проще говоря: DataPortal — это быстрый интерфейс «узнать и принять решение», DataHub — инженерное ядро правды о данных и связях между ними.
Что реально изменилось после внедрения (помимо красивых графов)
Lineage как «рентген данных»: теперь видно, что откуда течёт. Раньше вопрос «а откуда эти цифры?» означал SQL‑археологию и поиски владельца в чатах. Теперь — одна кнопка и наглядный граф: от внешнего API до BI-дашборда. Самый частый фидбэк от инженеров был в духе «почему мы не сделали это два года назад?».
Observability без шаманства: если ingestion умер — мы знаем об этом сразу. В DataPortal падение коннектора могло обнаружиться через неделю, когда кто-то пожалуется. В DataHub ingestion стал наблюдаемым процессом: статусы, алерты, логика повторных запусков. Мы перестали «угадывать состояние системы по настроению пайплайна».
API-first вместо ручных правок: метаданные теперь живут сами. Описания намного меньше редактируются вручную в интерфейсе. Пришёл новый owner — он подтянулся через ingestion. Таблица устарела — автоматом получает deprecated. Меньше человеческого фактора, больше воспроизводимости.
Shift-left: качество начали закладывать до инцидентов. Когда у команды есть прозрачность и цепочка зависимостей, они автоматически думают на шаг вперёд. Проверки начинают появляться «в момент появления данных», а не когда аналитик уже пожаловался.
Самый нетехнический эффект, но самый ценный: ownership. У каждой таблицы появился реальный владелец, которого легко найти. Не «коллективный соседний чат», а конкретный человек/команда. Это резко сократило время до ответа и, что важнее, сняло эффект «ничейности». В этот момент мы поняли, что каталог — это не про метаданные, а про ответственность.
Наконец, мы в полной мере осознали объём наших данных и их источников — просто потому, что это теперь хорошо видно.
Как мы добивались adoption: инструмент сам себя не продаст
Неожиданным оказалось то, что техническая часть внедрения была проще, чем человеческая. DataHub стоял, lineage строился, ingestion летал — а люди продолжали жить в DataPortal. И не потому что «так удобнее», а потому что привычка всегда побеждает фичи.
Первые недели были похожи на мини-революцию. Я в какой-то момент понял, что стал не Data Quality Lead, а евангелистом DataHub: демо, ответы в чатах, «а покажи ещё раз, где теперь владельцы», «а почему поиск так странно работает».
Что реально сработало:
внутренние «чемпионы» — не формальные «амбассадоры», а реальные инженеры и аналитики, которые первыми нашли пользу и начали показывать другим;
короткие видео-демо по 2–3 минуты, не длинные лекции — ровно под конкретный сценарий («как понять, кто владелец», «где искать lineage»);
публичные кейсы побед: мы начали отмечать случаи, когда DataHub реально спас время/нервы (сломанную витрину нашли за 10 минут вместо дня расследований).

А что не сработало? «Методички». Их тупо никто не читал. Живые примеры били любые внутренние инструкции.
Когда adoption пошёл вверх, стало видно главное: DataHub — это не «второй каталог», это новый способ думать о данных. Появилась новая привычка — прежде чем задать вопрос в чат, сначала открыть DataHub. Теперь вместо «Где лежат эти данные?» чаще спрашивают «Кто владелец этого домена?» или «Как часто обновляется эта таблица?». Фокус сместился с поиска данных на понимание их контекста — именно этого мы и добивались.
Как мы измеряем успех: если инструмент не используют — его нет
Мы решили не усложнять метрики и выбрали главный показатель — MAU (Monthly Active Users). Если люди возвращаются в DataHub, значит, платформа действительно решает их задачи.
Вокруг MAU строим дополнительную аналитику: считаем количество подключённых источников, измеряем скорость загрузки главной страницы, анализируем востребованные фичи и регулярно собираем обратную связь через короткие опросы в интерфейсе.
За последние месяцы мы вырастили MAU с 60 до 150, цель на ближайший квартал — +30%.
Рост достигаем, расширяя аудиторию: подключаем не только аналитиков, но и разработчиков, архитекторов, владельцев сервисов. Каждое новое подключение — не просто источник, а новая точка на общей карте данных. И если DataPortal показывал 5000 объектов из одного источника, то в DataHub у нас — 40 000+ объектов из 14 видов источников.
Что дальше: DataHub как центр Data Observability и AI Governance
Стартовали мы с простой цели — навести порядок в метаданных. Теперь понимаем: это была лишь подготовка к следующему этапу. DataHub стал не просто каталогом, а центром наблюдаемости данных: здесь видно, как данные появляются, живут и используются — от источника до аналитики и ML-моделей.
Сегодня мы уже используем DataHub для мониторинга ingestion-процессов, обновлений и статуса метаданных. Следующий шаг — объединить наблюдаемость данных и метаданных:
интегрировать результаты data quality-тестов прямо в карточки объектов;
визуализировать SLA на уровне доменов и витрин;
добавить алерты о деградации качества;
построить дашборды, показывающие здоровье не только отдельных таблиц, но и целых доменов.
DataHub становится панелью мониторинга всей data-экосистемы: видно не только «что есть», но и «насколько это живое».
Параллельно компания активно внедряет AI-решения — от рекомендательных систем до внутренних ассистентов. Чем больше моделей, тем актуальнее принцип Garbage In, Garbage Out: если данные или метаданные некачественные, никакая модель не спасёт. Поэтому связка Data Portal/DataHub — не просто каталоги, а фундамент AI Governance. Она позволяет контролировать происхождение данных, их владельцев, уровень доверия и ограничения. Мы видим, какие источники используются в моделях, как часто обновляются, кто отвечает за корректность. Так выстраивается прозрачная цепочка ответственности — от данных до принимаемых на их основе решений.
В техническом плане планируем:
улучшить архитектуру вокруг DataHub: использовать ресурсы компании для стабилизации DataHub вместо ресурсов самого инструмента;
вынести часть injections из DataHub на AirFlow; запускать профайлинг асинхронно, чтобы не блокировать ingestion;
развивать API и систему тегов, чтобы DataHub мог автоматически интегрироваться с CI/CD, мониторингом, ML Feature Store, AI-агентами.
Это движение от каталога к платформе данных, где всё связано и управляется через метаданные.
Но главный результат — не в технологиях. В процессе мы кристаллизировали data-культуру: привычку документировать, делиться знаниями, видеть взаимосвязи.
А как у вас в компании работают с метаданными? Какие решения и подходы применяете? Обсудим в комментах!
***