255
2
2
Скопировать ссылку
Telegram
WhatsApp
Vkontakte
Одноклассники
Назад

Кастомные BI-системы: если готовые не справляются, делаем по-своему

Время чтения 5 минут
Нет времени читать?
Скопировать ссылку
Telegram
WhatsApp
Vkontakte
Одноклассники
255
2
2
Нет времени читать?
Скопировать ссылку
Telegram
WhatsApp
Vkontakte
Одноклассники

Всем привет! Меня зовут Вадим Медяник, я технический директор ИТ-компании BPA. Вместе с командой мы занимаемся заказной разработкой, а также созданием собственных высокотехнологичных продуктов на основе ИИ, о чем я расскажу в будущих статьях.

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

Что делать, если в компании необходимо работать с десятками отчетов, а обработка данных отнимает все больше времени? Определенно внедрять BI-систему!

Кастомные BI-системы: если готовые не справляются, делаем по-своему

Как изменился российский рынок BI-систем

Начнем с теории и анализа рынка. Согласно совместному исследованию НОРБИТ, Digital Leader, К2Тех Data Lab и Kept, с 2021 года по первый квартал 2024 года доля внедрений зарубежных систем снизилась с 90% до 23%, российских — возросла с 9% до 68%.

Согласно данным российский рынок BI-систем демонстрирует стабильный рост. Важным фактором остается безопасность данных. Во избежание рисков 80% компаний разворачивают BI-системы во внутренней инфраструктуре.

BI-системы работают на трех главных принципах:

  1. Сбор информации. Для начала необходимо провести предварительный аудит данных: определить их хранилища (БД, дата-лейки, API), частоту обновления и типы изменений. Важно выяснить, возможна ли динамическая модификация полей (добавление новых атрибутов, смена типов данных) и учесть потенциальные кейсы с дублированием записей. Если дубликаты присутствуют, необходимо определить правила приоритезации источников данных, чтобы избежать путаницы. Данные чаще всего собираются из различных источников — ERP, АСУ ТП, IoT, CRM, 1С, Excel и других. Выгрузка информации может происходить или в автоматическом режиме, или по запросу пользователя.  При этом бывают кейсы, когда данные необходимо считывать и с бумажных носителей.
  2. Систематизация полученных данных. Собранная информация проходит преобразование в единый формат, который удобно использовать для решения задач аналитики и визуализации. После чего система анализирует ее и выявляет определенные закономерности, интересующие бизнес.
  3. Визуализация. Программа формирует отчеты в едином окне и преподносит их в наглядном формате — в виде различных схем графиков, дашбордов и диаграмм. Визуализация данных в BI-системах требует гибкости и точности, поэтому в проектах могут использоваться такие библиотеки, как D3.js и Plotly. D3.js предоставляет полный контроль над визуализацией данных и позволяет создавать кастомные графики любой сложности. Этот инструмент особенно удобен, если требуется полностью уникальный дизайн или работа с нестандартными диаграммами. Plotly — еще один мощный инструмент для построения интерактивных графиков. В отличие от D3.js, Plotly менее гибок в плане кастомизации, но при этом значительно упрощает процесс интеграции и работы с визуализациями. Также, в зависимости от проекта, могут использоваться Chart.js и Recharts. Эти библиотеки проще в настройке и отлично подходят для стандартных диаграмм и отчетов. В некоторых случаях требуется полностью кастомная разработка визуализации from scratch.

Как создается кастомная BI-система

Работа над кастомной BI-системой начинается с глубокой аналитики. После подписания NDA и обмена данными мы изучаем бизнес-процессы клиента, особенности хранения данных, их структуру и частоту обновления. На основе этого формируется техническое задание и план работы.

Разработка проходит этапами:

  1. Разведочный анализ. Сбор данных, изучение бизнес-процессов, анализ текущих проблем.
  2. Согласование требований. Формирование технического задания, согласование функционала и дизайна.
  3. Этапная реализация. Разработка системы поэтапно: от небольших модулей до полной интеграции.
  4. Тестирование. Проверка функциональности, автоматическое и ручное тестирование.
  5. Внедрение. Развертывание системы в инфраструктуре компании.
  6. Поддержка и масштабирование. Отладка, обучение персонала, добавление новых функций.

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

Зачем нужен прототип системы?

В некоторых кейсах заказчик не может сформировать конечный образ продукта, поэтому мы готовим MVP отдельных модулей для того, чтобы протестировать гипотезы и согласовать с клиентом внешний вид и функционал работы.

