Основы soa. Сервисно-ориентированное и объектно-ориентированное программирование

Service Oriented Architecture (SOA) - это новая парадигма проектирования распределенных интегрированных систем. Согласно SOA любые части информационных систем имеющие функциональность рассматриваются как службы (service providers, провайдеры служб), которые предоставляют свою функциональность другим частям системы посредством вызовов их функций. Службы являются компонентами, которые могут быть найдены и вызваны через локальную сеть или Internet. При этом различные службы могут организовываться (orchestrate) для совместного выполнения определенной задачи. SOA обеспечивает концептуальные архитектурные шаблоны и платформы для таких систем. Обычно архитектура таких систем и потоки данных в них близки к структуре бизнес-подразделений, использующих их, и взаимодействий между ними. В некоторой степени происходит соединение информационных технологий и бизнес-процессов на концептуальном уровне. Такое слияние положительно влияет на понимание информационных систем представителями бизнеса (концепция службы более наглядна чем термины "репликация", или "удаленный вызов процедуры"), и на понимание бизнес-процессов разработчиками системы. В качестве платформы для SOA-приложений обычно используются web-службы. Однако, не все информационные системы, построенные на основе web-служб, соответствуют SOA, и SOA не обязательно должна базироваться на технологии web-служб. Концепция SOA впервые была описана в 1996 году, но только в последние годы на волне интереса к web-службам стала широко известной. К этой волне популярности приложило руку и Microsoft - в 1999 году Steve Ballmer озвучил концепцию "software as service", получившую свое воплощение в технологии.NET и web-службах. Поддержка web-служб встраивается во многие продукты Microsoft - BizTalk Server, MapPoint Server, SQL Server 2005 (Yukon), Office 2003.

Don Box - один из архитекторов новой инфраструктуры Microsoft для межпрограммного обмена сообщениями Indigo выделил 4 основных принципа SOA:

    Явные границы служб . Для каждой части системы, для всех подсистем и компонент из которой она состоит, можно однозначно сказать где она находится - вне службы или внутри определенной службы. Это связанно с тем, что системы, построенные по SOA, состоят из служб, которые часто разделены большими расстояниями, работающими на разных платформах и имеющими различные средства обеспечения безопасности. Обмен сообщениями между различными частями таких систем имеет существенные накладные расходы. Поэтому, SOА основано на модели явного обмена сообщениями, а не на модели неявного вызова методов (как в DCOM). Явные границы служб обеспечивают автономность служб и независимость от реализации.

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

    Службы описывают свой контракт и схемы сообщений, но не реализацию. Клиенты службы знают ее контракт (сигнатуры методов и их метаданные) и схемы данных, которые описывают сообщения службы и используемые данные. Информация о том, как реализована служба, ее клиентам не доступна и не нужна. Так же формальное описание контракта и схемы с помощью политик (policy) позволяет службам осуществлять проверку входящих сообщений. Как и в случае использования компонент (например, COM), так же имеющих контракт, особую значимость для работоспособности системы в целом имеет устойчивать контрактов.

    Совместимость служб основана на политиках (policy). Применение технологий, таких как WS-Policy, предоставляют декларативные и программные способы описания политик. Политики применяются как для служб, так и для клиентских приложений. Примером политики может быть требование на шифрование обмениваемых данных.

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

Этапы развития архитектуры программного обеспечения

Объектно-ориентированное программирование играет важную роль при разработке SO систем для разработки самих служб и их клиентов, но не систем целиком. Чем же не устраивает объектно-ориентированная архитектура при разработке больших распределенных информационных систем? Ее существенными ограничениями являются

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

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

    отсутствие встроенных средств безопасности

Архитектура, основанная на компонентах, (CORBA, COM/DCOM) сняло часть проблем - снизило степень детализации и улучшило ситуацию с повторным использованием компонент. Компонентные технологии обеспечивали языки описания интерфейсов (к примеру, IDL) и средства для локального и удаленного вызова компонент.
SOA позволяет проектировать и создавать приложения, предоставляющие другим приложениям удаленно вызывать их методы через опубликованные интерфейсы, и возможность найти эти службы и описания интерфейсов. На схемы на примере web-служб видно 3 основные роли в SOA - службы (service providers), клиенты служб (service consumers) и брокеры (brokers). Доступ к службам происходит через сеть по стандартным протоколам. Сами службы описываются на стандартном языке (контракт службы) и публикуют эту информацию при помощи брокера. Службы разделяют свой интерфейс и его реализацию. Для вызова службы клиентскому приложению нужно только описание интерфейса службы - информация же о реализации службы не нужна клиентам. Реализация службы может меняться, не затрагивая клиентов и без необходимости предоставлять клиентам новую версию описания службы - в этом и проявляется низкая связанность частей системы (loose coupling). Другим преимуществом разделения интерфейса и реализации является возможность выбора клиентом службы из нескольких служб с одинаковым интерфейсом путем простого указания адреса нужной службы. В этом скрыта возможность для расширения и масштабирования системы после ее создания. В систему можно добавлять новые службы или новых клиентов служб не нарушая уже существующую функциональность. Причем для добавления добавления новой функциональности к системе не нужно иметь доступ к ее исходному коду. Для обеспечения такой независимости от реализации при использовании web-служб нужно избегать использования типов данных, привязанных к определенной технологии (например, вместо типизированных DataSet платформы Microsoft .NET использовать сущностные классы или специально созданные объекты переноса данных (DTO)) и расширений WS-*, пока имеющих различия реализаций на разных платформах.
Брокеры хранят информацию о службах и предоставляют эту информацию клиентам.
Web-службы являются наилучшей технологией, на котором основывается SOA. Поиск web-служб происходит в UDDI-каталоге, интерфейс службы описан на WSDL, а вызов происходит по протоколу SOAP. Так как web-службы базируются на стандартизированных технологиях, они работают в кросс-плафторменных средах и не зависят от языка реализации.

Характеристики service oriented architecture. Информационные системы, построенные согласно SOA, обладают следующими характеристиками:

    основанность на индустриальных стандартах. SOA использует технологии, разработанные совместно Microsoft, IBM, SUN, BEA, Oracle, W3C. Это освобождает от привязки к конкретной платформе или поставщику программных продуктов. Различные части системы могут быть разработаны на различных языках программирования и работать на разных платформах

    низкая связанность (loose coupling) частей системы. Клиенты в SOA системах могут разрабатываться в полной независимости от служб, используя только их опубликованный интерфейс. Из-за разделения интерфейса и реализации служб клиентские приложения подключаются к службам с помощью позднего связывания (late binding). Низкая связанность обеспечивает лучшую способность систем к их расширяемости: изменения в функциональности в службе не должно затрагивать клиентов, а при добавлении новых типов данных средства разработки берут на себя часть работы. Низкая связанность также способствует инкрементному и итеративному подходу к разработки ПО, из-за отсутствия трудностей реализации функцинольности службы за несколько итераций

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

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

