Умные сервисы и надежные каналы: как мы выбирали архитектуру интеграционного решения
Бесспорно, интеграция – неотъемлемая часть любого IT-проекта. Независимо от того, внедряете ли вы новое приложение в существующий IT-ландшафт или настраиваете взаимодействие со сторонними сервисами, качественное решение интеграционных задач существенно повышает возможности цифровизации.
Вызовы
Реализация интеграционных решений в проектах зачастую обходится необоснованно дорого, но на это есть ряд причин:
- Разнородность интегрируемых систем
Разные поставщики используют разные архитектурные принципы и разные технологии, которые нужно как-то «подружить».
- Отсутствие единых стандартов интеграции
Готовых подходов к интеграции не существует, каждая команда реализует проект по-своему, основываясь на своем опыте и квалификации.
- Существенные затраты
Поскольку интеграционное решение часто делается «на коленке», возникает большое количество задач по доработке интеграции в ходе проекта.
- Технологические риски
Проприетарные платформы диктуют жесткие правила к подходам и технологиям интеграции, зачастую устаревшие. Тем более что многие из поставщиков интеграционных платформ ушли с рынка вместе с поддержкой.
- Высокие требования к надежности и производительности
Несмотря на затраты и усилия, интеграция остается потенциальным местом возникновения сбоев. Сами представьте, какой апокалипсис может случиться, если, например, из-за ошибки остановится интеграционный сервис, синхронизирующий информацию о платежах по кредитам или о внебиржевых сделках.
- Влияние прикладной специфики
Помимо общей интеграционной логики, в каждом интеграционном потоке есть прикладная специфика, которая имеет существенное влияние на сроки и сложность проекта.
- Гарантии результата
Если проверка результатов интеграционного взаимодействия в интеграционном решении не осуществляется, это может привести к прямым потерям.
Сравнение подходов
В компании «Диасофт» мы провели исследование рынка интеграционных решений и пришли к мнению, что в создании большинства таких решений используется два подхода: интеграция «точка-точка» и ESB (корпоративная сервисная шина или «умная шина»). Каждый из этих подходов имеет плюсы и минусы.
Интеграция «точка-точка» предполагает создание прямых интеграционных связей между каждой парой систем.
При определенных преимуществах попарных связей есть и минусы:
- сложность в понимании и управлении реализованной интеграцией, и с ростом количества потоков эта сложность растет;
- большие затраты на изменения – при изменении одной системы может потребоваться изменение множества интеграций;
- неизбежное дублирование интеграционного функционала при взаимодействии с любой из систем;
- как правило, отсутствие средств мониторинга.
Второй подход – ESB («умная шина») – предполагает использование централизованной шины для обмена данными и взаимодействия между системами.
Централизация – это здорово, но вот главные минусы, на мой взгляд:
- опять же, сложность – настройка и управление централизованной шиной сервисов трудоемко и часто базируется на проприетарном инструментарии;
- зависимость от централизованной точки отказа – все интеграционные потоки остановятся в случае отказа компонента, отвечающего за маршрутизацию;
- ограничения масштабируемости при росте количества систем и интеграций.
При разработке интеграционной платформы Digital Q.Integration мы постарались взять самое лучшее из обоих подходов, при этом нейтрализуя их минусы. В итоге сформировался подход, который мы назвали «Умные сервисы и надежные каналы». И вот что у нас получилось:
- отдельный сервис для каждой интегрируемой системы со всей необходимой и достаточной логикой интеграционного взаимодействия;
- легкая масштабируемость решения на уровне каждого отдельного адаптера;
- простая эксплуатация и развитие без регресса в целом – развертывание или обновление одного микросервиса, содержащего только функционал по одному потоку, никак не затрагивает остальные блоки решения;
- единый реестр всех сообщений;
- общие средства мониторинга и реконсиляции (сверки и согласования данных);
- надежные и простые брокеры сообщений.
Остается вопрос: как сделать умные адаптеры эффективно и правильно? Об этом поговорим в следующей публикации по теме.