«Открытые системы» , № 06, 2004 316 прочтений
Как разобраться в SOA
Появление ориентированного на сервисы программного обеспечения часто называют очередной революцией в программной индустрии.
Появление ориентированного на сервисы программного обеспечения часто называют очередной революцией в программной индустрии. Разработчики постоянно наращивают возможности Web-сервисов, переходя от простого обмена сообщениями к полнофункциональным приложениям. На Web-сервисы возлагает большие надежды и английская компания Pennine Group, предлагающая свою платформу Software as a Service.

Многие полагают, что новые, ориентированные на сервисы подходы позволят решить серьезные проблемы, возникающие из-за недостаточной гибкости программных систем. Все большая ориентация на сервисы побудила нас проанализировать, упрощают или усложняют понимание программного обеспечения новые подходы — с учетом того, что именно понимание может обходиться дороже всего в программной инженерии [2].
Обсудим хронические проблемы, с которыми сталкиваются разработчики программ при работе с ориентированным на сервисы программным обеспечением. Затронем и вопросы, связанные с трудностями и ошибками при предоставлении сервисов.
Ориентация на сервисы
Модификация программного обеспечения по-прежнему остается весьма существенной проблемой для многих организаций, хотя новые методы разработки обещают сделать информационные системы более гибкими и упростить их совершенствование по мере изменения требований бизнеса. Как правило, разработчики тратят больше всего времени на то, чтобы разобраться в уже существующем программном обеспечении — желают ли они исправить в нем ошибки или расширить его функциональность. Под анализом программного обеспечения (software understanding) мы понимаем применение неких методик и процессов с целью разобраться в нем.
Платформа Software as a Service (SaaS) [1], предлагаемая как способ решения задач модификации программного обеспечения [3], автоматически обнаруживает специализированные программные сервисы, согласует условия приобретения их услуг, объединяет их в наборы, подключает, использует и отключает. По сути, никакую систему поддерживать и не нужно — она формируется как набор сервисов, отвечающих конкретным «сиюминутным» требованиям. SaaS включает в себя элементы аутсорсинга, т.е. обеспечения бизнес-функций по определенной цене при данном соглашении об уровне обслуживания, и предоставления приложений в аренду (application service providing, ASP). Однако SaaS выходит далеко за рамки этих двух подходов.
На первый взгляд, платформа SaaS выглядит полным аналогом ASP, однако она отличается специализацией предоставляемых услуг и размером сети их доставки. Подход SaaS предусматривает формирование набора специализированных, настроенных сервисов, а ASP — более общих, стандартизованных приложений. Кроме того, если сеть доставки арендуемых приложений, как правило, связывает одного клиента с одним поставщиком, то в SaaS предусматривается создание значительной сети поставщиков, объединяющей сервисы в большие по размеру наборы с тем, чтобы обеспечить требуемую функциональность.
По-видимому, оправдает себя механизм так называемой микрооплаты (micropayment): пользователи смогут платить только за те услуги, которые им нужны, и обращаться к ним, лишь когда они требуются. При этом расценки будут отражать соотношение спроса и предложения, сложившееся на рынке.
Существующая технология Web-сервисов обеспечит поддержку некоторых из низкоуровневых аспектов подобного представления. В свою очередь, новые подходы, касающиеся определения потоков работ и языков композиции наборов сервисов, позволят поддерживать элементы более высокого уровня. Тем не менее, еще предстоит решить многие проблемы, например, проблемы согласования условий получения услуг и установления доверительных отношений с конкретным сервисом или поставщиком.
Любая цепочка доставки услуг зависит от наличия доверительных отношений между сторонами. Если они только начинают формироваться, отсутствие доверия компенсируется условиями контракта и возмещения ущерба. Если организации сотрудничают давно и доверительные отношения между ними уже установлены, то новые контракты согласовывать намного проще. Поскольку такие вопросы возникают и в традиционном аутсорсинге, вполне резонно предположить, что они проявятся и в сервис-ориентированной архитектуре.
Установить доверительные отношения в рамках автоматизированного предоставления услуг, которое предлагает SaaS, намного сложнее. Поскольку способы ведения переговоров изначально ориентированы на человека и не сводятся только к цифрам, потребуются дальнейшие исследования методов автоматического согласования условий — прежде чем они станут настолько совершенными, что их можно будет использовать в повседневной практике бизнеса. Кроме того, любая схема гарантий и компенсаций должна иметь исковую силу, что создает еще одно препятствие к реализации глобального автоматизированного решения. Выбор правовой схемы, в рамках которой будут оформляться контракты, может обернуться сложными и очень ответственными задачами.
Опыт эксплуатации системы и взаимодействия потребителя с конкретным провайдером даст много полезной информации для последующих переговоров о предоставлении услуг. Агент, ведущий переговоры (например, автоматизированный брокер), может учитывать такие показатели, как результаты сравнения обещанного сервисом и реального времени обработки, уровень удовлетворенности пользователей или цены, и на основе этих данных формировать переговорную стратегию, обновлять свое представление о провайдерах и их предложениях. А поскольку организация должна доверять агенту, ведущему переговоры от ее имени, функциональность, скорее всего, останется ее прерогативой — только в этом случае она сможет осуществлять необходимый контроль.
Подобные проблемы, связанные с SaaS, возникают при передаче другой организации выполнения тех или иных функций по контракту [1, 3, 4]. Автоматизация, вероятно, еще усложнит этот процесс, но найти приемлемые решения все же возможно. Так, сегментация рынка наряду с развитием национальных законодательств будут способствовать формированию адекватных правовых схем.
Другими словами, для успешной реализации подхода SaaS потребуются новые бизнес-модели и новые технологии. Внедрение такого подхода — процесс не одномоментный. Компании оформляют свои предложения как сервисы и постепенно разбивают их на компоненты по мере того, как появляются новые возможности для обращения к дополнительной функциональности как внутри компаний, так и за их пределами. Скажем, General Motors приняла подобный подход применительно к организации производства по заказам [5].
Внутри компании, благодаря SaaS, можно увеличить гибкость и адаптивность информационных систем. Эта разновидность сервисного подхода, скорее всего, будет развиваться интенсивнее, поскольку в ней проблемы автоматического согласования контрактов отходят на второй план. Вне компании, прибегая к SaaS, можно извлечь дополнительный доход от имеющегося программного обеспечения и быстро получить новое, не обременяя себя проблемами его обслуживания и поддержки; компания получает возможность увеличить потенциальный возврат от инвестиций в программные продукты и снизить риск перехода на новые решения.
С SaaS связаны следующие основные концепции:
- организация открытого рынка сервисов;
- динамическое предоставление программного обеспечения в ответ на меняющиеся требования;
- возможность одноразового использования программного обеспечения с последующим его отключением;
- создание сети доставки услуг, в которой провайдеры могут заключать субконтракты на предоставление этих услуг;
- обеспечение прозрачности для потребителей программного обеспечения.
Сценарий SaaS
Чтобы проиллюстрировать проблемы, с которым сталкиваются при анализе программ в мире SaaS, рассмотрим некую вымышленную крупную компанию Bizness plc, ведущую свои операции в нескольких странах. В силу того, что она работает на международном рынке, сотрудники компании должны готовить квартальные отчеты на нескольких языках [4]. Bizness plc имеет собственный ИТ-департамент.
Джон, менеджер Bizness plc, составил свой последний квартальный отчет на английском языке и хочет воспользоваться автоматическим переводом. Он обращается к службе переводов, чтобы получить текст на французском, немецком, итальянском и испанском языках. Автоматизированный брокер ищет подходящий набор сервисов, соответствующий запросу Джона (описание этого набора, однако, не связывает запрос с реальными сервисами). Сразу после получения запроса брокер приступает к поиску организаций, которые предлагают соответствующие услуги, согласовывает условия предоставления этих услуг, следуя правилам ведения переговоров, установленных в Bizness plc, и формирует набор связанных контрактом сервисов для Джона.
|
| Цепочка доставки готовит ответ на запрос Джона |
На рисунке показана сформированная сеть доставки. Джону не нужно знать, какие компании предоставляют заказанные услуги: он взаимодействует только со своим автоматизированным брокером. В свою очередь, брокер может взаимодействовать только с теми поставщиками, с которыми был заключен прямой контракт. Как видно из рисунка, запрос Джона будут выполнять поставщики F, G, I и S. При этом G и S не имеют субконтрактов и всю работу делают сами. Провайдеры F и I заключили субконтракты на получение грамматической и словарной информации с провайдерами FG, ID и IG. Тем не менее, Джон о них ничего не знает — и знать не должен.
Джон передает свой документ предоставленному брокером сервису перевода. Получив результат, он обнаруживает, что перевод на итальянский язык отсутствует. Ему нужно выяснить, почему такое произошло и что следует изменить для выполнения текущей работы и всех последующих запросов к этому сервису.
Сначала Bizness plc требует объяснений от поставщика, результат работы которого не устроил заказчика. В автоматизированной среде один из многочисленных заранее определенных ответов служит для предоставления соответствующей информации или инициирует необходимые действия. Установить, насколько предложенные объяснения соответствуют истине, очень сложно — особенно, если для поставщика не предусмотрен серьезный штраф за невыполнение обязательств.
Если поставщик не предоставит объяснений, компания Bizness plc и ее поставщики в цепочке доставки могут предпринять юридические действия с целью заставить других провайдеров выполнить контракты. Однако подобные действия могут потребовать больших затрат времени и денег, чем изначально предусматривались для выполнения услуги и оправдывали ее использование (с учетом модели микрооплаты, предусмотренной в SaaS). Для контроля выполнения контракта в автоматизированной среде его участники могут воспользоваться услугами третьей стороны, которая осуществляет оплату (например, посредством условного депонирования). Она передает деньги подрядчикам только в том случае, если все стороны удовлетворены качеством предоставленных услуг. При необходимости окончательное разрешение конфликтов может осуществляться в арбитражном или административном суде.
Возможные решения
Существуют несколько возможных решений ряда проблем, с которыми сталкивается программный инженер при попытке разобраться в сервис-ориентированном программном обеспечении. Хотя некоторые из операций в рамках предоставления услуг носят исключительно технический характер, решения многих проблем, возникающих в процессе анализа программного обеспечения, к техническим отнести нельзя.
Проблема: разграничение знаний между организациями. Информация, которая необходима Алисе, находится в ведении провайдеров. В силу этого Алиса должна обговорить с провайдерами условия получения нужных ей сведений, учитывая, что провайдеры стремятся защищать свои активы. Формирование отраслевых сетей провайдеров позволит снизить уровень недоверия между организациями и упростить обмен информацией. Активное управление сетью доставки будет иметь весьма существенное значение для быстрого разрешения проблем. Организации могут решать этот вопрос и за счет использования технических средств, скажем, уже существующих соглашений об обмене технической информацией или подключаемых инструментов просмотра кода.
Проблема: частичная открытость сети доставки. Алиса может попытаться решить проблему путем переговоров с провайдерами, но не исключено и более технологичное решение. Речь идет о создании сервиса, который способен «видеть» всю сеть доставки и, возможно за плату, предоставит Алисе необходимую информацию (чтобы она узнала о существовании ID и IG). Плата станет компенсацией провайдерам, отказавшимся от конфиденциальности, и ее размер придется с ними согласовывать.
Проблема: анализ состояния программного обеспечения. Некоторые традиционные подходы к анализу распределенного программного обеспечения предусматривают получение информации о состоянии [8], которая поможет Алисе найти источник ошибки. Однако составить полную картину будет весьма затруднительно, поскольку сеть доставки открыта лишь частично, а обмен информацией между провайдерами ограничен из-за соображений конфиденциальности.
Проблема: неопределенность состава программного обеспечения. Неопределенность состава программного обеспечения, ориентированного на сервисы, объясняется его распределенным характером, который предполагает согласование и переговоры. Кроме того, предоставленное решение может иметь несколько уровней детализации. Контроль времени работы сервиса представляется самым многообещающим подходом, позволяющим получить максимально возможную информацию о сервисах и сети доставки. Благодаря такому контролю, Алиса может проследить работу сервиса до момента возникновения ошибки (при условии, что поставщики согласятся предоставить требуемую информацию). Это — вопрос платформы, на которой создается программное обеспечение. Управляемый контроль времени выполнения на уровне платформы позволит избавиться от многих трудностей, но потребует формирования атмосферы открытости и взаимного доверия между поставщиками и потребителями.
Проблема: неподходящий инструментарий. Из-за специфики создания сервис-ориентированного программного обеспечения традиционные инструменты поддержки соглашений в данном случае работать не будут. Необходимы инструменты, которые автоматически соберут для Алисы максимум информации (возможно, в соответствии с принятыми до начала переговоров соглашениями между провайдерами). Благодаря этому Алиса сможет начать свою работу, имея самую полную картину. Однако процесс создания подобных инструментальных средств и механизмов их использования может оказаться весьма сложным и потребовать решения, в первую очередь, нетехнических проблем.
Роль Алисы
Роль Алисы отличается от роли инженера, занимающегося традиционной разработкой программ в своей компании, преимущественно тем, что Алиса должна не столько разбираться в низкоуровневых технических деталях программного обеспечения, сколько иметь опыт переговоров с клиентами и провайдерами. Она должна знать правила ведения бизнеса, касающиеся предоставления услуг, и ориентироваться в особенностях деятельности брокера Bizness plc. Ее задача, в первую очередь, заключается не в создании кода, а в получении и систематизации сведений, которые предоставляют провайдеры, работающие по контракту. При разработке новой системы участие Алисы (как консультанта) оправданно только на этапе определения требований к программному обеспечению. Хотя навыки создания кода, возможно, для нее не столь важны, ей, безусловно, необходимы определенные знания о разработке программного обеспечения для успешного анализа получаемой информации об ошибках.
Разобраться в сервис-ориентированном программном обеспечении непросто именно из-за его распределенной динамической природы. Гибкость этого подхода в отношении модификации программного обеспечения оборачивается новыми сложностями, многие из которых носят нетехнический характер. Изучение процессов, сопровождающих такой анализ, в терминах корректирующей и модифицирующей поддержки позволяет найти возможные решения этих проблем, в том числе, свести данные процессы к анализу сервисов, а не программ.
Литература
- K.H. Bennett et al. An Architectural Model for Service-Based Software with Ultra Rapid Evolution. Proc. IEEE Int'l Conf. Software Maintenance, IEEE CS Press, 2001.
- T.A. Standish. An Essay on Software Reuse. IEEE Trans. Software Eng., vol. SE-10, no. 5, Sept. 1984.
- K.H. Bennett et al. Prototype Implementations of an Architectural Model for Service-Based Flexible Software. Proc. 35th Hawaii Int'l Conf. System Sciences, IEEE CS Press, 2002.
- M. Turner, D. Budgen, P. Brereton. Turning Software into a Service. Computer, vol. 36, no. 10, Oct. 2003.
- Beyond the Hype of Web Services - What Is It and How Can It Help Enterprises Become Agile, EDS, www.eds.com/about_eds/homepage/ home_page_lehmann.shtml.
- A. Von Mayrhauser, A.M. Vans. Program Comprehension During Software Maintenance and Evolution. Computer, vol. 28, no. 8, Aug. 1995.
- V.T. Rajlich, K.H. Bennett. A Staged Model for the Software Life Cycle. Computer, vol. 33, no. 7, July 2000.
- J. Moe, D.A. Carr. Understanding Distributed Systems via Execution Trace Data. Proc. IEEE Int'l Workshop Program Comprehension, IEEE CS Press, 2001.
Николас Голд (n.e.gold@co.umist.ac.uk) — профессор факультета вычислительной математики Манчестерского института науки и технологии. К сфере его основных научных интересов относятся анализ, развитие и поддержка программного обеспечения. Клер Найт (claire.knight@volantis.com) — инженер-разработчик компании Volantis Systems. Специализируется на визуализации и анализе программ, Java, технологиях grid и Web-сервисах. Эндрю Мохан (a.mohan@postgrad.umist.ac.uk) — аспирант Манчестерского института науки и технологии. К области его основных научных интересов относятся поддержка и развитие программного обеспечения, анализ и качество программ. Малколм Манро (malcolm.munro@durham.ac.uk) — профессор факультета компьютерных наук университета Дурхама. К его основным интересам относятся визуализация, анализ, поддержка и модификация программного обеспечения. Занимается исследованиями в области Software as a Service, использованием байесовых сетей для тестирования и анализа программ.
Nicolas Gold, Andrew Mohan, Claire Knight, Malcolm Munro. Understanding Service-Oriented Software. IEEE Software, March-April 2004. IEEE Computer Society, 2004, All rights reserved. Reprinted with permission.
Технология, ориентированная на сервисы
Существует множество технологий, которые могут быть использованы для создания сервис-ориентированного программного обеспечения. Сюда относится все, начиная от комплексных приложений, продаваемых через провайдеров, и заканчивая конкретными компонентами или фрагментами кода. Консорциум W3C определяет сервис-ориентированную архитектуру (service-oriented architecture, SOA) как набор исполняемых компонентов, интерфейсы которых можно публиковать и находить с помощью автоматизированных средств. Web-сервис — это конкретный экземпляр компонента (или компонентов), имеющий открытый интерфейс (определенный и описанный на XML). Другие системы могут его находить и использовать, передавая сообщения, которые пересылаются с помощью Internet-протоколов.
В настоящее время термин «сервис-ориентированный» зачастую применяется к более традиционным технологиям DCOM и CORBA, а с недавнего времени — также и к платформам J2EE и .NET, и к Web-сервисам. Нет причин считать, что та или иная технология является отличительной особенностью именно SOA. Такие стандарты, как SOAP для Web-служб, позволяют гарантировать, что гетерогенность решений не создает каких-либо проблем.
Возможно и наслоение архитектур. Многие приложения J2EE способны взаимодействовать с унаследованными программными системами, до сих пор применяемыми в компании. С другой стороны, при обработке межкорпоративных транзакций с помощью Web-сервисов может частично использоваться приложение на базе J2EE, что избавляет стороны от необходимости в полном объеме развертывать технологию Java.
Контроль версий помогает гарантировать, что организации со временем смогут использовать различные версии сервисов, не испытывая проблем с совместимостью. Например, платформа .NET поддерживает версии сборок (наборов классов) в C#, которые затем могут задействоваться в коде с различными параметрами. Это позволяет указывать, какие из версий совместимы. Разные версии могут сосуществовать, причем конкретный экземпляр выбирается во время исполнения, и используется корректная сборка.
Возможность наслаивать архитектуры и поддерживать гетерогенность обеспечивает постепенный переход на решения, опирающиеся на структуру сервисов. Использование XML для определения и поддержки соглашений об уровне обслуживания и формирования наборов сервисов способствует постепенному изменению бизнес-процессов с целью представления их как части реализации подхода Software as a Service.








