Отрасль: Производство / Промышленная автоматизация
Задача: Создание децентрализованной системы сбора, нормализации и анализа данных с промышленного оборудования
Технологии: Apache Flink, Apache Kafka, .NET, React + TypeScript, Kubernetes, GitLab CI/CD
Ключевые слова: OPC, Modbus, потоковая обработка, промышленное оборудование, Flink
Контекст: Когда данные есть, но ими нельзя пользоваться
На предприятиях холдинга ежедневно генерируются большие объемы данных от разнородных источников: АСУ ТП, лабораторных систем, файловых отчетов и внешних сервисов. Многие из этих данных поступают напрямую с промышленного оборудования через такие протоколы, как OPC DA/UA и Modbus, а также из различных промышленных платформ.
Однако:
- Данные неструктурированы и представлены в разных единицах измерения;
- Часть источников работает в пакетном режиме, часть — в потоковом;
- Связь с центральной инфраструктурой может быть нестабильной или временно недоступна;
- Отсутствует единая точка нормализации и контроля.
Без надежной архитектуры невозможно построить даже базовую аналитику, не говоря о прогнозировании или цифровых двойниках.
Архитектура решения: Децентрализованная потоковая обработка «у источника»
Проект реализован как масштабируемая распределенная платформа, в которой каждый завод функционирует автономно, но при этом интегрирован с центральным контуром через асинхронную шину данных. Архитектура построена вокруг Apache Flink как основного движка потоковой обработки.

1. Сбор «сырых» данных: поддержка всех промышленных протоколов
Сбор данных осуществляется локально и включает:
- Прямое взаимодействие с промышленным оборудованием:
- АСУ ТП / PLC через OPC DA/UA, Modbus, SOAP;
- Поддержка низкоуровневых протоколов для обмена с устройствами сопряжения (gateways, преобразователи интерфейсов);
- Интеграция с промышленными платформами и внешними системами.
- Файловые источники:
- Прием файлов в форматах XML, JSON, Excel, TXT;
- Автоматический парсинг и извлечение структурированных данных;
- Передача в локальный оркестратор для последующей обработки.
Все механизмы сбора реализованы через локальный оркестратор на базе Apache Flink, который:
- Разделяет потоковую и пакетную обработку в отдельных кластерах;
- Использует Apache Kafka как буфер и шину для отказоустойчивого приема данных;
- Обеспечивает линейное масштабирование и изоляцию нагрузки.
2. Нормализация: от «сырых тегов» к бизнес-показателям
Нормализация выполняется тем же локальным оркестратором на Apache Flink и включает: - Интеграцию с мастер-системой для актуализации справочников оборудования;
- Преобразование единиц измерения (мВ → В, мл → л и т.д.) на основе типовых значений из мастер-данных;
- Усреднение и фильтрация значений (в том числе сглаживание шумов);
- Статистическая нормализация:
- Min-Max (линейная, диапазон [0–1]);
- Z-нормализация (стандартизация по среднему и дисперсии);
- Расчет KPI:
- Состояние оборудования;
- Эффективность технологических процессов;
- Отклонения от нормативных значений;
- Валидация данных — проверка на соответствие допустимым диапазонам.
Все алгоритмы гибко конфигурируются через админ-панель без перекомпиляции кода.
3. Децентрализованная архитектура: автономность + синхронизация
Каждый завод содержит: - Локальный оркестратор (Apache Flink + Kafka);
- Локальную базу сервиса, разработанную на .NET, для хранения:
- Нормализованных данных;
- Мастер-данных (справочников оборудования, параметров, единиц измерения).
Ключевые возможности: - Полная автономная работа при отсутствии связи с центральной инфраструктурой;
- Возможность редактировать мастер-данные локально;
- При восстановлении связи — двусторонняя синхронизация с центральной базой данных через Apache Kafka.
- Центральный оркестратор:
- Принимает справочники из внешних систем;
- Выполняет их первичную нормализацию;
- Распространяет обновления по заводам.
4. Шина данных: Apache Kafka как основа асинхронного обмена - Все обмены между центром и заводами — асинхронные, через топики Kafka;
- Гарантируется at-least-once delivery и устойчивость к сетевым сбоям;
- Локальные буферы Kafka на заводах позволяют накапливать данные при обрыве связи.
5. Админ-панель: единая точка управления
Разработана на React + TypeScript с бэкендом на .NET, развернута как в центре, так и на заводах. Функционал: - Настройка маршрутизации потоков данных между оборудованием и целевыми системами;
- Конфигурация алгоритмов нормализации (единицы измерения, пороги, формулы);
- Управление мастер-данными (оборудование, параметры, справочники);
- Визуализация состояния технологических процессов в реальном времени;
- Формирование и выгрузка отчетов.
6. Мониторинг и логирование - Полный контроль состояния всех сервисов (Flink, Kafka, админ-панель);
- Логирование действий пользователей и системных событий;
- Локальное хранение логов + синхронизация с центральной инфраструктурой;
- Интеграция с системами отчетности.
7. Развертывание и эксплуатация - Все критические компоненты (Flink, Kafka) работают в Kubernetes;
- Автомасштабирование на основе метрик через KEDA (Kubernetes Event-Driven Autoscaling);
- Полностью автоматизированное развертывание через GitLab CI/CD;
- Поддержка как on-premise, так и гибридных сценариев.
Результат: Индустриальная платформа, готовая к цифровой трансформации
- Полная автономность заводов — работа без связи с центральной инфраструктурой до нескольких дней;
- Единый нормализованный формат данных — от Modbus-тегов до файловых отчетов;
- Готовность к интеграции с ERP, MES, системами предиктивного обслуживания;
- Масштабируемость — подключение новых площадок без перестройки ядра;
- Основа для ML — структурированные, чистые, синхронизированные данные.
Технологический стек

Этот проект демонстрирует, как современная потоковая обработка на базе Apache Flink в сочетании с промышленными протоколами (OPC, Modbus) и универсальными интеграциями позволяет превратить «сырые» данные с промышленного оборудования в надежный, управляемый и масштабируемый актив для цифрового производства.