Типы служб. Службы на основе их функциональности можно условно поделить на пять типов:

    службы доступа к данным , предоставляющие чтение и изменение данных (CRUD-функции). Они скрывают реализацию доступа к реальным источникам данных и предоставляют единый унифицированный интерфейс для доступа к данным вне зависимости от количества и вида используемых источников данных. Для обмена данными могут использоваться специально созданные сущностные объекты, XML данные или же объекты, инкапсулирующие таблицы БД (например, объекты DataSet платформы.NET). Этот вид служб SOA самый легкий в реализации и чаще всего используется в приложениях

    службы бизнес-логики содержат функциональность, используемую для выполнения различных бизнес-операций (например, оформление заявки на слад или формирование отчета по уровню продаж). В ходе выполнения бизнес-операций обычно вызываются методы других служб (к примеру, служб доступа к данным для получения списка проданных товаров за последнюю неделю)

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

    низкоуровневые вспомогательные службы отвечают за аутентификацию и авторизацию, мониторинг, поиск служб, регистрацию ошибок, вспомогательные функции, используемые в других службах. Часто их называют общие службы (common services) или службы инфраструктуры предприятия (interprise infrastructure services)

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

Степень детализации служб (service granularity). Детализация служб относится к масштабу функциональности, предоставляемой службой. На основе функциональности по количеству данных, получаемых и отправляемых службой, можно разделить их на службы с мелкой детализацией (fine-grained), грубой детализацией (coarse-grained) и композитные (composite).
Службы с мелкой детализацией осуществляют прием и отсылку данных небольшими порциями информации и и на каждую их функцию приходится небольшое количество функциональность. Дополнительно может возникнуть необхоимость сохранения с состояния службы между ее вызовами.
При грубой детализации происходит обмен большими порциями информации и каждая функция реализуют б о льшую функциональность. При этом передаваемые данных часто имеют составную структуру и используются специально созданные объекты переноса данных (data transfer objects).
Функции с мелкой детализацией обычно вызываются не реальными приложениями, а другими службами - композитными или с грубой детализацией, использующими высокосоростные сетевые соединения. При вызове служб с мелкой детализацией напрямую клиентскими приложениями из-за большого количества обмениваемых сообщений (особенно при низкой скоростью соединения) суммарное время вызова функций возрастает из-за накладных расходов.
Композитные службы используют для своей работы службы с мелкой и грубой детализацией, делегируя им реальную работу и осуществляя контролирующую функцию и сбор информации.
Microsoft Indigo. Новая версия операционной системы Windows "Longhorn" будет включать в себя инфраструктуру для разработки распределенных систем под кодовым названием "Indigo", основанная на.NET. Indigo предоставляет общую программную модель для использования web-служб, .NET remoting, System.Messaging и.NET Enterprise Services. Indigo входит в состав WinFX (новой программной моделью Windows) и будет поставлятся так же и для операционных систем Windows XP и Windows 2003. Основными подсистемами Indigo являются сервисная модель, коннектор, хостинговое окружение и службы.

Архитектура Indigo

Сервисная модель Indigo отвечает за связывание кода, отвечающего за обработку сообщений, и приходящих сообщений. На нее возложены функции поддержки транзакций, обеспечения безопасности передачи сообщений и их гарантированную доставку. Для упрощения разработки активно применяется декларативный подход.
Коннектор обеспечивает соединение между службами, основанное на SOAP и метаданных служб. Скрывая детали реализации и оперируя такими понятиями как порт, канал и сообщение он позволяет создавать высокопроизводительные приложения, независящие от транспортных протоколов, обеспечивающие безопасность, регулирование нагрузки и надежность передачи сообщений и способных настраиваться на различные конфигурации сетей (SSL, прокси-серверы, файрволы и пр.). Для этого в коннектор входит кодировщик, конвертирующий сообщения в данные, передаваемые по конкретному транспортному протоколу, и обратно. Для гарантированной доставки сообщений можно применять одну из двух моделей гарантированной доставки: экспресс, при которой в памяти содержится буфер сообщений, доставка которых еще не подтверждена, и надежный, при котором этот буфер находится на жестком диске.
Хостинговое окружение. Сервисная модель Indigo и коннектор могут быть загружены в любой домен приложения. Окружение хостнига было разработано для использования Indigo в максимально большом количестве систем хостинга (dllhost.exe, svchost.exe, IIS и пр.).
Системные службы и службы сообщений. Для обеспечения функциональности служб Indigo использует специальные службы. В качестве пример системных служб можно привести службы для обеспечения транзакций. Службы сообщений обеспечивают расширенную функциональность для очередей сообщений и поддержку событий.
Как мы видим все подсистемы можно поделить на 2 уровня - на высокоуровневые слой, имеющий удобный для разработки приложений интерфейс, и низкоуровневый слой, обеспечивающий б о льшую производительность и контроль над тонкостями реализации.
Indigo позволяет создавать службы двух видов: web-службы и RemoteObject службы. Web-службы в Indigo представляют собой традиционные asmx службы ASP.NET, соответствующие SOAP 1.2 и дополненные расширенными возможностями: поддержкой распределенных транзакций, гарантированной доставкой сообщений, поддержкой web-serivce farms для увеличения масштабируемости и возможностью обмена сообщениями между службами и клиентами в обоих направлениях.
Службы RemoteObject являются улучшенной версией.NET remoting, позволяющей создавать экземпляры удаленных объектов или удаленно вызывать их методы. Обновления и улучшения коснулись улучшенной поддержки SOAP, импорта и экспорта метаданных, аутентификации, шифрования, распределенных транзакций и автоматической активации.

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

Речь идет, прежде всего, о сервисной модели взаимодействия между приложениями общей системы в рамках так называемой сервис-ориентированной архитектуры ( Service -oriented architecture SOA ) и о реализации архитектуры, "управляемой моделями" (модельная архитектура . Model-driven architecture MDA ).

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

Само понятие SOA не является чем-то принципиально новым, так как сходные возможности реализовывались и ранее, например, с помощью технологий обмена сообщениями. Принципиальным фактором является то, что современные подходы к реализации SOA охватывают не только технологический уровень обмена данными, но и уровень бизнес-операций. В частности, одним из важных результатов стала разработка специализированного языка BPEL (Business Process Executable Language for Web Services) для описания аспектов взаимодействия различных сервисов с точки зрения реализации бизнес-правил. Вообще говоря, принятие SOA как целевой архитектуры будет подразумевать и соответствующий подход к разработке приложений (SODA – service -oriented development architecture ).

