Простая аналитическая плафторма для 1С-ов и не только

от автора

Пятница, конец квартала в одной оптовой компании где я две неделе как ИТ — директор. Директор по продажам решает проанализировать годовую динамику и запускает в 1С:Управление торговлей стандартный отчет «План-факторный анализ» с максимальной детализацией по контрагентам и номенклатурным группам. В фоновом режиме формируется тяжелый запрос с десятками соединений, временными таблицами и вложенными агрегациями. Результат предсказуем: блокировка ключевых таблиц документов, выстраивание очереди пользователей на проведение операций и полная остановка отгрузок. Время восстановления работоспособности — около сорока минут. Потери на отгрузках со склада и оформлении заказов.

Это хрестоматийный антипаттерн: использование транзакционной системы учета в качестве аналитического движка. 1С — превосходная платформа для операционной работы (OLTP), но она архитектурно не предназначена для тяжелых OLAP-нагрузок. Транзакционная база не должна быть заложником аналитических запросов. Правильный подход — выносить аналитику в специализированные решения, которые целесообразно сразу проектировать как единую платформу данных. Решений таких много и разных, есть и продукты 1С.

Ниже я расскажу о довольно простой, надежной и не дорогой архитектуре платформы данных, которую мы спроектировали и вывели в промышленную эксплуатацию. Она закрыла потребность в ежедневной консолидации данных из нескольких баз 1С и других источников, обеспечила отказоустойчивость и кардинально снизила совокупную стоимость владения за счет грамотного сочетания Open Source и недорогих коммерческих инструментов.

Цели и ограничения архитектуры

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

  • Полное отсутствие модификаций в продуктивных конфигурациях 1С.

  • Инкрементальная выгрузка без создания блокировок и влияния на операционные процессы.

  • Сохранение неизменяемых исторических срезов сырых данных для аудита и пересчета метрик.

  • Инфраструктурная гибкость: возможность бесшовной миграции между локальными серверами и публичным облаком.

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

Компоненты платформы и их роли

1. Источник данных: 1С:Предприятие Выступает единственным источником правды для транзакционных и справочных данных. В рамках нашей архитектуры 1С используется исключительно в режиме чтения. Любая трансформация, очистка или агрегация выполняются за периметром информационной базы.

2. Экстрактор данных: once2click Здесь мы столкнулись с классической дилеммой «сделать самим или купить». Уже были самописные выгурзки: которые были разными архитктурно и методически. Нужно было единое решение. Попытка написать собственный экстрактор через OData или COM-соединение обычно оборачивается сотнями часов разработки, бесконечной борьбой с блокировками таблиц и необходимостью поддерживать этот код при каждом обновлении платформы 1С. На рынке нашли готовый экстрактор и использовали его.

3.Аналитическое хранилище: ClickHouse Принимает данные из экстрактора и выполняет роль витрины данных. Колоночная архитектура, материализованные представления и высочайшая скорость выполнения агрегирующих запросов делают его идеальным выбором для аналитики. На объемах в сотни миллионов строк ClickHouse возвращает результаты сложных выборок с группировками за доли секунды, обеспечивая бизнесу интерактивный опыт работы с данными.

4. BI-система: Apache Superset Предоставляет конечным пользователям удобный интерфейс для создания дашбордов и SQL-лабораторию для ad-hoc запросов. Superset работает с ClickHouse через нативный драйвер, поддерживает кэширование результатов и гибкую ролевую модель доступа на уровне строк и колонок.

45. Оркестрация и ETL: Apache Airflow Комопнент для развития, может выступать мозгом платформы. Airflow управляет расписанием выгрузок, проверяет целостность поступивших файлов, трансформирует сырые данные и загружает их в аналитическое хранилище. Написание пайплайнов в виде DAG (направленных ациклических графов) дает нам прозрачный контроль зависимостей, автоматический перезапуск при сетевых сбоях, детальное логирование и интеграцию с системами алертинга. В самом простом варианте можно обойтись без этого компонента реализовав логику ETL в Clickhouse.

Диаграмма развертывания

Ниже представлена логическая схема потоков данных и размещения компонентов в инфраструктуре:

graph LR    A[1С:Предприятие<br>Продуктивная среда] --> B[once2click<br>Экстрактор данных]    B --> С[(ClickHouse<br>Витрина данных)]    С --> D [Apache Superset<br>BI-интерфейс]    D --> F [Конечные пользователи<br>Менеджмент / Аналитики]

Практика развертывания: облако и on-premise

Одним из ключевых требований к архитектуре была независимость от инфраструктуры. В облачном сценарии мы используем виртуальные машины для Airflow, ClickHouse и Superset в рамках единой приватной сети.

При переходе на локальную инфраструктуру (on-premise) компоненты разворачиваются через Docker Compose или Kubernetes. Лицензионная чистота и открытость стека (за исключением экстрактора) позволяют избежать вендорной привязки. Совокупная стоимость владения (TCO) в такой модели определяется исключительно вычислительными ресурсами и компетенциями команды сопровождения, а не ежегодными платежами за корпоративные лицензии на СУБД и BI-инструменты.

Заключение

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

Использование готового экстрактора для 1С позволило нам не изобретать велосипед, а сфокусироваться на создании бизнес-ценности: построении витрин и дашбордов. Связка из Open Source и недорогих компонентов показала что малый и средний бизнес может позволить себе современную, быструю и отказоустойчивую платформу данных без многомиллионных бюджетов на лицензии и внедрение.

PS или Кстати

Т яжелые отчеты мы в итоге в 1С отключили, чтобы директор по продажам и других ухари их вообще не могли найти.

Ссылки на указанные решения

ссылка на оригинал статьи https://habr.com/ru/articles/1041662/