8 - 2018

Преимущества использования архитектурных шаблонов при интеграции корпоративных приложений

Виталий Важинский
Инженер АО ИК «АСЭ»
Александр Шаманин
Главный специалист АО ИК «АСЭ»

В статье рассматривается способ интеграции корпоративных систем посредством применения интеграционных шаблонов корпоративных приложений — EIP, в рамках разрабатываемой в АО «ИК АСЭ» интеграционной шины инженерных и расчетных систем, которая реализуется на базе концепции сервис-ориентированной архитектуры. Приводятся преимущества, которые дает использование шаблонов интеграции. Обосновывается выбор инструментов и программных каркасов для реализации проектируемой системы.

Введение

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

Наиболее распространенным средством для решения такого класса задач является внедрение сервисной шины предприятия (Enterprise Service Bus, далее ESB) [1] — связующего программного обеспечения, которое обеспечивает централизованный и унифицированный событийно­ориентированный обмен сообщениями между различными информационными системами на принципах сервис­ориентированной архитектуры [2].

Однако программные комплексы, интегрируемые с шиной, используют разные структуры и форматы данных, обеспечивают различные бизнес­процессы компании и, ко всему прочему, обладают версионностью. В связи с этим интеграционное решение такого рода характеризуется сложностью, которая приближается к сложности архитектуры всего бизнес­ландшафта предприятия (как с нуля, так и на базе существующих средств интеграции от известных вендоров: IBM, Oracle, SAP и т.д.). В результате методы и средства, применяемые при разработке архитектуры обычного программного обеспечения, становятся нежизнеспособными и не обеспечивают требуемых результатов при проектировании ESB.

Несмотря на то что интеграция приложений представляет собой обширную и сложную для изучения тему, всегда найдутся люди, разбирающиеся в ней на порядок лучше остальных. Каким секретным знанием они обладают? Что позволяет им с легкостью находить ответы на всевозможные вопросы интеграции? Дело в том, что эти люди научились обобщать накопленный ранее опыт в виде так называемых шаблонов и применять создаваемые или уже существующие программные «каркасы» при решении новых интеграционных задач [3].

В данной статье мы ограничимся рассмотрением шаблонов интеграции корпоративных приложений — EIP (Enterprise Integration Patterns) с помощью асинхронного обмена сообщениями. Эти шаблоны применимы для таких популярных на рынке технологий, как Java Message Service (JMS), IBM WebSphere MQ, Microsoft BizTalk Server, Apache Service Mix и др.

Основные понятия и суть метода

Каждый архитектурный шаблон состоит из описания некоторой проблемы проектирования, обсуждения исходных условий и представления элегантного, сбалансированного решения.

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

Стандартное же определение каркаса предполагает, что это — набор взаимосвязанных классов для многократно используемого проектирования определенного класса программного обеспечения [4].

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

Каркасы часто основываются на шаблонах — универсальных решениях задачи с программной реализацией в определенном контексте. Основное различие между каркасами и шаблонами заключается в том, что каркасы являются реализацией программных конструкций, а шаблоны задают определение того, как решить ту или иную задачу с программной реализацией [5].

Смысл применения основанных на шаблонах каркасов в том, что они обеспечивают согласованность всего решения и могут повысить продуктивность. В динамичной среде с их помощью можно сделать решение более расширяемым. Кроме того, каркасы позволяют свести к минимуму объем кода, необходимого для реализации решения, благодаря чему решение легче сопровождать. Что еще важнее — используемые для создания каркасов шаблоны создают в организации разработчиков общий лексикон, в силу чего гораздо легче донести до других суть проекта [5].

Преимущества интеграции с помощью шаблонов

