Меня зовут Карен Мелконян, я ведущий разработчик компании СИТЕК и реализовал более двадцати интеграционных проектов.
В нашей работе часто возникает вопрос: какую интеграцию выбрать под конкретные задачи клиента? Этот выбор далек от однозначного решения. Сегодня я предлагаю подробно рассмотреть плюсы и минусы разных способов интеграции.
Что такое интеграция?
Интеграция – это процесс объединения отдельных систем и компонентов в единое целое. Например, при внедрении решения «1C:WMS Логистика. Управление складом» (Warehouse Management System) автоматизируются многие складские операции. При необходимости расширения функциональности, например, для работы с роботизированными участками, задача интеграции новых устройств с 1C:WMS становится особенно актуальной. В такой архитектуре система формирует и отправляет задачи роботам, получает их ответы и на основании полученной информации принимает решения о дальнейших действиях
Интеграцию можно условно разделить на два основных направления: интеграция с оборудованием и интеграция с информационными системами.
Интеграция с оборудованием
Современный склад использует множество устройств: терминалы сборов данных, принтеры, RFID-считыватели, весы, торговые сканеры, а также роботов, что делает задачи интеграции довольно сложными.
Способы интеграции с оборудованием
Первый подход – это использование библиотеки подключаемого оборудования, однако она покрывает далеко не все возможные устройства.
Если в комплекте с оборудованием есть готовый системный драйвер, можно напрямую подключиться через CкOM-объекты или редактировать файлы на Unix-системах.
Многие производители предлагают API, которые обычно позволяют обмениваться данными через HTTP-запросы: система посылает команду, устройство ее выполняет и возвращает ответ.
Если ни системного драйвера, ни API нет, можно использовать TCP или UDP протоколы, но 1С не поддерживает их напрямую. Здесь на помощь приходят либо внешние компоненты, либо прокси-серверы – отдельные сервисы, выполняющие конвертацию и передачу сообщений.
Прокси-серверы удобны тем, что не зависят от платформы 1С, гибко масштабируются и обеспечивают мультиплатформенность.
Внешние компоненты, встроенные в 1С, требуют внимания к качеству кода, так как ошибка может привести к нестабильной работе всей системы. Важно учитывать платформу, разрядность и тип клиента (тонкий, толстый, веб).
Интеграция с информационными системами
Интеграция включает объединение систем 1С, веб-сайтов, документооборота и других систем в единую экосистему. При передаче структурированных данных популярны форматы:
-
JSON – удобен с точки зрения чтения и работы через HTTP;
-
XML – традиционный для 1С, поддерживает строгую типизацию;
-
Fast Info Set – бинарный формат для сокращения объемов данных и ускорения обработки.
Транспорт передачи данных
Наиболее распространенные варианты:
-
Файловый доступ – обмен файлами по локальным папкам;
-
FTP – для обмена на удаленных системах;
-
WEB-сервисы и HTTP-сервисы – синхронный обмен по протоколу HTTP, популярный и удобный;
-
Прямое подключение к СУБД – самый быстрый вариант, но требующий высокой квалификации.
Для крупномасштабных систем с множеством интеграций используются брокеры сообщений и шины данных, которые обеспечивают маршрутизацию и управление нагрузкой.
WEB-сервисы и HTTP-сервисы: в чем разница?
WEB | HTTP |
---|---|
Сервисно-ориентированный | Ресурсно-ориентированный |
Описание процедур (WSDL) | Нет описания |
Проверка типов (XDTO) | Нет проверки |
Преимущественно XML | Преимущественно JSON |
Самодокументирующийся | Документация через OpenAPI/Swagger |
На сегодняшний день веб-сервисы чаще применяются в интеграциях с клиентскими системами, поскольку их использование обычно более экономично. Тем не менее, если необходимо реализовать нестандартные обмены данными оперативно и с минимальными затратами, чаще выбирают HTTP-сервисы. Они характеризуются меньшими требованиями к реализации, что ускоряет внедрение.
Для лучшего понимания различий приведу пример из практики. В одном из проектов у меня состоялся диалог с коллегой – разработчиком PHP, часто работающим с обменами данными. В ходе беседы мы около получаса обсуждали различия между веб-сервисами и HTTP-сервисами, не сразу понимая друг друга. Коллега спросил: «Что ты подразумеваешь под веб-сервисами и HTTP-сервисами?» Я пытался объяснить суть, но осознал, что терминология в окружении 1С существенно отличается от общепринятой. Впоследствии поиск информации показал, что различение веб- и HTTP-сервисов характерно преимущественно для платформы 1С.
Если говорить языком программистов вне 1С, веб-сервис – это обмен на базе HTTP с использованием протокола SОAP. HTTP-сервис – это обмен через «голый» HTTP-протокол без дополнительного регламентирования. Для веб-сервисов традиционным форматом является XML, регулируемый SОAP-протоколом. Напротив, HTTP-сервисы не накладывают жестких правил на формат данных и чаще используют JSON, который прост, компактен и удобочитаем.
В веб-сервисах 1С широко применяются XDTO-пакеты, обеспечивающие типизацию и автоматическую валидацию данных. В настройках можно указать обязательность полей и их типы. Если передаваемые данные не соответствуют требованиям, XML-пакет не будет сформирован. Такая валидация предотвращает ошибки, например, передачу вместо логического значения некорректных символов.
Публикация веб-сервиса сопровождается автоматической генерацией WSDL-документации, в которой описываются все методы и типы данных. Это облегчает интеграцию и поддержание сервисов.
В случае HTTP-сервисов XDTO не используется, а ответственность за проверку данных ложится на разработчиков. Документация для HTTP-сервисов составляется согласно стандарту OpenAPI и преобразуется в читаемый формат с помощью инструментов, что снижает трудозатраты на документацию.
HTTP-сервисы поддерживают стандартные методы REST API: GET, POST, DELETE, PUT и другие.
Следует отметить, что в 1С и за ее пределами использование метода DELETE не ограничивается только удалением объектов. Технически через него можно реализовать и другие действия, включая создание объектов. Тем не менее, для корректной реализации REST API лучше придерживаться стандартов: DELETE должен удалять объект, а не выполнять другие операции. Это значительно упрощает логику и повышает прозрачность API.
Шина данных
Шина данных представляет собой следующий этап в развитии интеграционных решений. В различных интерпретациях ее часто сравнивают с потоком данных, подобно автомобилям, движущимся по магистрали к своим пунктам назначения. Другие аналогии сравнивают шину с локальной сетью, где все устройства подключены к одному общему кабелю. Тем не менее, такое представление является неполным.
В действительности, шина данных – это клиент-серверная система для обмена сообщениями между информационными системами предприятия. Технология не является чем-то новым: подобный механизм применяется в популярных мессенджерах, таких как Telegram или WhatsApp. Разница состоит лишь в том, что здесь получателями сообщений являются не конечные пользователи, а именно информационные системы.
Применение шины данных рационально при интеграции более чем двух информационных систем. Для двух систем ее использование зачастую избыточно и ведет к усложнению архитектуры и увеличению издержек.
Для примера, интеграция четырех систем по схеме «каждый с каждым» требует наличия шести соединений. При увеличении числа систем до восьми количество таких связей возрастает в геометрической прогрессии. В отличие от этого, при использовании шины данных количество соединений сокращается до количества самих систем: четыре базы требуют четыре соединения, восемь – восемь. Шина данных выступает в роли посредника, через который осуществляется маршрутизация и передача сообщений.
Ключевые преимущества шин данных
-
Гибкость маршрутизации: Возможность настройки связей «один к одному» и «один ко многим».
-
Автоматическая маршрутизация сообщений: Сообщение, отправленное на шину, автоматически перенаправляется всем необходимым системам, независимо от их количества (будь то 4, 10 или 20 и более).
-
Масштабируемость: Упрощение управления и поддержки интеграционной инфраструктуры при росте числа систем.
Обзор популярных решений шин данных в экосистеме 1С
Решение | Описание | Лицензирование и особенности |
---|---|---|
1С:Шина | Разрабатывается компанией 1С, обладает глубокой интеграцией с ее продуктами. Обеспечивает множество готовых коннекторов для разнообразных систем. | Лицензирование пакетное, например, 100 или 1000 подключений. |
Datarеon | Обеспечивает удобный интерфейс настройки обменов, значительно упрощая работу с интеграцией. | Лицензии оплачиваются за каждое подключение. |
RabbitMQ | Бесплатный открытый брокер сообщений с возможностью модификации исходного кода. Для работы с 1С требуется коннектор. | Бесплатные коннекторы существуют, однако их надежность не гарантирована. Стоимость платных – около 300 тыс. руб. |
Kafka | Высокопроизводительный и эффективный брокер сообщений, все чаще выбираемый крупными предприятиями. | Реже применяется в 1С-проектах, требует особой настройки и поддержки. |
На основании опыта, наиболее перспективным решением является 1С:Шина. Этот продукт обеспечивает передачу и прием файлов, может работать в роли FTP-клиента, поддерживает интеграцию по веб- и HTTP-протоколам, взаимодействует с RabbitMQ и Kafka, а также с различными СУБД и системами SAP. Таким образом, 1С:Шина включает в себя большинство необходимых инструментов для полноценной и гибкой интеграции.
Трудности выбора решений для интеграции
Основная сложность при подборе интеграционного решения заключается в отсутствии универсального варианта, подходящего для любых условий. В практике чаще всего применяются три основных подхода:
-
Веб-сервисы, используемые преимущественно для стандартных и типовых интеграций.
-
HTTP-сервисы, ориентированные на быструю и гибкую реализацию обменов.
-
Шина данных, актуальная при необходимости интеграции большого количества систем и обеспечивающая масштабируемость.
Выбор технологии должен базироваться на технических требованиях, архитектуре интегрируемых систем и специфике бизнес-процессов.
Рассмотрим практические примеры из опыта нашей компании.
Кейс 1. Интеграция на оптово-продуктовом складе
Задача: интеграция системы «1С:Управление торговлей» с системами маркировки и 1С:WMS.
Проблема: заказчик изначально применял COM-соединения по причине ограниченного опыта главного разработчика. Передача данных осуществлялась со скоростью около 4 объектов в секунду, что удовлетворяло потребности на начальном этапе.
Сложность возникла с внедрением системы маркировки акцизных товаров, когда в одном документе фиксировалось до 15 тысяч акцизных кодов. COM-соединение не выдерживало нагрузки, приводя к частым сбоям.
Решение: внедрение механизма конвертации данных для обмена, позволившее существенно повысить производительность.
Результат: успешное завершение реализации проекта вследствие повышения надежности и масштабируемости системы.
Дальнейшее развитие: на следующей площадке была реализована интеграция посредством веб-сервисов, что обеспечило многократный рост скорости обмена. Аналогичный подход был рекомендован и для первой площадки, где веб-сервисы показали эффективность в 1000 раз выше COM-соединений.
Кейс 2. Интеграция на складе алкогольной продукции
При интеграции с системой «Мастер ЕГАИС» возникла необходимость обработки значительного объема данных, поскольку каждая бутылка и партия имели обязательные акцизные марки.
Решение: использование обмена через СУБД, что гарантировало высокую пропускную способность и надежность хранения и обработки данных.
Кейс 3. Интеграция на текстильном дистрибьюторе
Особенности: широкий спектр информационных систем, включая SAP, WMS, кастомные решения на базе 1С, ERP и RMS.
Сложность: большое количество связей между системами обуславливало необходимость решения задачи с повышенной степенью масштабируемости.
Решение: использование шины данных, которая позволила упростить архитектуру и обеспечить функциональную интеграцию всех систем.
Выводы
Выбор технологии интеграции всегда индивидуален и зависит от задач и архитектуры бизнеса.
-
Для обменов с высокой надежностью и валидацией оптимальны веб-сервисы.
-
Для быстрой разработки и гибкости подходит HTTP.
-
Для масштабных систем с множеством интеграций – шина данных.
Правильный выбор интеграции позволяет создавать стабильные, эффективные и удобные решения для автоматизации складских процессов.
*************
Статья написана по итогам доклада (видео), прочитанного на конференции INFOSTART TECH EVENT.
Вступайте в нашу телеграмм-группу Инфостарт