Для задач электронного бизнеса соответствующая функциональность SOA реализуется на уровне web -сервисов (служб). Под web -сервисами понимаются программные системы, которые используют XML в качестве формата данных, стандарты Web Services Description Language ( WSDL ) для описания своих интерфейсов, Simple Object Access Protocol ( SOAP ) для описания формата принимаемых и посылаемых сообщений и стандарт Universal Description , Discovery and Integration ( UDDI ) для создания каталогов доступных сервисов. И хотя принципы сервис-ориентированной архитектуры создания информационных систем не обязательно предполагают использование технологий web -сервисов, связь между этими двумя направлениями в развитии информационных технологий является достаточно тесной. При этом web-сервисы являются технологическими спецификациями, в то время как сервис-ориентированная архитектура ( SOA ) является принципом проектирования архитектуры программных систем.

С учетом отмеченных выше существующих тенденций перехода к бизнесу "реального времени" и создания систем так называемого "расширенного предприятия", объединяющих само предприятие, его поставщиков, партнеров и клиентов в единую систему, становится очевидно, что технологии web -cервисов найдут свое применение на всех уровнях корпоративных информационных систем. Предполагается, что в будущем практически все взаимодействие приложений как в рамках одной информационной системы, так и между системами отдельных участников бизнес-процесса, будет осуществляться с использованием такого механизма, так что достаточно критическими становятся вопросы согласованной работы этих сервисов. Для описания такой работы были предложены даже специальные термины – "хореография" и "оркестровка" (очевидно, по аналогии с управлением оркестром из различных инструментов или ансамблем разных исполнителей). При этом, если хореография определяет взаимодействие различных участников с использованием сервисов, то оркестровка описывает взаимодействие сервисов в рамках одного бизнес-процесса, в частности, с использованием языка типа BPEL.

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

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

Дословно SOA расшифровывается как service-oriented architecture (сервис-ориентированная архитектура).

В последнее время это стало эдаким buzzword, то есть отчасти модным словечком, отчасти термином специально произносимым произвести впечатление на окружающих.

Все крупнешие компание-производители программного обеспечиния (такие как IBM, BEA, Oracle) постоянно преподносят новости, которые так или иначе обыгрывают SOA. Большинство фирм-консалтеров и интеграторов различными способами информируют, что занимаются реализацией и внедрением сервис-ориентированной архитектуры у клиентов. Часто правда каждый понимает сервис-ориентированную архитекту́немного (или сильно) по своему.

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

Традиционные проблемы информационных систем

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

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

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

Определение SOA

По своей сути service-oriented architecture (SOA) не содержит новых революционных идей, а является обобщением лучших практик создания программно-информационных систем уровня предприятия и выше, она не привнесла ничего оригинального, но она служит квитэссенцией ведения интеграционных проектов.

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

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

SOA характеризуют следующие основные принципы, следование которым позволяет сказать является ли информационная система сервис-ориентированной или нет:

  • сервисы как компоненты информационной системы, которые публикуют свои интерфейсы (контракты). Эти контракты являются независимыми от платформы, языка программирования, операционной системы и других технических особенностей реализации, сервисы взаимодействуют между собой и вспомогательными службами посредством открытых, широко используемых стандартов.
  • каждый, составляющий информационную систему сервис реализует отдельную бизнес-функцию, которая является логически обособленной, повторяющейся задачей, являющейся составной частью бизнес-процесса предприятия.
  • низкая связанность (loose coupling). Сервисы в системах, построенных на SOA могут быть реализованы в независимости от других служб системы, необходимо только знание интерфейса используемых сервисов.

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

Рассмотрим их немного подробнее.

Сервисы как компоненты информационной системы

Сервисом называется независимый программный компонент, выполняющий определенную задачу, такую как например «проверить кредитную карточку», не требующей для использования клиентами какой-то определенной программной технологии.

Использование открытых стандартов является важной характерной особенностью SOA. Это значительно уменьшает время подключения нового бизнес-сервиса к существующей системе, так же как и (что является часто крайне важным моментом для предприятий, имеющих богатые наработки за предыдущее время), при внедрении СОА, нет необходимости переписывать или просто отказываться от проверенных годами и действующих решений.

Выбор распределенной технологии играет существенную роль. Использование, например, SNA или DCOM в качестве средства общения сервисов накладывают такое ограничение, при котором все компоненты в системе обязаны использовать SNA или DCOM, что ограничивает применимость системы.

Когда же говорят том, что информационная система следует принципам СОА, то сервис, реализованный, например, на языке Java и работающий в EE контейнере должен быть применим для использования клиентами, реализованными в Windows среде и наоборот.

Сервис выполняет повторяющуюся бизнес функцию

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

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

Таким образом функциональность используется многочисленными приложениями и существует возможность быстро и относительно просто изменить бизнес-логику, приспосабливая ее к постоянно меняющимся условиям рынка.

Причем изменения необходимо вносить только в один-единственный сервис, и сделанные изменения одновременно используются всеми клиентскими приложениями.

Это и является одним из главных достоинств SOA.

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

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

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

В принципе на важность и даже необходимость декомпозиции бизнес процессов при внедрении автоматизированных систем уровня предприятия обращалось внимание уже очень давно, но именно в СОА это является одним из основополагающих принципов.

Низкая связанность (loose coupling)

Низкая связанность - важный архитектурный принцип при разработке СОА систем. Использование этого принципа позволяет связывать различные компоненты информационной системы во время ее функционирования с помощью, так называемого, позднего связывания (late binding).

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

Благодаря низкой связанности значительно упрощается пошаговое создание корпоративной системы из-за отсутствия барьеров реализации функциональности сервиса за несколько итераций.

Возможность динамически подключать новые сервисы, также как и поиск этих сервисов клиентами является также одним из краеугольных принципов системы, построенной на основе service-oriented architecture.

Пример построенной на SOA информационной системы

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

Однако все-таки, наверное, имеет смысл рассмотреть, из каких компонент может состоять некая идеальная усредненная SOA система. Многие из предоставленных ниже этих составляющих частей настолько важны и объемны, что могут являться темами отдельного рассмотрения, здесь же эти компоненты будут предоставлены только для общего ознакомления.

Итак, основными компонентами (представлены на рисунке 1) являются сервисная шина предприятия (ESB), СОА реестр (SOA Registry), workflow engine, сервисный брокер (service broker), СОА супервизор (SOA supervisor) Все они играют собственную роль в системе, при этом взаимодействуя друг с другом.

Рисунок 1.

Сервисная шина предприятия (ESB):

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

Для передачи сообщений в SOA как правило используют сервисную шину предприятия (Enterprise Service Bus – ESB). Сервисная шина является настолько важной в СОА, что возможно представить, что сервис-ориентированная архитектура не может существовать без нее и, наоборот, наличие ее является достаточным условием для SOA. На самом деле можно построить основанную на сервис-ориентированной архитектуре систему без применения сервисной шины и ее наличие не гарантирует позиционирование системы как СОА.

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

СОА реестр (SOA Registry):

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

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

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

СОА реестр также хранит информацию каждого компонента.

Workflow engine:

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

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

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

Продукты, моделирующие бизнес процессы, существовали задолго до СОА, существует огромное количество предложений от различных поставщиков, часто специализирующихся в различных областях. Около 15 лет назад большинство из этим систем были связаны с системами документооборота. Сейчас же поставщики этих систем все более тяготеют к системам управления бизнес-процессами и административными регламентами (business process management system или просто BPM).

