Сценарии использования ESB

В данной статье рассмотрены основные сценарии использования сервисной шины с целью демонстрации возможных архитектурных решений, влияющих как на выбор продукта, так и на список задач, которые можно решить путем установки ESB. Сценарии использования ESB не ставят своей целью отразить всю полноту требований организации к SOA или ESB. Например, сценарий «Интеграция двух систем» с течением времени может развиться в более сложный сценарий «Сервисы прикладных систем».

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

Рассматриваемые далее сценарии включают:

  • Интеграция двух систем;
  • Сервисы прикладных систем;
  • Интеграция с базами данных;
  • Использование ранее установленного связующего ПО
  • Межорганизационное взаимодействие;
  • Автоматизация процессов посредством оркестровки сервисов;
  • Сервисно-ориентированный бизнес с расширенным управлением.

Интеграция двух систем

Задача: В компании существует потребность интеграции между двумя системами, реализованными на основе различных технологий или платформ, таких как J2EE, .NET и др. Необходимо осуществлять передачу данных между этими системами, синхронизировать состояние некоторых объектов, включить их в общий бизнес-процесс.

Решение:

  • Для интеграции можно использовать связующее ПО для обмена сообщениями или реализовать доступ к каждой системе в виде веб-сервисов;
  • Среды обеих прикладных систем должны каким-либо образом поддерживать работу со связующим ПО или веб-сервисами;
  • Поддержка реализуется при помощи адаптеров и оболочек (или встраивается в прикладную систему, если это возможно).

Для этого сценария важно определить нагрузку на интерфейс взаимодействия и критичность к задержкам. Использование связующего ПО обеспечит более высокую скорость и надежность, реализация веб-сервисов не требует установки связующего ПО.

Второй важный вопрос, потребуется ли впоследствии интеграция с дополнительными системами. Если да, то имеет смысл рассмотреть следующие сценарии.

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

Задача: В компании установлено несколько приобретенных или разработанных приложений (например, решения класса CRM, ERP и т. д.), реализованные на платформе сервера приложений. Доступ к функциональности данных приложений нужен не только через графический интерфейс приложений, но и через программный интерфейс другими системами. Необходимо организовать взаимодействовать с этими системами и обеспечить программный доступ к ним клиентам или партнёрам.

Решение:

  • Организовать доступ к функциональности систем через открытые стандарты и протоколы;
  • Реализация при помощи адаптеров и оболочек к приобретенным системам, и встраивание сервисных интерфейсов в собственные разработки;
  • Для доступа к приложениям извне добавить шлюз, выполняющий проверку корректности обращения и наличие полномочий, реализованный в виде набора сервисов;
  • Если есть требования к надежности и скорости, нужно добавить брокер сообщений;
  • Если необходима координация и управление процессами, использовать продукт, реализующий оркестровку сервисов.

Интеграция с базами данных

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

Решение:

  • Если баз несколько, выберите те, изменения в которых должны быть переданы другим системам,
  • Используйте адаптеры к БД, позволяющие передавать в сервисную шину изменения в данных в виде событий;
  • Используйте готовые продукты представляющие работу с базой данных в виде набора сервисов, либо разработайте собственные сервисы, если их количество невелико и изменения в них будут редки,
  • Для взаимодействия сервисов используйте брокер сообщений, обеспечивающий гарантированную доставку,
  • Транзакционность работы с данными заложите в логику сервисов, в маршрутизацию по контенту, или используйте более гибкий вариант — сервис оркестровки.

Использование ранее установленного связующего ПО

Задача: В компании несколько лет назад было внедрено интеграционное ПО, работающее как брокер сообщений и поддерживающее стандарт JMS. Данное связующее ПО используется для надежной передачи данных между удаленными офисами в рамках одной системы. Теперь существует задача интеграции с другими системами, часть из которых не поддерживает JMS.

Решение:

  • Если производитель связующего ПО имеет в портфеле решение ESB, основанное на уже установленном брокере, и его функциональность удовлетворяет, то провести модернизацию системы;
  • В противном случае, использовать решение ESB другого производителя и убедиться, что оно поддерживает JMS.
  • Для интеграции с существующими системами не поддерживающими JMS и SOAP использовать адаптеры;
  • Настроить на сервисной шине сервисы преобразований данных и маршрутизации по контенту, если это требуется.
  • Если потребуется надежная доставка данным между системами, которые нельзя подключить к существующему брокеру, установить дополнительный брокер, тем самым, сформировать на сервисной шине несколько узлов надежной доставки.

Межорганизационное взаимодействие

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

Решение:

  • Использовать решения на основе открытых стандартов, чтобы упростить использование сервисов клиентами и партнерами.
  • Включить в сервисную шину шлюз, выполняющий проверку корректности обращения и наличие полномочий, реализованный в виде одного или нескольких сервисов;
  • Использовать сервис учета обращений клиентов и партнеров к сервисам;
  • Для внешних обращений использовать предпочтительно веб-сервисы, с защитой на уровне протокола SSL;
  • Если предоставление сервисов является платным и/или необходимо обеспечивать высокий уровень обслуживания, внедрить систему управления SOA-инфраструктурой, позволяющую отслеживать все обращения к сервисам, их длительность и места возникновения ошибок.

Автоматизация процессов посредством оркестровки сервисов

Задача: Помимо интеграции на уровне данных компании требуется автоматизировать бизнес-процессы и отслеживать эффективность их работы. В процессах участвуют CRM и ERP-системы, корпоративная электронная почта, портал и система заказов у внешнего партнёра. За счёт проведенного ранее внедрения SOA-инфраструктуры на базе сервисной шины, все перечисленные системы представлены в виде сервисов, но пока не увязаны между собой в бизнес-процессы.

Решение:

  • Использовать сервис оркестровки;
  • Описать бизнес-процессы и смоделировать их в среде разработки для сервиса оркестровки;
  • Выбрать события, инициирующие описанные бизнес-процессы, и обеспечить появление на сервисной шине сообщений, информирующих о данных событиях.

Сервисно-ориентированный бизнес с расширенным управлением

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

Решение:

  • Необходимо использовать инструменты формализации бизнес-процессов и их отображение в использование внутренних сервисов компании и внешних сервисов партнеров, например, на основе сервиса оркестровки;
  • Выбрать ключевые показатели KPI и привязать их к используемым сервисам;
  • Обеспечить взаимодействие сервисов на уровне сервисной шины, применяя надежную доставку в тех случаях, когда это необходимо;
  • Использовать сервисы преобразования данных и маршрутизации по контенту для реализации переходов между шагами бизнес-процессов;
  • Внедрить систему управления SOA-инфраструктурой, позволяющую отслеживать все обращения к сервисам, их длительность и места возникновения ошибок. На её основе отслеживать изменения KPI и использовать при принятии бизнес-решений о развитии компании.