Самый часто встречающийся миф. SOA - это концепция, парадигма, новый подход к созданию корпоративного программного обеспечения (ПО) и автоматизации бизнес-процессов предприятия, но никак не технология. SOA является лишь очередным этапом развития архитектуры программного обеспечения. Рисунок показывает, как с течением времени развивались парадигмы программирования и какое место занимает SOA как подход к разработке ПО:
А вот какое место займет SOA, если рассматривать её как этап развития корпоративных систем:
Таким образом, SOA представляет собой подход к построению информационной системы (ИС) на предприятии, разработке ПО, и при этом может быть реализована с помощью различных инструментальных средств и технологий.
[Перепечатка материалов 12news.ru разрешается только с предварительного согласования с редакцией или автором. Если вы читаете этот материал на другом ресурсе, пожалуйста, сообщите нам об этом editor@12news.ru]
Конечно, нет. Во-первых, вернитесь к рисункам из первого пункта, и вы поймете, что SOA «впитала» в себя весь опыт и функционал, заложенный предыдущими архитектурами. SOA, также как и клиент-серверная архитектура, работает по принципу: запрос-ответ и функционирует в сетевой среде. А если сравнивать SOA c N-уровневой архитектурой, то можно с уверенностью сказать, что построение SOA с использованием только Web-сервисов на сегодняшний день невозможно без middleware. Если два сервиса взаимодействуют между собой и формат сообщений различается, вам просто необходимо промежуточное ПО (middleware) для преобразования сообщений. Во-вторых, не стоит забывать о таких технологиях как DCOM (Distributed Component Object Model) или CORBA (Common Object Request Broker Architecture), на базе которых были сделаны первые попытки создать модель SOA еще в 90-х годах.
Совершенно не обязательно. Технологии, с помощью которых может быть реализована SOA, могут быть совершенно различными, при этом их выбор делается на основе физического взаимодействия различных компонентов системы. Так для компании, которая работает в рамках одной локальной сети, реализация SOA через Web-сервисы была бы достаточно затратной по скорости работы системы и объемам передаваемой по сети информации. В данном случае, вполне реально реализовать SOA c помощью десктопных приложений, взаимодействующих с помощью технологии COM+ (Component Object Model с расширенными возможностями).
Глубокое заблуждение, сопровождающее SOA, состоит в том, что большинство ассоциируют SOA c Web-сервисами (см. 3 пункт). Использование Web-сервисов это лишь часть программной реализации. А кроме программной реализации у SOA есть четко сформулированные принципы построения, компоненты и стандарты, на которые опираются все разработчики этой архитектуры.
Можно говорить о том, что под данными аббревиатурами скрываются «карты из одной колоды», но «масти» все-таки у них разные. Рассмотрим каждую из аббревиатур в контексте SOA. EAI (Enterprises Application Integration) - интеграция корпоративных приложений. К EAI относят технологии и приложения, задача которых вовлечь несколько приложений (возможно реализованных на разных технологиях), используемых в одной организации в единый процесс и осуществлять преобразование форматов данных между ними. SOA отличается от EAI тем, что, во-первых, взаимодействие между компонентами системы происходит на уровне сервисов (обмен XML-сообщениями), а не средствами API (Application Programmer Interface), как в EAI. Во-вторых, элементы SOA «слабо» связанны между собой, что обеспечивает гибкость архитектуре, тогда как приложения в EAI жестко связаны между собой и не поддаются трансформации. В-третьих, EAI - это всего лишь интеграция корпоративных приложений, а не концепция построения ИС. Многие склонны считать EAI частью SOA, но при этом можно говорить и о том, что SOA стала этапом развития EAI:
Что же касается SOA и BMP, то здесь необходимо говорить об их тесном взаимодействии. BMP (Business Process Management) – управление бизнес-процессами. BPM можно назвать управленческой методологией, позволяющей реорганизовывать и оптимизировать бизнес-процессы, что является очень важным для внедрения SOA (см. 6 пункт). Поэтому стоит рассматривать BMP и SOA как стороны одной медали, используя BPM с сервисно-ориентированной точки зрения, а SOA - с точки зрения бизнес-процессов. BPM – это грань SOA, которая убирает деление ИТ и бизнес-процессов за счет постоянного совершенствования последних с помощью моделирования и симуляции, выполняемых с помощью специализированного ПО - BPMS (Business Process Management System).
На единичных примерах внедрения SOA на предприятиях, можно сделать вывод о том, что, прежде всего, стоит адаптировать бизнес под ИТ, а не наоборот. Для успешного функционирования SOA и получения эффекта от ее внедрения, все бизнес-процессы на предприятии должны быть пересмотрены, но не сразу (см. 8 пункт). Этого требует тот факт, что любой Web-сервис, который вы собираетесь создать, должен иметь четкое, прикладное бизнес значение. Он должен быть полностью автономным, функционально полным и обязан отвечать за конкретный бизнес-процесс (к примеру, сервис «Создание договоров с клиентами»). Не стоит рассматривать SOA как методологию внедрения или адаптацию ИТ-решений под ваше предприятие. В широком смысле, SOA можно понимать как концепцию развития бизнеса: «SOA is about the business, not about IT».
Достаточно распространенное мнение: «Мы слышали, что SOA - самая гибкая, самая оптимальная, а наш бизнес растет и развивается. Давайте внедрим!». Во-первых, у многих компаний-разработчиков еще нет богатого опыта успешного внедрения. Во-вторых, SOA невозможно тиражировать для различных компаний, потому что любая сервисно-ориентированная архитектура «затачивается» под бизнес-процессы конкретной компании и то, что работает у других, возможно, не сработает у вас. Невозможно купить SOA в качестве коробки с дисками, установить, что-то настроить, где-то подкрутить и вот ваше предприятие автоматизировано по последнему слову ИТ-моды. SOA проектируется, разрабатывается и внедряется для конкретного предприятия. Это можно назвать «эксклюзивным» ИТ-решением. SOA может изменить ваши взгляды на управление бизнесом, поскольку эта архитектура оптимизирует бизнес-процессы, делает бизнес гибким, мобильным, способным быстро меняться за счет ускорения отклика ИТ на запросы бизнеса. Стоит трезво оценить возможность внедрения подобного решения, поскольку результат может не оправдать ваших надежд.
Поскольку внедрение SOA стоит немалых денег и ресурсов, то лучшим способом внедрения будет поэтапный. Создайте несколько сервисов для не самых важных бизнес-задач, понаблюдайте, как реагируют сотрудники компании, приносит ли свои плоды новое решение? Не стоит сразу «кидаться в омут», покупая какой-либо инструментарий для внедрения SOA, реализованный на одной из технологий (.NET, Java). Внедряя поэтапно, не затрачивая огромных средств и пробуя различные подходы, вы, возможно, обнаружите более удобное решение. Переходите от малого к большему.
Абсолютно не обязательно. Вы наверняка сможете найти неординарного сотрудника, который сможет организовать процесс внедрения, объяснить остальным сотрудникам всю важность данного шага для предприятия в целом. Что ему действительно будет необходимо, кроме кадровых преимуществ, так это инструменты для управления – программные продукты, позволяющие следить и оценивать результаты внедрения SOA.
Многие считают, что модель SOA успешно применяется в компаниях сервисного обслуживания, электронной коммерции или Интернет-компаниях, поскольку их бизнес заключается в предоставлении услуг клиентам, сервисов. Еще раз напоминаю, что SOA это архитектура, подход, и применять его можно с успехом для любого вида бизнеса. Об этом и свидетельствуют успешные проекты внедрения SOA в сфере производства, финансовых компаниях и банках.
Можно согласиться с тем, что сама концепция архитектуры прозрачна и имеет четкую структуру в совокупности со стандартами и компонентами, позволяющую достаточно быстро в ней разобраться. Но выделение сервисов, перестройка бизнес-процессов, оптимизация взаимодействия между ними и их реализация в соответствии с принципами архитектуры – вот где кроется основная сложность SOA. Удачно спроектированная на бумаге реализация может на деле быть совершенно не актуальной. Добавьте к этому неквалифицированный персонал, проблемы безопасности и целостности информации, и вы получите все те проблемы, с которыми должен справиться руководитель внедрения SOA (см. 8 пункт). В завершении нашей темы, надо еще раз напомнить о том, что внедрение SOA - очень сложный и ответственный шаг, предпринимая который, стоит учитывать все факторы (экономические, человеческие) и обладать полной информаций обо всех аспектах данной корпоративной архитектуры. Надо отметить, что успешное внедрение подобной системы, дает предприятию не только возможность эффективно управлять бизнесом, но и быстро реагировать на все изменения, легко внедряя новые ИТ-решения в платформу SOA.
© Борзов Сергей
© Издание 12NEWS (ИП Маринин А.Л.), 2007