Cервисный брокер (service broker):

Сервисным брокером является служба, соединяющая различные сервисы вместе. Он получает всю необходимую информацию от СОА реестра (SOA Registry), что означает, что реестр и брокер должны работать координировано.

Рисунок 2.

На рисунке 2 представлено как в некоторой СОА системе сервисный брокер организовывает обработку заказов. Схема включает только 4 бизнес сервиса и workflow engine.

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

Последовательность действий может выглядеть следующим образом:

  1. Пользователь входит в систему и запрашивает службу обработки заказов. Поскольку эта служба еще не запущена, сервисный брокер получает соответствующее уведомление и начинает свою работу
  2. Сервисный брокер запрашивает у СОА реестра, что необходимо для запуска службы обработки заказов и возможно ли ее стартовать в настоящее время
  3. Сервисный брокер проверяет, запущены ли 4 необходимых для службы обработки заказов бизнес-сервиса, если еще не запущены, то стартует их.
  4. На основании полученной от реестра СОА сервисный брокер проверяет интерфейсы между бизнес компонентами. Эти компоненты можно затем соединить вместе для службы обработки заказов.
  5. Сервисный брокер уведомляет бизнес компоненты, что они должны связаться с workflow engine для выполнения необходимой службы и бизнесс процесс начинает выполняться

Некоторые реализации сервисной шины предприятия (ESB) выполняют также функции сервисного брокера.

СОА супервизор (SOA supervisor):

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

Одна из основных задач СОА супервизора это отслеживать работу различных компонентов внутри СОА системы, оценивать корректность их функционирования, а также отслеживать запросы, посланные во внешние системы.

Трудно переоценить важность этого компонента.

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

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

Сервис-ориентированная архитектура (SOA) — настоящей статье рассматриваются способы обоснования эффективности, а также варианты ее внедрения с минимальными затратами.

Любое ИТ-подразделение занимается оптимизацией своих внутренних процессов и технологий с целью снижения затрат и повышения востребованности ИТ в компании. Управление требованиями, изменениями, инцидентами и проблемами — все эти процессы служат объектами для оптимизации, но практика показала, что на этом много не сэкономить.

Эффект от оптимизации процессов управления информационными технологиями для бизнеса незначителен: если затраты на ИТ были сокращены на 5%, а в общей сумме затрат компании они составляют всего 2%, то суммарный эффект от оптимизации — 0,1%. Достигнутые результаты не приносят ожидаемого эффекта на уровне бизнеса, поэтому энтузиазм ИТ-специалистов часто сопровождается разочарованием.

От применения сервис-ориентированной архитектуры (SOA) при построении ИТ-решения эффект может быть намного существеннее, поскольку преимущества SOA не столько в кратковременном сокращении затрат, сколько в усилении адаптивности информационных систем и всей компании в целом. Адаптивность — это очень важное качество сегодня, стратегический приоритет. В более длительной перспективе, на стратегическом горизонте, применение SOA также позволяет оптимизировать затраты на развитие ИТ в компании на больший процент, чем оптимизация процессов ИТ-подразделения. Однако возникает вопрос: как помочь компании воспользоваться преимуществами от внедрения SOA.

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

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

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

Для расчета ROI указанные преимущества необходимо оцифровать соответствующими показателями и отслеживать через них по ходу проекта экономическую эффективность применения SOA. Следовательно, внедряя SOA, важно анализировать получаемые преимущества уже на первых шагах, что и поможет получить одобрение и финансирование от бизнеса.
По прогнозу экспертов Aberdeen Group, в течение пяти лет крупнейшие мировые компании ожидают экономии до 53 трлн долл. за счет внедрения SOA.

Сервис-ориентированная архитектура — тактика внедрения

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

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

После того как приложение разделено на компоненты, адаптивность системы становится заметнее, что отражается на ускорении внесения изменений в ИТ-решение. Создавая композитное приложение на базе SOA, компания получает определенную гибкость в принятии решений о том, как и куда двигаться дальше, не будучи связанной выбранными ИТ-платформами и унаследованными информационными системами. При этом разделенное на части приложение проще поддерживать или заменить в случае необходимости. Такое разделение на отдельные компоненты способствуют повышению качества информационной системы в целом, так как зависимости между компонентами становятся более понятными, а влияние изменений — предсказуемым.
Итак, ощутимыми выгодами от проведения модернизации и интеграции приложений в соответствии с принципами SOA являются:
контролируемые расходы при изменении функциональности информационных систем;
сокращение времени адаптации сложных информационных систем к постоянно изменяющимся бизнес-процессам компании;
систематизация компонентов ИТ-архитектуры и повышение степени интегрированности информационных систем компании;
быстрые результаты при автоматизации новых функциональных областей;
сокращение затрат на поддержку информационной системы через унификацию компонентов.
Данные цели не так противоречивы, как может показаться на первый взгляд, и отражают естественное желание бизнеса иметь эффективную ИТ-поддержку, т.е. прозрачные, гибкие и надежные информационные системы, изменения в которые можно вносить мгновенно.

Сервис-ориентированная архитектура — стратегия внедрения

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

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

Система мотивации должна предусматривать следующие основные принципы:

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

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

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

Сервис-ориентированная архитектура и технологии BPM, ESB

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

Внедрение SOA невозможно без технологии управления бизнес-процессами (Business Process Management, BPM), которая поможет быстро компоновать новые автоматизированные процессы с учетом существующих сервисов. Сочетание принципов SOA с технологией BPM и BPM-системой гарантирует согласованность выполнения процесса без жесткой привязки к кодированию. В свою очередь BPM-система позволяет определить рамки использования компонентов и необходимость их типизации.

Далее при внедрении SOA потребуется инструментарий SOA Governance — библиотека унифицированных сервисов, которая обеспечит общий доступ к компонентам композитной среды для их повторного использования. SOA также должна поддерживаться определенным интеграционным инструментарием (Enterprise Service Bus, ESB), предназначенным для интеграции разнородных ИТ-ресурсов и рационализации обмена данными с помощью сервисной шины. И хотя в принципе SOA может быть построена без ESB, по мнению большинства аналитиков, именно интеграционная шина служит ключевым решением для сервис-ориентированной архитектуры.

А.Коптелов
Руководитель практики внедрения бизнес-приложений IDS Scheer Россия и страны СНГ

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Санкт-Петербургский государственный электротехнический университет

Кафедра МОЭВМ

Сервис-ориентированная архитектура

Выполнил:

Орешко Д.В.

Санкт-Петербург 2004

программный инфраструктура операционный

Введение

1. Предпосылки

2. Архитектура SOA

3. Базовые стандарты SOA

4. Реестр сервисов

5. Оркестровка

6. Что такое Web-сервисы

8. Проблемы SOA

9. Достоинства