Для этого чаще всего мы используем библиотеку Shiny, доступную на R и Python. Она позволяет очень быстро разработать прототип будущей системы с возможностью внесения правок, тестирования гипотез в режиме реального времени. Shiny хороша тем, что один разработчик может набрасывать и фронт, и бэк, она не требует сложного развертывания, а обновления в системе можно демонстрировать на ходу. При этом в ней поддерживается большое количество пакетов для визуализации (ggplot2, D3, Plotly и др.), для построения таблиц (DT, reactable и др.), работы с картами (Leaflet, Яндекс АПИ и др.) и всем другим, что приходит на ум.

В Shiny можно быстро подготовить ролевую модель, подключить БД, настроить логику бэка любой сложности, обработку и аналитику данных (в том числе ML), для быстрой демонстрации и согласования с клиентом, перед переходом на полномасштабную разработку.

Почему кастомные BI-системы?

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

  • Универсальные системы не всегда могут быть адаптированы под уникальные бизнес-процессы.
  • Ограничения в функционале и кастомизации дизайна.
  • Необходимость встраивания сложных алгоритмов, таких как предиктивная аналитика и ИИ.
  • В компании могут быть различные источники данных, которые могут не поддерживаться уже существующими системами. Например, сырые данные с датчиков IoT.

Кастомная BI-система — это готовый инструмент, полностью настроенный под клиента, который не требует сложного обслуживания и доработок.

Используемые технологии

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

Выбор хранилища зависит от структуры данных и задач системы. Наш выбор чаще всего падает на PostgreSQL, ClickHouse, DuckDB – для структурированных табличных данных, MongoDB и S3 – для хранения неструктурированных данных, архивов и прочего. Для бэкенда чаще всего мы используем Python (Django, FastAPI), Go и Kotlin в зависимости от задач и требований к производительности. Для разработки клиентской части используются Vue.js и React. Они имеют широкий набор готовых библиотек и материалов, высокую скорость рендеринга, что делает их отличным выбором для BI-систем с динамическими визуализациями. Для обеспечения безопасности и надежности кода мы используем TypeScript вместо чистого JS. Мониторинг и анализ работы развернутых BI-систем осуществляется с помощью Grafana или Zabbix, что позволяет оперативно отслеживать нагрузку и устранять возможные ошибки.

Вопрос оптимизации скорости работы BI-системы решается несколькими способами: индексация базы данных, кэширование на стороне бэка и фронта, оптимизация алгоритмов ML (если таковые используются) и др.

Кейсы из практики

В числе успешных проектов BPA — BI-система для лизинговой компании. Задача заключалась в создании инструмента, который позволил бы эффективно управлять автопарком, оптимизировать маршруты и минимизировать затраты на логистику. Основным запросом клиента было отслеживание грузовых автомобилей в реальном времени с помощью GPS-датчиков, а также интеграция этой информации с данными из их ERP-системы.

После анализа бизнес-процессов компании были согласованы ключевые функции: отображение маршрутов на карте, отслеживание состояния автомобилей, расчет затрат на топливо и аналитика эффективности логистики.

В первую очередь был создан модуль интеграции, который в реальном времени собирал данные с GPS-датчиков и передавал их в систему через API. Одновременно была реализована интеграция с ERP-системой заказчика, что позволило использовать информацию о загрузке автомобилей, техническом состоянии и запланированных маршрутах. Следующим шагом стало создание интерактивного дашборда. На панели в реальном времени отображались маршруты автомобилей на карте, запас топлива, статус выполнения рейсов и информация о водителях. Визуализация позволила менеджменту не только отслеживать текущее состояние автопарка, но и анализировать исторические данные для выявления неэффективных маршрутов и простоев.

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

Во время пилотного тестирования сотрудники лизинговой компании проверяли работу системы в реальных условиях. После развертывания системы мы провели обучение пользователей, чтобы они могли эффективно пользоваться аналитическими инструментами, создавать отчеты и принимать решения на основе данных.

Как итог — водители и менеджеры получили удобный инструмент для контроля технического состояния автопарка, что снизило логистические расходы компании на 7% уже в первые два месяца работы.  

В заключение стоит сказать, что индивидуальный подход к BI — это не просто тенденция, а необходимость для современных компаний, стремящихся оставаться конкурентоспособными в условиях быстро меняющегося рынка.

Подписывайтесь на канал BPA в Telegram, чтобы быть в курсе инноваций — https://t.me/bpa_tech.

Комментарии2
Eduard Slobodyanik
9 дней назад
Интересная статья. Отдельный лайк за перечисление используемых программ и библиотек.
Privpolink@yandex.ru
11 дней назад
Спасибо за статью!
Тоже интересно
Комментировать
Поделиться
Скопировать ссылку
Telegram
WhatsApp
Vkontakte
Одноклассники