Рассмотрев важный понятийный аппарат, ответим на вопрос — в чем же преимущества применения шаблонов при проектировании архитектуры и ее реализации? Сразу стоит оговориться, что мы не будем сравнивать подход, основанный на шаблонах, с технологиями интеграции корпоративных приложений EAI (Enterprise Application Integration) или какими­либо другими способами, поскольку это уже многократно делали до нас (например, в книге «Шаблоны интеграции корпоративных приложений» Г. Хопа и Б. Вульфа) [3]. Мы лишь выделим те уникальные аспекты, которые легли в обоснование нашего выбора данного способа при проектировании интеграционной шины инженерных и расчетных комплексов в своей организации:

  • интеграционные шаблоны проектирования способны заполнить пространство между высокоуровневым архитектурным представлением задачи интеграции и ее фактической реализацией, тем самым связать видение бизнес­заказчиков и архитектора решения с видением и пониманием разработчиков [3];
  • использование шаблонов повышает вероятность удачного завершения проекта в целом (в срок, с должным качеством и в установленный бюджет), поскольку этот подход позволяет применять опыт, полученный при выполнении схожих проектов, а не «изобретать велосипед» каждый раз при интеграции новых программных комплексов с шиной;
  • использование шаблонов повышает точность планирования проектов создания ESB, поскольку гораздо проще планировать работы по типизированным архитектурным компонентам, применяемым из проекта в проект, нежели по компонентам, которые проектируются и разрабатываются с нуля;
  • использование шаблонов снижает входные требования к компетенциям архитектора решения и его разработчиков, так как базисная часть шаблона уже спроектирована, реализована и «обкатана» экспертами в данной области;
  • применение интеграционных шаблонов, ввиду наличия некоторой базисной составляющей, позволяет на всех этапах жизненного цикла решения успешно использовать методы формальной верификации и валидации архитектурных компонентов, таких как model checking [6] или метод анализа архитектурных компромиссов ATAM (Method for Architecture Evaluation) [7], показавших высокую эффективность в поиске скрытых ошибок, допущенных в процессе проектирования;
  • многие шаблоны изначально задуманы так, чтобы обеспечить определенный уровень модульности, масштабируемости решения и соответствия уже существующим техническим сервис­ориентированным архитектурам;
  • каждый из описанных шаблонов уже имеет готовую программную реализацию как на базе некоторых корпоративных ESB (IBM WebSphere Application Server, Microsoft BizTalk Server), так и на основе решений open source, базирующихся на технологии JBI (Java Business Integration).

Средства реализации архитектуры

Рассмотрим в качестве примера платформу OSS Apache ServiceMix (лицензия Apache License 2.0), на основе которой создается интеграционное решение инженерных и расчетных систем. Указанное ПО представляет собой пакет формирования композитных приложений, базирующийся на концепции корпоративной сервисной шины (ESB) и комбинирующий сервис­ориентированную и событийно­ориентированную архитектуру. Для разработки интеграционной шины мы ограничились следующими его компонентами:

  • Apache ActiveMQ — промежуточное программное обеспечение, основной задачей которого является преобразование сообщения из протокола системы­отправителя в протокол системы­получателя;
  • Apache Camel — программный каркас разработки интеграции приложений.
  • Данный выбор обусловлен тем, что:
  • программный каркас этого пакета, Apache Camel, изначально был построен на парадигме шаблонов интеграции, изложенной в книге Грегора Хопа и Бобби Вульфа [3], и описанная выше концепция хорошо реализуется на базе Apache Camel [8];
  • каждый из шаблонов интеграции корпоративных приложений — EIP, уже имеет готовую программную реализацию на каркасе Apache Camel [8,9], многократно использованную и «обкатанную» на других успешных проектах;
  • данные компоненты — open source, они дают возможность создавать безопасные, недорогие (по сравнению со средствами от известных вендоров), гибкие к изменениям и поддерживаемые профессиональным сообществом решения, позволяющие осуществлять значительные доработки без необходимости лицензирования и получения разрешений со стороны поставщика ПО.

Заключение

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

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

Как уже было отмечено, проектирование и реализация архитектуры таких сложных комплексов, как ESB на основе шаблонов, дает много преимуществ, однако самые главные из них для бизнеса — это повышение вероятности того, что в целом проект будет более успешным, а сроки получения прибыли от его внедрения существенно сократятся.

Список литературы:

  1. David Chappell. Enterprise Service Bus. Publisher: O’Reilly Media. Release Date: June 2009.
  2. Sam Newman. Building Microservices: Designing Fine­Grained Systems. Publisher: O’Reilly Media. Release Date: February 2015.
  3. Хоп Г., Вульф Б. Шаблоны интеграции корпоративных приложений: пер. с англ. — М.: ИД «Вильямс», 2007.
  4. Gamma Erich, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns: Elements of Reusable Object­Oriented Software. Reading, MA: Addison­Wesley Professional, 1995.
  5. Joseph Hofstader. Using Patterns for Rapid Development: [Электронный ресурс]. — URL: https://msdn.microsoft.com/en­us/library/cc168624.aspx#anchor6.
  6. Christel Baier, Joost­Pieter Katoen. Principles of Model Checking. The MIT Press Cambridge, Massachusetts. London, England, 2008.
  7. Rick Kazman, Mark Klein, Paul Clements. ATAM: Method for Architecture Evaluation // TECHNICAL REPORT CMU/SEI­2000­TR­004 ESC­TR­2000­004, August 2000.
  8. Apache Camel: [Электронный ресурс]. — URL: http://camel.apache.org/enterprise­integration­patterns.html.
  9. Веб­сервис для хостинга IT­проектов и их совместной разработки Github: [Электронный ресурс]. https://github.com/NIEM/Implementation­Cookbook/wiki/Enterprise­Integration­Patterns.