Литература

Введение

Сервис ориентированная архитектура (service-oriented architecture - SOA) - принципы построения корпоративной программной инфраструктуры, позволяющий разным приложениям обмениваться данными и процессами независимо от ОС, на которых они исполняются, и языков программирования, на которых они написаны. В такой модели приложение или часть приложения называется сервисом. Другое приложение, или потребитель сервиса, может его найти и вызвать. Доступ выполняется через локальную сеть или Интернет. Таким образом, SOA -- это не продукт и даже не технология, а концепция создания и интеграции отдельных корпоративных приложений.

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

В качестве сервиса может выступать как целое приложение, так и отдельные его функциональные модули. Сервисами могут быть прикладные функции, реализующие определенную бизнес-логику, бизнес-транзакции, состоящие из нескольких функций более низкого уровня, и системные функции, отражающие специфику различных операционных платформ. Все сервисы независимы друг от друга. Они выполняют определенные действия по запросам, полученным от других сервисов, и возвращают результаты. Все детали этого полностью скрыты: в концепции SOA сервисы - это "черные ящики". В интерфейсе сервиса определены параметры и описан результат. Иными словами, интерфейс определяет суть сервиса, а не технологию его реализации. На архитектурном уровне для обращения к сервису не имеет значения, является он локальным (реализован в данной системе) или удаленным (внешний по отношению к ней), какой протокол используется для передачи вызова, какие компоненты инфраструктуры при этом задействованы. SOA предполагает наличие единой схемы обращения к сервису независимо от того, находится ли они в том же самом приложении, в другом адресном пространстве многопроцессорной системы, на другой аппаратной платформе в корпоративной intranet-сети или в приложении в системе партнера.

1. Предпосылки

Как решается задача интеграции приложений? Традиционный подход -- построение промежуточного программного слоя того или иного типа. Оптимальной для объединения разнородных платформ и решений выглядела технология взаимодействия распределенных объектов CORBA, позволявшая инкапсулировать бизнес-логику приложений, выполняющихся на разных платформах и созданных с использованием разных языков программирования, организовав связь между ними на базе строго описанных интерфейсов. Аналогичные возможности -- правда, с естественным ограничением гетерогенности -- предлагала корпорация Microsoft в рамках своей компонентной модели DCOM. Однако этим решениям не хватало универсальности; даже применение CORBA сильно зависело от реализации в продуктах разных поставщиков, появлялись новые объектные модели, не поддерживающие CORBA, интеграция по-прежнему реализовывалась на достаточно низком уровне, практически, исключая возможность динамичного изменения связей между приложениями в ходе выполнения. Важно и то, что все предлагаемые средства интеграции фокусировались на технологических особенностях реализации приложений и не позволяли учитывать специфику бизнес-процессов, в которых эти приложения использовались.

В то же время новые потребности бизнеса диктуют и новые условия интеграции. Динамичность ИТ-среды, ее нацеленность на решение бизнес-задач, необходимость быстрых изменений в ответ на изменение этих задач -- эти характеристики приобретают ключевое значение при проектировании или реформировании корпоративных ИТ-инфраструктур. В этих условиях отдельные, «точечные» решения по интеграции настолько усложняют и саму инфраструктуру, и процесс управления ею, что становятся абсолютно неприемлемыми. Представим себе, к примеру, что в компании существует несколько приложений, каждое из которых интегрировано со всеми остальными посредством соответствующих интерфейсов. Если таких приложений -- n, то всего потребуется n(n-1) интерфейсов. С добавлением всего лишь одного нового приложения появится 2n новых интерфейсов, для которых потребуется соответствующее документирование, тестирование и поддержка. В примере на рис. 1 пять взаимодействующих приложений порождают 20 интерфейсов, а добавление шестого приложения потребует еще 10. При этом придется вносить модификации в код каждого из существующих приложений для учета новых интерфейсов и проводить соответствующее тестирование. Чтобы избежать этого, нужна модель интеграции, которая позволит максимально упростить процесс добавления новых приложений и минимизирует число интерфейсов взаимодействия.

Еще одна серьезная проблема -- избыточность программных компонентов и сложность их многократного использования. В рис. 1 приводится пример программной инфраструктуры банка, включающей в себя несколько групп приложений для различных направлений банковской деятельности, которые были разработаны в рамках никак не связанных между собой проектов. В результате, с большей долей вероятности возможна ситуация, когда одна функция (скажем, получение баланса по вкладу) реализована многократно в системе автоматизации банкоматов, в системе поддержки филиалов и в системе расчетов по кредитным картам, -- даже если все эти системы используют одни и те же данные о счете из общей базы данных. А теперь предположим, что банк намерен разработать новые системы, например, для обслуживания клиентов в Internet или выдачи ссуд в режиме on-line. Расширение функциональности программной среды банка повлечет за собой дополнительную избыточность, если в этой среде отсутствуют механизмы многократного использования компонентов, поддерживающих различные задачи бизнеса. Все эти интеграционные проблемы и привели к появлению идеи сервисно-ориентированной архитектуры (service-oriented architecture, SOA). Для разрешения этих проблем простого набора технологий уже недостаточно. Нужен общий, архитектурный подход, концепция архитектуры программной среды предприятия, в которой возможна адекватная потребностям бизнеса динамика разработки, интеграции и эксплуатации приложений.

2. Архитектура SOA

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

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

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

Отметим некоторые из этих принципов.

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

Постоянство изменений. Отдельные участки архитектуры могут претерпевать изменения в любой момент времени.

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

Рекурсивность. Однотипные решения имеют место на различных уровнях архитектуры.

Как бы неожиданно это ни показалось, перечисленные принципы были сформулированы американским архитектором Кристофером Александером в отношении архитектуры современного мегаполиса. В 1987 году он и его коллеги опубликовали работу под названием «Новая теория городского проектирования» (A New Theory of Urban Design), где излагались взгляды на возможность децентрализованного развития городов. В своей работе Александр показал, как можно осуществлять развитие городов с учетом существенной демографической разнородности жителей. Аналогичным образом SOA, основанная на адаптации этих принципов, позволяет объединить в общий взаимодействующий организм информационные системы, принадлежащие различным автономным организациям и их относительно автономным структурным подразделениям.

Общая схема.

В самом общем виде SOA предполагает наличие трех основных участников: поставщика сервиса, потребителя сервиса и реестра сервисов (см. рис. 2). Взаимодействие участников выглядит достаточно просто: поставщик сервиса регистрирует свои сервисы в реестре, а потребитель обращается к реестру с запросом). Отсутствие любого из этих элементов недопустимо, а добавление других составляющих на практике не только возможно, но и неизбежно. Среди таких элементов могут быть всевозможные программные средства промежуточного слоя, контролирующие порядок и контекст взаимодействия, осуществляющие мониторинг и управление сервисами, а также управление метаданными и другие вспомогательные процессы.

Рис. 2. Общая схема SOA

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

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

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

