IoT + legacy: 3 паттерна интеграции без боли

«Хотим IoT, но у нас legacy-SCADA 2005 года». Знакомо? Это не тупик. Это архитектурная задача.

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

В промышленном IoT я использую три проверенных паттерна. Каждый решает свою задачу и имеет чёткие критерии применимости.

• Паттерн 1: Adapter (Переходник) Суть: legacy-система не меняется. Пишется лёгкий слой-адаптер, который преобразует её протокол (Modbus, OPC Classic) в современный (MQTT, REST). Когда применять: нужно быстро подключить устройство/систему без риска для продакшена. Плюсы: минимальное вмешательство, быстрый запуск, изоляция сбоев. Минусы: адаптер становится ещё одним звеном, которое нужно поддерживать. Пример: датчик с RS-485 → адаптер на edge-шлюзе → MQTT → облачная платформа.

• Паттерн 2: Event Sourcing (Источник событий) Суть: вместо прямого опроса legacy-системы, она публикует события (изменение статуса, алерт) в шину. IoT-платформа подписывается и реагирует. Когда применять: нужна асинхронная обработка, масштабируемость, аудит всех изменений. Плюсы: развязка систем, возможность «переиграть» события, естественная поддержка истории. Минусы: требует зрелости инфраструктуры (брокер сообщений, мониторинг потоков). Пример: SCADA публикует «Авария насоса #3» → Kafka → IoT-платформа создаёт тикет и уведомляет бригаду.

• Паттерн 3: API Gateway (Единая точка входа) Суть: перед набором legacy-систем ставится шлюз, который унифицирует доступ: аутентификация, трансформация запросов, кэширование, лимитирование. Когда применять: много разнородных систем, нужно дать внешний доступ (партнёрам, мобильным приложениям). Плюсы: централизованное управление безопасностью и версионированием, снижение нагрузки на бэкенд. Минусы: шлюз становится single point of failure — требует кластеризации. Пример: мобильное приложение → API Gateway → (преобразует запрос) → legacy-ERP, WMS, SCADA.

«Интеграция — это не соединение систем. Это проектирование контрактов, которые переживают эволюцию каждой из сторон» (принципы Enterprise Integration Patterns, Hohpe/Woolf).

На практике выбор паттерна зависит не от «модности», а от трёх вопросов: 1. Можно ли менять legacy? (Если нет → Adapter) 2. Нужна ли асинхронность и история? (Если да → Event Sourcing) 3. Кто и как будет потреблять данные? (Если много внешних клиентов → API Gateway) Часто используется комбинация: Adapter для подключения, Event Sourcing для потоковой обработки, API Gateway для внешнего доступа.

А какой паттерн интеграции вы используете чаще всего? Сталкивались ли с «хрупкими» интеграциями, которые падали при первом изменении? #ИнсафВафин #IoTArchitecture #LegacyIntegration #EnterprisePatterns #Rightech