Реестр служб: главное звено для повышения повторного использования служб в сервис-ориентированной архитектуреХуан Пабло Гарсия-Гонсалес (Juan Pablo García-González), Вероника Гаситуа-Декар (Verónica Gacitúa-Décar), Д-р. Клаус Паль (Dr. Claus Pahl), Сентябрь 2009 г. Краткое содержание.Предприятия, начавшие применять сервис-ориентированный подход, в числе его преимуществ называют снижение затрат за счет повторного использования имеющихся служб. Реестр служб – один из фундаментальных компонентов сервис-ориентированной архитектуры (SOA), необходимый для повторного использования служб. Это место, где поставщики служб могут делиться информацией о предлагаемых службах, а потенциальные клиенты – искать нужные им службы. В этой статье мы дадим советы по реализации реестра служб в масштабах предприятия. Кроме того, мы обсудим имеющиеся в отрасли и академических кругах вопросы, которые связаны с управлением информацией в реестре служб и пока что являются открытыми. Введение Повторное использование служб сильно зависит от способности описывать и публиковать функциональность, предлагаемую службами, открывая эту информацию ее потенциальным потребителям (клиентам). Реестр служб позволяет организовывать информацию о службах и предоставлять средства для их публикации и обнаружения [1]. Стандарт универсального описания, поиска и взаимодействия (Universal Description Discovery and Integration, UDDI) и язык описания веб-служб (Web Services Description Language, WSDL) совместно с протоколом SOAP являются стандартами описания служб и их поставщиков, а также способа использования служб.
На рисунке 1 представлены некоторые отношения между описанием службы на языке WSDL и информацией, хранящейся в реестре служб UDDI. Рисунок 1. Отношения между WSDL и UDDI (щелкните рисунок, чтобы просмотреть увеличенное изображение)Изначально планировалось, что стандарт UDDI будет охватывать как открытые для всех службы, так и доступные только внутри предприятия. В настоящее время большинство реализаций сделано в рамках предприятий. В случае если задействовано несколько предприятий, то публикация, обнаружение и, в конечном итоге, повторное использование службусложняется. Например, сторонам часто требуется заключить дополнительные юридические и коммерческие соглашения. Выделенные (общедоступные) реестры служб UDDI подвергались критике, помимо прочего, за ограниченность при обращениях к службам и их обнаружении. Однако недавно в Интернете появились поисковые машины, которые умеют обходить общедоступные документы WSDL и представляют интерес как инструменты обнаружения общедоступных служб [5]. Проектирование репозитория корпоративных службВ этом разделе мы рассмотрим несколько правил проектирования, применимых для разработки улучшенного репозитория корпоративных служб. Основное внимание уделяется улучшению повторного использования служб в ИТ-проектах. Цель – повысить прозрачность служб для экспертов предметной области (часто это относится к бизнес-аналитикам) и дополнить описания служб практической информацией для архитекторов. Бизнес-аналитики, обладающие меньшим объемом технических знаний, но располагающие обширным пониманием предметной области, часто играют роль проектировщиков на раннем этапе реализации инициатив по внедрению или изменению программного обеспечения предприятий. Бизнес-аналитикам принадлежит ключевая роль в вопросе повторного использования служб. Корпоративные службыКорпоративные решения, основанные на службах, включают в себя различные типы служб. Согласно принципу разделения ответственности, реализуемому в рамках шаблона виртуализации служб [6], службы могут выступать в качестве промежуточного слоя между клиентом и приложениями поставщика, которые используют эти службы. В шаблоне виртуализации основное внимание уделено абстрагированию от технических деталей, таких как расположение конечной точки службы, применение политики, управление версиями служб и информация о динамическом управлении службами. Обращение производится к промежуточному уровню службы. Технические вопросы обрабатываются на уровне реализации, где используется действующая бизнес-логика. На основе инициатив SOA, реализованных на нескольких предприятиях, мы выделяем три типа служб:
На рисунке 2 изображены основные статические отношения между элементами корпоративного решения, основанного на службах, а также их отношения с элементами шаблона виртуализации. В реестре служб организованы описания трех типов служб и их взаимоотношений. Клиентские приложения и приложения поставщика обмениваются сообщениями, обрабатываемыми при посредничестве бизнес-служб, их расширений и служб приложений. Реестр служб управляет (на уровне конфигурации) информацией, устанавливающей связи между различными типами служб. Эта информация хранится в репозитории служб и используется во время исполнения бизнес-службы для ответа на запросы клиентов. Рисунок 2. Архитектура, основанная на службах, и ее взаимосвязь с ролями шаблона виртуализации (щелкните рисунок, чтобы просмотреть увеличенное изображение)Пример № 1Рассмотрим упрощенную бизнес-службу, которая используется в страховой компании для расчета общего объема продаж продуктов по страхованию жизни и коллективному страхованию. Общий объем продаж продуктов по страхованию жизни и общий объем продаж продуктов по групповому страхованию берутся из соответствующих унаследованных приложений. Каждое унаследованное приложение имеет службу приложения (соответственно lifeInsurance и groupInsurance), предоставляющую данные об общем объеме продаж по каждому типу страхового продукта. Бизнес-служба получает запросы от клиентов, которым нужны данные об общем объеме продаж. После этого она обращается к реестру служб, в котором находится информация, необходимая для применения к сообщениям конкретных политик, и данные о зависимостях служб приложений и расширений бизнес-служб. Расширение бизнес-службы обрабатывает ответы службы приложений и предоставляет бизнес-службе единый ответ, в котором содержатся данные об общем объеме продаж компании. В свою очередь бизнес-служба передает этот ответ клиентскому приложению. На рисунке 3 представлено описание взаимодействия. Рисунок 3. Основные взаимодействия между элементами решения, основанного на службах и описанного в примере № 1 (щелкните рисунок, чтобы просмотреть увеличенное изображение)Реестр корпоративных службРеестр корпоративных служб – основной элемент, организующий информацию о службах и поддерживающий взаимодействие между корпоративными приложениями, которые предоставляют службы и используют их. Базовые функциональные возможности реестра корпоративных служб, основанного на стандарте UDDI, можно расширить с помощью:
Репозиторий служб хранит информацию и документацию, логически управляемые реестром служб. На рисунке 4 показана основная информация, организованная в рамках корпоративного реестра служб, которая хранится в репозитории служб и предоставляется конечным пользователям посредством веб-интерфейса. Рисунок 4. Реестр корпоративных служб (щелкните рисунок, чтобы просмотреть увеличенное изображение)Описания службОписания служб являются ключевым элементом реестра служб. Они определяют способ обнаружения служб и их последующего повторного использования:
В таблице 1 более подробно описана информация, управляемая реестром служб:
Таблица 1. Основные сведения о службе в реестре корпоративных служб (щелкните рисунок, чтобы просмотреть увеличенное изображение)Использование реестра корпоративных служб для улучшения повторного использования службОсновываясь на нашем опыте работы над проектами, мы хотим сказать, что ключевыми факторами, позволяющими улучшить повторное использование служб, являются предоставление простых описаний бизнес-служб, облегчение доступа к ним и управление зависимостями служб. Базовый элемент для достижения этих целей – реестр корпоративных служб.
По итогам работы над различными проектами можно сформулировать следующие выводы.
Остающиеся открытыми вопросы, имеющиеся в отрасли и академических кругахВ этом разделе приведены некоторые наблюдения, которые сделаны в отрасли и академических кругах и связаны в вопросами дополнения описания служб, организации информации о службах в реестре служб и ролью подобных реестров в стимулировании повторного использования служб. Стратегии организации и поиска служб в реестрахЕсли информацию о службе в корпоративном реестре служб сложно выделить – из-за неадекватной ее организации или неэффективных механизмов поиска – ценность такого реестра падает. Деление служб на категориипоможет отделить службы друг от друга и классифицировать их в соответствии с одной или несколькими категориями. Реестры UDDI поддерживают эту возможность с помощью категорий служб (tModel). Схемы разделения на категории в UDDI относятся к таксономическим классификациям. В рамках таксономии концепции организуются в иерархическую структуру. К одной сущности UDDI могут быть применены несколько таксономий. Для использования предлагаются стандартные схемы классификации, например, «Система стандартных продуктов и услуг ООН» (UNSPSC [9]). Однако также можно использовать другие стандарты таксономии либо стандарты предприятия. API запросов UDDI поддерживает различные формы запросов, в частности шаблоны просмотра, детализации и вызова. Запросы могут напрямую обращаться к службам, а также к категориям служб. Подобно поисковым машинам в Интернете, шаблон поиска позволяет находить элементы реестра по ключевым словам. Хотя этот механизм автоматизирует часть поисковых служб, результаты ограничены диапазоном значений системы кодирования и прямыми соответствиями значений. Этот способ не подходит для поиска служб, описания которых включают аналогичные или связанные понятия, описанные с применением другого синтаксиса. Кроме того, при использовании различных схем разделения на категории управление пересекающимися категориями может оказаться затратным [10]. Обслуживание таксономии – это дополнительная нагрузка, которую следует учитывать при развертывании реестра служб. Схемы классификации, которые не обновляются, могут влиять на качество результатов поиска [11]. Научное сообщество, занимающееся исследованиями в области семантики, предложило альтернативный вариант, с помощью которого можно семантически расширить описания и улучшить схемы классификации в реестрах служб. Базовые таксономии можно расширить или заменить онтологиями. Онтологии структурируют концепции внутри предметной области и определяют их значения. Аксиомы ограничивают круг возможных интерпретаций концепций и механизмов осмысления, с помощью которых на основе имеющихся данных строятся умозаключения. Согласно Кюстеру и др. [12], несмотря на то что семантическое расширение описаний служб может повысить качество поиска служб, некоторые проблемы остаются нерешенными, в частности, как снизить вычислительные затраты на осмысление, обслуживание онтологий и улучшение результатов поиска для повышения его эффективности. Как управление версиями служб влияет на реестры службПосле реализации службы могут произойти изменения как в самой реализации, так и в элементах описания службы в репозитории служб. Целью изменений может быть улучшение повторного использования:
Часто новые версии служб являются репликациями предыдущих версий, в которых добавлены новые элементы или изменены существующие. Новым версиям присваивается другое название (согласно соглашению об именах), и их описание сохраняется в реестре как новая запись. Юрич и др. [15] предлагают расширения WSDL и UDDI для управления версиями служб. Этот подход касается управления версиями как во время выполнения, так и во время разработки. Эффективность на уровне кода обеспечивается благодаря тому, что нескольким версиям службы разрешено ссылаться на одну и ту же базу кода. Кроме этого, потребители получают уведомления о новых и нерекомендуемых версиях служб. Для отслеживания изменений поддерживается трассировка. В этом научном исследовании поощряется повторное использование служб при том, что сложность реестра служб остается управляемой. Применение сведений об использовании службы для улучшения описания и обнаружения службИстория использования службы может стать интересным источником информации не только для воссоздания ее реального поведения [16], но и для ее обнаружения. Сохраненные данные об истории использования службы (журнал) помогут разбить службы на категории в соответствии с их пользователями или с поведением служб. Рассмотрим описание службы, в котором указано, что в контракте заявлен конкретный уровень производительности службы. Однако реально измеренный уровень производительности в заданный период времени (рассчитывается на основании данных журнала) оказался ниже. Эта информация может использоваться при обнаружении службы. Те службы, уровень производительности которых ниже ожидаемого, будут исключены из результатов поиска. Статистика поведения служб в ретроспективе поможет построить рейтинги с меньшим уровнем отклонения и повысить точность обнаружения служб. Однако необходимо наличие инфраструктуры для непрерывного мониторинга служб и сохранения сведений журналов. На основе журналов служб можно рассчитать вероятности для количественного измерения неопределенности. Кларк и др. [17] рассматривают неопределенность в отношении конфигурирования системы, построенной на основе служб, параметров оценивания компонентов системы и длительности событий. Модель неопределенности используется для предсказания производительности системы при росте нагрузки. Это основной тип анализа, позволяющий определить параметры инфраструктуры для поддержки служб. Данные журналов отдельных служб помогают прогнозировать производительность всей системы. Спрос и предложение в среде, объединяющей несколько предприятий, зависят от того, в какой степени стороны доверяют друг другу. «Доверие к другим» – один из критериев, используемых для присвоения репутации (свидетельской репутации [18]) общедоступным службам. Если компания X знает, что некоторая служба используется компанией Y, которой доверяет компания X, или была положительно оценена ею, репутация этой службы с точки зрения X возрастет. С этим связана проблема появления отклонений положительных оценок, несправедливых оценок и варьирования качества оценок [19]. Достаточность описаний WSDL для эффективного поиска служб с целью компоновкиСлужбы используются повторно не только клиентскими приложениями, но и другими службами внутри компоновки служб. Компоновка служб предоставляет более крупномодульную функциональность и точнее соответствует потребностям бизнеса. Одна из проблем при поиске службы (полезной в рамках композиции служб) – это необходимость проверки того, что все используемые службы способны «общаться» друг с другом, то есть проверка протокола, используемого для обмена сообщениями между ними, на совместимость. Основное требование к совместимости – отсутствие взаимных блокировок. Кроме этого, необходима совместимость синтаксиса и семантики сообщений. На рисунке 5 показан типичный пример несовместимости на уровне протокола между двумя сторонами. На рисунке Покупатель предлагает службу купить Товар, а Продавец предлагает службу продать Товар. Рисунок 5. Пример несовместимости на уровне протокола (щелкните рисунок, чтобы просмотреть увеличенное изображение)Для автоматизации гипотетического процесса продаж протоколы обмена сообщениями между службами купить Товар и продать Товар должны быть совместимы. Однако на рисунке 5 показано, что Продавец ожидает оплаты до отправки товара, а Покупатель ожидает, что товар будет отправлен до того, как пройдет оплата. Когда количество служб, предлагаемых и рекламируемых в репозиториях, растет, увеличивается вероятность того, что потребность в новой службе будет удовлетворена путем компоновки существующих. Однако может потребоваться посредничество на уровне протоколов. Конфликты на уровне сообщений и (или) сеансов связи до некоторой степени могут быть разрешены компонентом-посредником [20], [21]. Однако подтверждение совместимости служб и разрешение проблем на уровне поведения является дорогостоящей операцией, поскольку включает исследование возможных состояний служб во время взаимодействия. Для повышения уровня повторного использования в подобных ситуациях требуются эффективные механизмы поиска совместимых служб. Например, вместо прямой публикации поведения службы в репозитории, ее поставщик может опубликовать «кратко сформулированное описание» ожидаемого поведения служб, совместимых с данной (под совместимостью понимается отсутствие взаимоблокировок). «Кратко сформулированное описание» называется «правилами работы» [22] и разрешает скрывать детали реализации, раскрывая при этом достаточный объем информации для поиска совместимых партнеров. Проверка возможности компоновки службы с другими службами сводится к проверке того, является ли основанное на графах представление потенциального партнера подграфом «правил работы». Это менее дорогостоящая операция, чем обзор всех возможных состояний служб. ЗаключениеЧтобы повысить уровень повторного использования служб в масштабах предприятия, архитекторы должны определить стратегию публикации и предоставления средств для доступа к информации о службах. Базовым элементом для достижения этой цели является реестр корпоративных служб. Информация о службах может быть организована в виде реестра, причем его базовую функциональность можно расширять, например, добавлять возможности по управлению версиями и зависимостями служб, применению политик времени выполнения. В этой статье мы предоставили некоторые рекомендации по разработке расширенного реестра служб, способствующего повторному использованию корпоративных служб. Мы также обсудили некоторые открытые вопросы, которые имеются в отрасли и академических кругах и касаются проектирования и реализации реестров служб, и связанные с ними аспекты, необходимые для описания служб и организации информации о них. Ресурсы
Об авторахХуан Пабло Гарсия-Гонсалес – ведущий разработчик ПО и главный архитектор компании DATCO Chile S.A. Принимал участие во многих проектах по разработке ПО, в том числе решений, основанных на службах. Помимо работ над постоянными проектами, он со своей командой занимается созданием инновационных мобильных решений для банковской сферы, основанных на службах. Вероника Гаситуа-Декар– аспирант-исследователь факультета вычислительной техники Городского университета Дублина и Ирландского центра исследований в области разработки ПО (Irish Software Engineering Research Centre). Основным предметом ее исследований является разработка инструментов и методов проектирования архитектур служб, основанных на процессах. Ранее она работала ИТ-архитектором в крупной горнодобывающей компании. Д-р. Клаус Паль – старший преподаватель факультета вычислительной техники Городского университета Дублина, где он возглавляет группу по разработке ПО и систем. Он также работает в Ирландском центре исследований в области разработки ПО и центре нового поколения локализации (Centre for Next Generation Location, CNGL). |