В SOA сервисы рассматриваются как автономные объекты, управление которыми не централизовано. Это позволяет взаимодействующим посредством сервисов информационным системам развиваться в соответствии с потребностями бизнеса, которые потребителям сервисов, как правило, не только не известны, но и не интересны. Однако это было бы невозможно, если бы интерфейс сервиса не был прочно закреплен обоюдным соглашением провайдера и потребителя сервиса. Одной из отличительных черт SOA является наличие контрактов, описывающих интерфейсы сервисов. Такой контракт представляет собой документ, специфицирующий ожидания сервиса по отношению к его потребителям и наоборот. Контракты Web-сервисов описываются WSDL-документом, в нотации XML определяющим, как потребители должны обращаться к сервису. Использование XML на этом этапе имеет принципиальное значение, позволяя и провайдеру, и потребителю сервиса не зависеть от определенной платформы.

Подобные контракты существовали и до появления Web-сервисов. Например, в архитектуре CORBA для описания интерфейса объектов использовался язык IDL, который уступает WSDL по ряду существенных параметров. Главный из них -- отсутствие поддержки XML и XML Schema, ставших наиболее распространенными языками разметки передаваемых по сети сообщений и представления моделей данных. Технические контракты, формулируемые провайдером сервисов, должны быть доступны потенциальным потребителям для интерпретации, анализа и реализации интеграции. Для этого используется специальный реестр, каталогизирующий доступные сервисы.

3. Базовые стандарты SOA

Набор базовых стандартов SOA держится на трех «китах». В их число, кроме WSDL и UDDI, входит протокол SOAP -- простой механизм для создания структурированных пакетов данных, предназначенных для обмена информацией между сервисами (сетевыми приложениями). Эту тройку стандартов объединяет то, что все они построены на базе языка XML и являются открытыми, то есть их развитием занимаются независимые комитеты по стандартизации. Чтобы понять, как они работают вместе, сравним технологию Web-сервисов с общением по телефону. В таком случае XML -- это язык, на котором ведется разговор, SOAP описывает правила набора номера, UDDI представляет собой телефонную книгу, а WSDL объясняет, что такое разговор по телефону и как его вести.

4. Реестр сервисов

Сейчас в области Web-сервисов сложились две группировки: одна включает IBM, BEA и Microsoft, а вторая -- Sun, Fujitsu и Oracle. Каждая из них продвигает свои разработки. Например, для управления транзакциями первая предлагает протокол WS-Transactions, а вторая -- WS-Transactions Management; для гарантированной доставки сообщений первая выпустила WS-ReliableMessaging, а вторая -- WS-Reliability. И так -- по всем направлениям технологии Web-сервисов. В результате на роль «заполнителей дыр» в SOA сейчас претендует множество различных методов, но явного лидера нет.

