Миграция аналитического контура с зарубежного стека
Контекст
Задача
Отчётность на зарубежных BI и СУБД, лицензии недоступны, риск остановки управленческой отчётности.
Работа
Решение
Инвентаризация витрин и отчётов, перенос хранилища на PostgreSQL и ClickHouse, перестройка ETL на Airflow и dbt, воспроизведение отчётности на российском BI. Два контура работали параллельно на период перехода.
Проблема бизнеса
Что происходило до проекта
Управленческая отчётность ритейлера жила на зарубежном стеке: хранилище на проприетарной СУБД и BI-платформа, лицензии на которые перестали продлеваться. Каждый месяц работы на неподдерживаемом стеке увеличивал риск: без вендорских обновлений и поддержки любой сбой мог остановить отчётность, на которой держатся закупки, ценообразование и планирование.
При этом просто «выключить старое и включить новое» было нельзя: бизнес принимает решения по этим витринам ежедневно, а расхождение цифр в переходный период подорвало бы доверие к новой платформе быстрее, чем любой технический сбой.
Сдвиг
Как было — как стало
Как было
Как стало
Ход работы
Как решали
Инвентаризация витрин и отчётов
Собрали полный реестр: какие витрины существуют, кто ими пользуется, какие устарели. Часть отчётов не переносили осознанно — ими давно никто не пользовался.
Целевая архитектура на открытом стеке
Хранилище — PostgreSQL и ClickHouse под аналитические нагрузки, ETL — Airflow и dbt, BI — Superset. Стек без лицензионных рисков, под который есть специалисты на рынке.
Перенос слоями
Сначала слой сырых данных, затем витрины, затем отчёты — с автоматическими сверками между старым и новым контуром на каждом слое.
Параллельная эксплуатация
Оба контура работали одновременно: бизнес продолжал смотреть привычные отчёты, пока новые не показали идентичные цифры на исторических и текущих данных.
Передача команде заказчика
Аналитики заказчика начали вести витрины сами ещё до завершения проекта — дорабатывать отчётность без подрядчика было условием приёмки.
Решение
Как устроено архитектурно
Слои, не «куча таблиц»
Staging, core и витрины разделены: сырые данные не смешиваются с бизнес-логикой, ClickHouse держит аналитические нагрузки.
Сверка — узел, не стрелка
Автосверка читает обе стороны и выдаёт отчёт расхождений — переключение только при пустом отчёте.
Передача внутрь
Витрины дорабатывают аналитики заказчика: зависимость от подрядчика снята до конца проекта.
Продукт
Как это выглядит в работе
Бизнес получил те же витрины на новом стеке: раскладка и логика показателей воспроизведены, каждая цифра прошла автосверку со старым контуром до переключения.
Макет иллюстрирует механику интерфейса; данные на экране условные.
Границы решения
Что делает — и чего не делает
Честные рамки — часть архитектуры: они защищают результат не хуже кода.
Делает
- полный реестр витрин: что переносим, что списываем
- автосверка каждой витрины со старым контуром
- параллельная эксплуатация до совпадения цифр
- ETL, который поддерживают аналитики заказчика
- стек без лицензионных платежей и рисков
Не делает
- переноса «всего как было» — мёртвые отчёты не мигрируют
- простоя отчётности — бизнес не заметил переключения
- нового вендор-лока: весь стек открытый
Итог
Результат
- Полный отказ от зарубежных лицензий
- Витрины и отчёты перенесены
- Отчётность без простоя
Числовые показатели публикуются после сверки с заказчиком.
Передача
Что осталось у клиента
- Исходный код, модели и конфигурации — вместе с правами.
- Документация и описание архитектуры.
- Возможность развивать решение своей командой или любым другим подрядчиком.
Следующий шаг
Расскажите про задачу
Разберём, оценим сроки и стоимость. Если задача не наша — скажем прямо и подскажем, к кому обратиться.
Обсудить задачу →