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

Введене

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

Для решения этой проблемы всё чаще применяется микросервисная архитектура, где вместо прямых связей между системами используется универсальная интеграционная платформа. В статье представлен пример реализации такой платформы, продемонстрированный на конференции ТИМИ-2024. Рассмотрим её ключевые аспекты: архитектуру, используемые технологии и вызовы, с которыми столкнулись разработчики.

Основные цели проекта

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

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

  • Надёжность: защита от потери данных и минимизация времени простоя.

  • Гибкость: поддержка интеграции через стандартизированные протоколы и технологии.

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

ed0de9fb3794b976e2f571b612de1946.png

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

Проект строился на основе следующих инструментов:

  • Node.js + Express:

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

  • REST API обеспечивает удобное взаимодействие между микросервисами.

  • Более 3,5 миллионов проектов по всему миру используют Express.js, что гарантирует проверенную экосистему.

  • RabbitMQ:

  • Основной инструмент для обмена сообщениями между сервисами.

  • Обеспечивает кластеризацию для отказоустойчивости.

  • Поддерживает сложные сценарии маршрутизации сообщений благодаря механизму обменников (Exchange) и очередей (Queue).

  • MinIO:

  • Высокопроизводительное объектное хранилище с поддержкой протокола S3.

  • Обеспечивает безопасное хранение данных с шифрованием и управлением доступом.

  • Подходит для работы с большими объёмами данных (до 10 петабайт при горизонтальном масштабировании).

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

Архитектура системы

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

Ключевые микросервисы:

  1. CADLibMS: отправка, приём и обработка сообщений для Model Studio и CADLib.

  2. LotsiaMS: взаимодействие с СЭД, включая создание и обновление документов.

  3. MailerMS: отправка уведомлений по электронной почте.

  4. RabbitMQ: брокер сообщений для координации взаимодействия между сервисами.

  5. MinIO: безопасное и масштабируемое хранилище данных.

Архитектура поддерживает кластеризацию RabbitMQ и MinIO, что обеспечивает надёжность при выходе из строя отдельных узлов. Например, в случае отказа одного из узлов RabbitMQ, сервисы автоматически переключаются на другой узел.

Территориальная распределённость

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

  • Локальные узлы: в каждом филиале развёрнуты брокеры сообщений RabbitMQ и файловые хранилища MinIO.

  • Событийная модель: обмен данными происходит через JSON-сообщения, которые включают ключевые параметры события (например, создание или обновление проекта).

Схема архитектуры системы на примере двух филиалов:

ec6961a6835f9ff6ba3b56c206b8e7ee.png

Пример JSON-сообщения:

{
  "event": "project_сreated_updated",
  "project": {
    "id": 100000013008032,
    "code": "95.213",
    "name": "Отработка запасов сильвинита\r\nв центральной и западной части шахтного поля рудника",
    "customer": "Публичное акционерное общество «Березка»",
    "engineer": "Иванов И.И.",
    "siteCode": "95",
    "tim": true
  },
  "notification": {
    "recipients": [ " johndoe@company.com" ],
    "subject": "Создан новый проект",
    "text": "Текст сообщения",
    "html": "

Текст сообщения в формате HTML

" } }

Реализованные интеграционные функции

Система охватывает широкий спектр интеграционных процессов, в том числе:

  • Создание и обновление проектов.

  • Создание и обновление баз данных.

  • Формирование и утверждение структур состава различных стадий документации.

  • Подготовка и выдача заданий в интегрируемых системах.

  • Выгрузка проектов в архив по различным параметрам и в различных форматах.

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

2c11e073e2c4d1841e3eeccd3fda81e0.png

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

Основные вызовы и решения

  1. Отказоустойчивость:

  • Настройка кластеров RabbitMQ и MinIO позволила минимизировать влияние отказов узлов на общую работоспособность системы.

  • Сервисы автоматически переключаются между узлами, фиксируя ошибки в логах для анализа.

  1. Обработка ошибок:

  • Если сервис недоступен, сообщения сохраняются в очереди RabbitMQ до восстановления работы.

  • В случае сбоя при обработке сообщений они повторно отправляются с заданной периодичностью.

  1. Совместимость:

  • Использование Windows-сервисов для организаций, где основная инфраструктура базируется на Windows.

  • Контейнеризация с Docker для гибкого и быстрого развёртывания на Linux-серверах.

Итоги и перспективы

Разработанная интеграционная платформа доказала свою эффективность в реальных условиях. Её преимущества включают:

  • Удобство масштабирования для подключения новых филиалов и сервисов.

  • Надёжность благодаря кластеризации и управлению ошибками.

  • Гибкость использования open-source технологий.

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

Автор: Мавлеткулов Руслан Рамилевич

ГК «Русский САПР», Руководитель группы внедрения СЭД

© Habrahabr.ru