Была создана организация Web Services-Interoperability (http://www.ws-i.org/), которая пытается выработать некий общий знаменатель для технологии Web-сервисов. В августе нынешнего года она выпустила документ WS-I Basic Profile 1.1, определяющий требования к различным компонентам SOA, которые могут гарантировать их совместимость и прояснить тонкости использования Web-сервисов. Программный интерфейс реестра сервисов составляет часть стека протоколов взаимодействия. В наборе технологий Web-сервисов таким стандартом является UDDI (Universal Description, Discovery and Integration). Его спецификация является единственной из ядра основополагающих стандартов Web-сервисов, разработанной вне рамок консорциума World Wide Web Consortium. Таким ядром принято считать спецификации, входящие в профиль WS-I Basic Profile, призванный обеспечить общую для различных инструментальных платформ базу взаимно совместимых технологий описания, публикации, обнаружения и вызова сервисов.

Для разработки данной спецификации в 2000 году был сформирован Консорциум UDDI (UDDI.org), объединивший более 200 корпоративных членов. В соответствии со своим трехлетним мандатом, консорциум выпустил три версии спецификации и перестал существовать в 2003 году. Уже зрелый стандарт, реализованный многими разработчиками, UDDI был передан в организацию Organization for the Advancement of Structured Information Standards (OASIS), занимающую важное место в мире ИТ-стандартов. Текущей версией UDDI, официально принятой в качестве стандарта OASIS, является вторая; ратификация третьей версии ожидается в конце лета этого года, а технический комитет UDDI в составе OASIS уже разрабатывает очередную порцию нововведений.

UDDI обладает весьма развитой функциональностью, существенно более богатой чем, аналогичный компонент набора стандартов CORBA -- CORBA Naming Service. В отличие от предыдущих поколений реестров, UDDI был изначально нацелен на применение как внутри организаций, так и между ними, поэтому реестры UDDI одинаково удобны для ведения информации о нескольких или о тысячах сервисах. Для этого UDDI предусматривает гибкую информационную модель и средства распределения доступа. C точки зрения применимости UDDI в SOA, наиболее методологически значимым элементом информационной модели UDDI является возможность стандартизации типов сервисов (рис. 3). Интерфейс сервиса, описанный WSDL-документом, или даже отдельную его характеристику (скажем, стоимость или поддержка некоего протокола, такого, как HTTP Basic или WS-Security для авторизации) можно представить самостоятельным объектом метаданных в UDDI. Совокупность ссылок на такие объекты характеризует профиль интероперабельности данного сервиса. Используя те или иные параметры, потребитель может найти в реестре сервис, соответствующий его техническим или деловым потребностям.

Рис. 3. Стандартизация типов сервисов

Стандартные типы сервисов жизненно необходимы для любой более или менее масштабной сервис-ориентированной архитектуры. Представьте себе, что произойдет в реальной жизни с поставщиком, который заставляет потребителей подстраиваться под себя? Жизнь заставит его либо перейти на общепринятые формы взаимодействия, либо установить собственный стандарт, для чего необходимо предоставлять уникальную полезность. Экземпляров же сервисов, соответствующих определенным стандартам, может быть сколь угодно много.

С момента публичного представления первой версии UDDI функционирует общедоступный реестр UDDI Business Registry (UBR), который сейчас состоит из четырех географически распределенных реплицируемых узлов: Microsoft (западное побережье США), IBM (восточное побережье США), SAP (Европа) и NTT Telecom (Азия). Наиболее популярным применением UDDI все же остается организация закрытого сообщества взаимодействующих информационных систем либо внутри компании, либо в строго ограниченном кругу ее деловых партнеров. Очевидно, что частный реестр UDDI при этом является центральным звеном корпоративной сервис-ориентированной архитектуры.

5. Оркестровка

Весьма интересна терминология, связанная с веб-сервисами. Так, средства обмена сообщениями, с помощью которых несколько независимых агентов стремятся достичь желаемого состояния, получили название "хореографии", а взаимодействие сервисов - "оркестровки". Для "оркестровки" (т.е., по сути, описания бизнес-логики) были разработаны (с участием крупнейших вендоров, таких, как IBM, Microsoft, Oracle и BEA Systems) специальные средства программирования - BPEL4WS, XLANG, WSFL и др.

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

К ранним языкам определения бизнес-процессов путем комбинирования Web-сервисов относятся XLANG компании Microsoft (www.gotdotnet.com/team/ xml_wsspecs/xlang_c/default.htm) и Web Services Flow Language (WSFL) компании IBM (www-3.ibm.com/software/solutions/ webservices/pdf/WSFL.pdf). XLANG основан на языке WSDL; его основное назначение состоит в определении бизнес-процессов и организации обмена сообщениями между Web-сервисами. WSFL позволяет описывать как публичные, так и частные процессы. Определяется обмен данными, последовательность выполнения и отображение каждого шага процесса на конкретные операции.

6. Что такое Web-сервисы

Web-сервисами мы называем активный контент, реализующий некоторую функциональность, и данные, расположенные на Web-серверах и предоставляемые для использования внешним приложениям. Web-сервисы полностью независимы от языка и платформы реализации. Внешние приложения работают с сервисами посредством стандартных протоколов и форматов данных. Технология Web-сервисов является краеугольным камнем программной модели Microsoft .NET.

Любой разговор о SOA невольно переходит на рассуждение о роли и месте Web-сервисов. Несмотря на то, что основные положения SOA сложились задолго до появления Web-сервисов, сегодня Web-сервисы занимают центральное место в SOA. Использование XML и Web-сервисов "поднимает SOA на более высокий уровень". Действительно, открытые стандарты, описывающие XML и Web-сервисы, позволяют применять SOA ко всем технологиям и приложениям, установленным в компании. Как известно, Web-сервисы базируются на широко распространенных и открытых протоколах: HTTP, XML, UDDI, WSDL и SOAP. Именно эти стандарты реализуют основные требования SOA - во-первых, сервис должен поддаваться динамическому обнаружению и вызову (UDDI, WSDL и SOAP), во-вторых, должен использоваться независящий от платформы интерфейс (XML). Наконец, HTTP обеспечивает функциональную совместимость. Наконец, сегодня Web-сервисы рассматриваются как эффективный инструмент для интеграции, в том числе для взаимодействия процессов, выполняемых в различных компаниях.

Для демонстрации возможностей SOAP может быть использована недавно вышедшая реализация SOAP Toolkit версии 2.0 производства Microsoft. Объект SOAPClient выступает в роли посредника (proxy), предоставляющего интерфейс Web-сервиса и позволяющего работать с ним как с обычным COM-объектом.

Рис. 4. Механизм взаимодействия клиента и сервера SOAP

Клиентское приложение создает экземпляр объекта SOAPClient. SOAPClient читает файлы описания методов Web-сервиса (на языках WSDL и Web Services Meta Language, WSML). Эти файлы могут храниться и на стороне клиента. Клиентское приложение, используя возможности позднего связывания методов объекта SOAPClient, вызывает метод сервиса. SOAPClient формирует пакет запроса (SOAP Envelope) и отправляет его на сервер. Можно применить любой транспортный протокол, но, как правило, используется HTTP.

Серверное приложение Listener (это может быть ISAPI-приложение или ASP-страница) принимает пакет, создает объект SOAPServer и передает ему пакет запроса. Помимо этого Listener обрабатывает HTTP-пакеты от клиента, отправляет клиенту пакеты с результатом работы сервиса, обрабатывает ошибки и использует функциональность SOAP-объектов. SOAPServer читает описание Web-сервиса, загружает описание и пакет запроса в деревья XML DOM. SOAPServer вызывает метод объекта или приложения, реализующего сервис. Результаты выполнения метода или описание ошибки конвертируются объектом SOAPServer в пакет ответа и отправляются клиенту. Объект SOAPClient проводит разбор принятого пакета и возвращает клиентскому приложению результаты работы сервиса или описание возникшей ошибки.

WSDL-файл - это документ в формате XML, описывающий методы, предоставляемые Web-сервисом, а также параметры методов, их типы, названия и местонахождение сервиса Listener. Мастер SOAP Toolkit автоматически генерирует этот документ, фрагмент которого приведен ниже: SOAP Envelope (Пакет) - это XML-документ, который содержит в себе запрос на выполнение метода или ответ на него. Удобнее всего рассматривать пакет как почтовый конверт, в который вложена информация.

Рис. 5. Структура SOAP-пакета

7. Четыре уровня адаптации SOA

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

Уровень 1.

Реализация отдельных Web-сервисов. Это начальный уровень развертывания SOA, на котором технологии Web-сервисов используются для разработки новых приложений или преобразования существующих, например, для интеграции с помощью WSDL-интерфейсов систем, написанных на С++, Cobol и Java. Здесь компании должны реализовать этапы создания и развертывания сервисов. Для создания предлагается инструментарий WebSphere Studio Application Developer, а также набор средств Emerging Technology Toolkit, который позволяет разработчикам опробовать новые решения в области Web-служб. Развертывание Web-сервисов поддерживается сервером приложений WebSphere Application Server.

Уровень 2.

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

Говоря об интеграции, мы подразумеваем взаимодействие между сервисами в SOA на уровне интерфейсов. Однако надо иметь в виду, что в реальной ИТ-инфраструктуре, где будет происходить переориентация на сервисы, проблема интеграции может оказаться гораздо шире, и необходимо будет учитывать различные типы и стили интеграции. Назовем некоторые из них. Интеграция на уровне пользовательского интерфейса. Получение удобного и эффективного интерфейса для взаимодействия пользователя со средой интегрированных сервисов. Эта область интеграции связана с развитием портальных технологий.

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

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

Интеграция унаследованных систем. Здесь стоит выделить еще одну архитектурную концепцию, используемую для сервисно-ориентированной интеграции. Речь идет о концепции сервисной шины предприятия (enterprise service bus, ESB). Ее задача -- предоставить единый механизм передачи запросов и получения результатов сервисов, выполнения необходимых преобразований сообщений и транспортных протоколов (скажем, от SOAP на базе HTTP к SOAP на основе WebSphere MQ), обеспечения требований безопасности доступа и, что наиболее важно, управления потоком обращений к сервисам. Благодаря такому управлению выполняется нужная последовательность вызовов сервиса для реализации бизнес-процесса; определение процесса как серии обращений к сервисам поддерживается, например, в разработанном усиловиями IBM и Microcoft языке Business Process Execution Language (BPEL). Обратившись к схематичной иллюстрации шины ESB (рис. 3), можно увидеть, что этот подход решает одну из главных проблем интеграции -- проблему минимизации интерфейсов. Добавление нового сервиса к общей картине приведет к появлению одного и только одного дополнительного интерфейса для интеграции с остальными компонентами архитектуры.

Рис. 6. Модель сервисной шины

Все задачи интеграции, отображения бизнес-процессов компании в сервисы -- предмет реализации на втором и третьем уровнях перехода к SOA в трактовке IBM. На этих уровнях вступают в действие все четыре этапа жизненного цикла сервисов, и используется множество программных продуктов. Второй уровень -- это реализация SOA для ограниченного числа подразделений в компании. Здесь, на этапе создания к средствам разработки WebSphere Studio Application Developer добавляется система WebSphere Host Access Transformation Services. Для развертывания используется поддерживающий язык BPEL сервер интеграции бизнес-процессов WebSphere Business Integration Server Foundation и шлюзы CICS Tranaction Gateway или IMS Connect. Для использования полученных возможностей предлагается WebSphere Portal, а функции управления возлагаются на модули семейства Tivoli -- Access Manager и Monitoring for Transaction Performance.

Уровень 3.

Трансформация ИТ-инфраструктуры в масштабе предприятия. Здесь речь идет о сервисно-ориентированной интеграции приложений и процессов уже в масштабах всей компании, причем согласованный, сервисный подход к ИТ-инфраструктуре распространяется не только на внутренние подразделения, но и на партнеров и поставщиков. Здесь вступают в действие системы, обеспечивающие более глубокую детализацию разработки и интеграцию сервисов с учетом всех уже рассмотренных типов интеграции. IBM предлагает WebSphere Business Integration Modeler и Rational Rose XDE для этапа создания сервисов, WebSphere Business Integration Message Broker для развертывания, DB2 Information Integrator и Lotus Workplace для стадии использования. Управление такой полноценной средой SOA реализуется с помощью инструментов семейства Tivoli -- Identity Manager, Business System Manager и Monitoring for Business Integration, а также WebSphere Business Integration Monitor.

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

Уровень 4.

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

8. Проблемы SOA

Несогласованность стандартов. В области Web-сервисов сложились две группировки: одна включает IBM, BEA и Microsoft, а вторая -- Sun, Fujitsu и Oracle. Каждая из них продвигает свои разработки. Например, для управления транзакциями первая предлагает протокол WS-Transactions, а вторая -- WS-Transactions Management; для гарантированной доставки сообщений первая выпустила WS-ReliableMessaging, а вторая -- WS-Reliability. (Стоит отметить, что после анонсирования Microsoft Visual Studio Team System, а также предложений IBM по конкретным решениям, основанным на SOA, это противостояние стало минимальным, и можно ожидать продвижения в разработке единых стандартов, регламентирующих использование Web-сервисов).

На первое место при создании SOA-приложений выходит проектирование интерфейса, что, в свою очередь, выдвигает новые требования к разработчикам, связанные с кардинальной переменой самой идеологии программной разработки, которые не могут обеспечить современные средства проектирования, изначально ориентированные на классическую клиент-серверную архитектуру. Трех существующих стандартов Web-сервисов достаточно для создания простых систем, но явно маловато для разработки сложных решений, которые, как правило, и нужны в корпоративной среде. Чтобы Web-сервисы могли выполнять задания бизнеса, нужно обеспечить гарантированную асинхронную доставку сообщений, управление транзакциями, шифрование, координацию распределенных программных компонентов, аутентификацию, авторизацию и многое другое. Массовое распространение SOA и Web-сервисов сдерживается и недостатком соответствующих инструментов. Но, может скоро положение измениться к лучшему.

9. Достоинства

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

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

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

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

Литература

1. Сергей Кузнецов. Обзор октябрьского 2003 года номера журнала Computer (IEEE Computer Society, Vol. 36, No. 10, October 2003).

2. Валентин Колесов Демонстрация работы SOAP на примере написания Web-сервер.

3. Отчет "Сервис-ориентированная архитектура" (Service Oriented Architecture. InfoWorld Research Report. 2005).

4. Хао Хи (Hao He) "Что такое сервис-ориентированная архитектура" (What is Service-Oriented Architecture?).

5. Клив Финкельштейн (Clive Finkelstein) "Корпорация: сервис-ориентированная архитектура" (The Enterprise: Service-Oriented Architecture (SOA)).

6. Джерими Уэстерман (Jeremy Westerman) "Сервис-ориентированная архитектура сегодня: введение в SOA" (SOA Today: Introduction to Service-Oriented Architecture).

7. Владимир Беленкович, Тимофей Горшков Логическая структура понятия сервисов в рамках SOA.

8. Елена Гореткина Непростой путь от Web-сервисов к SOA.

9. Даниил Фейгин Концепция SOA.

10. Наталья Дубова SOA: подходы к реализации.

Размещено на Allbest.ru

...

Подобные документы

    Технология распределенных вычислений CORBA, взаимодействие компонентов и архитектура. Основное назначение CORBA и COM. Поддержка операционных систем, предлагаемые службы и масштабируемость. Формальное описание архитектуры и проблемы ее реализации.

    курсовая работа , добавлен 02.12.2013

    Объект CORBA и жизненный цикл серванта. Общий протокол межброкерного взаимодействия (GIOP). Связывание с языком высокого уровня. Статические и динамические вызовы. Применение технологии CORBA при построении распределенных информационных приложений.

    курсовая работа , добавлен 23.12.2014

    Сущность, развитие и применение СОМ-технологий, их достоинства, недостатки, терминология. Особенности СОМ-интерфейса, сервера, клиента, расширений. Локальные и удаленные серверы, их функции и реализация. Технология OMG CORBA и архитектура комплекса.

    курсовая работа , добавлен 13.11.2011

    Технология CORBA для написания распределенных приложений, ее предназначение, преимущества и правила использования. Язык IDL и его использование в качестве универсальной нотации для определения границ объекта и для подержания наследования интерфейсов.

    лабораторная работа , добавлен 30.06.2009

    Обзор существующих объектных архитектур. Архитектура программного обеспечения. Создание веб-сервиса "Библиотека", предоставляющего механизмы работы с данными на стороне клиентского приложения. WEB-сервис и трехуровневая архитектура в основе приложения.

    лабораторная работа , добавлен 16.06.2013

    Технология CORBA (Общая Архитектура Брокера Объектных запросов): интерфейс, управление объектами. Создание сервисного приложения, простейшего объекта. Установка связи между клиентом и серверным объектом. Массивы, обработка ошибок и устойчивость к сбоям.

    реферат , добавлен 09.11.2011

    Изучение внутренней и внешней архитектуры персонального компьютера. Логическая организация и структура аппаратных и программных ресурсов вычислительной системы. Описание различных компонентов ПК. Принципы их взаимодействия, функции и характеристики.

    контрольная работа , добавлен 15.06.2014

    Агентно-ориентированная программная архитектура систем обработки потоковых данных. Обеспечение гибкости и живучести программного обеспечения распределенных информационно-управляющих систем. Спецификации программных комплексов распределенной обработки.

    реферат , добавлен 28.11.2015

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

    реферат , добавлен 22.06.2011

    Назначение и цели создания системы. Разработка логической модели данных, выбор хранилища. Диаграмма классов для диспетчера и контент-менеджера, схема взаимодействия объектов системы. Описание программных модулей. Тестирование веб-базированной системы.