18.09.2019

Отдел предприятия как сервис soa. Пример реализации SOA Governance на основе Oracle Fusion Middleware и системы управления архитектурой предприятия Alfabet planningIT. Разработка и реализация - ввод модели управления в действие


С помощью SOA реализуются три аспекта ИТ-сервисов, каждый из которых способствует получению максимальной отдачи от ИТ в бизнесе:

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

Мировой рынок SOA

Российский рынок SOA

Развитие SOA

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

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

Еще недавно мы пользовались традиционными веб-ресурсами, не предполагая, что в этом плане можно что-либо кардинально поменять. Оказалось – можно, и появился веб-два-ноль. Тренд оказался настолько удачным и привлекательным, что моментально был взят на вооружение маркетологами. Ярлык 2.0 появился на многих программных решениях и в большинстве случаев его использование весьма спорно. Такой всеобщей тенденции не удалось избежать и сервисно-ориентированной архитектуре. Читать статью "SOA 2.0 "

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

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

Как известно, повторное использование программного кода упрощает разработку больших информационных систем. До недавнего времени с этой целью традиционно применялся объектно-ориентированный подход, подразумевающий жёсткое объединение компонентов и объектов приложения в одно целое. В парадигме ООП от разработчика требуется знание прикладного программного интерфейса, в котором объединены атрибуты и методы, сообща реализующие необходимый функционал. Но поскольку объектные системы обычно создаются на основе какого-то одного языка программирования (Delphi , C Яык программирования++ , C Яык программирования# , Java и др.) и фиксированных механизмов обмена информацией между объектами и модулями информационной системы, то и в ООП сохраняются все зависимости и ограничения. Такой подход удобен не всегда - в частности, он не позволяет оперативно реагировать на изменение ситуации и, к примеру, проектировать новомодные системы, опирающиеся на концепцию «ресурсы по требованию». Кроме того, для модификации объектных систем нередко приходится переписывать коды связанных объектов и методов.

Cвести эти ограничения к минимуму позволяет технология SOA, которая многими уже признана как революция в технологии программирования.

Аналитики о сервисно-ориентированной архитектуре

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

Архитектурные особенности SOA

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

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

Архитектура веб-сервисов также является сервисно-ориентированной. Более того, веб-сервисы - это суть SOA c двумя дополнительными ограничениями: интерфейсы базируются на интернет-протоколах (HTTP , FTP , SMTP Simple Mail Transfer Protocol - Простой протокол передачи почты , TCP), а все сообщения описываются в формате XML . Детальные описания стандарта веб-сервисов и спецификаций SOA приводятся на сайтах консорциума W3C и организации OASIS .

Практические аспекты применения SOA

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

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

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

Вот шесть механизмов, с помощью которых поддерживается SOA-политика:

  • Операционная модель жизненного цикла SOA
  • Организация SOA
  • SOA-процесс
  • Портфель активов для сервисной интеграции в SOA
  • Инструментарий SOA
  • SOA-технологии

Эти механизмы используются обоими подходами к разработке и управлению SOA. Первый подход – это управление SOA по типу «сверху вниз». Он подразумевает, что управление по своей сути является стратегическим и начинается с модели и определённых проектов. Продвигаясь вниз, «стратегическое управление» определяет людей, процессы, сервисы, инструменты и технологии, которые будут привлекаться для поддержки корпоративного SOA-проекта. Второй подход – «снизу вверх» - соответственно подразумевает «тактическое управление», которое, наоборот, строит SOA-проект на основе создаваемых технологий, инструментов и сервисов. Большинство предприятий идет по пути «снизу вверх», начиная с конкретных сервис-ориентированных шагов, направленных на определённые предметные области. Очень редко встречаются организации, в которых создание стратегии первично по отношению к созданию необходимых отделов и бизнес-подразделений, первоначальных SOA-технологий и инструментария. Такой подход в целом только усложняет процесс налаживания управления SOA.

20 ответов

Маленький тизер:

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

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

    SOA - новый значок для некоторых очень старых идей:

      Разделите свой код на повторно используемые модули.

      Инкапсулируйте в модуле любое дизайнерское решение, которое может измениться.

      Создайте свои модули таким образом, чтобы их можно было комбинировать различными способами (иногда называемыми "семейством" или "продуктовой линейкой").

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

    Что нового в SOA

      Вы делаете это в сети.

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

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

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

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

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

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

      Надеюсь, это дало по крайней мере кому-то лучшую картину SOA.

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

      Как вы это делаете? Ну, сначала вы определите роли и интерфейс - повар 1 сделает салат, повар 2 сделает суп, повар 3 сделает стейк и т.д. Затем вы разместите блюда, хорошо организованные на столе (так это интерфейсы) и сказать: "Все, пожалуйста, поместите свое творение в свои назначенные блюда. Не заботьтесь ни о ком другом".

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

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

      Одна из самых успешных реализаций SOA была на Amazon. Из-за их дизайна они могут повторно упаковать всю свою инфраструктуру и продать ее как Amazon Web Service.

      * Это только один аспект SOA.

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

      IMHO, SOA имеет смысл только на уровне предприятия и ничего не значит для одного приложения.

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

        Аналогичная функция была реализована несколько раз

        Данные (например, данные клиента или сотрудника) должны быть разделены между несколько приложений

        Приложения были децентрализованными.

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

        Не нужно переопределять подобные функции снова и снова (например, предоставлять услуги клиента или сотрудника)

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

      • Развитие, ориентированное на предприятие усилие.

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

      Это 1000-футовый вид SOA. Однако это не останавливается. Существуют и другие концепции, дополняющие SOA, такие как организация бизнес-процессов (BPM), корпоративная шина обслуживания (ESB), комплексная обработка событий (CEP) и т.д. Они решают проблему ИТ/бизнес-ориентирования , что заключается в том, как ИТ-специалисты смогут эффективно поддерживать бизнес.

      SOA - это аббревиатура сервис-ориентированной архитектуры.

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

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

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

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

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

      Таким образом, вы определяете протокол, который вы будете использовать для взаимодействия (скажем, это могут быть веб-службы SOAP), и пусть ваша "система-то-то-дело-работа-работа" взаимодействует с небольшими службами для достижения вашего "большой цели".

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

      Итак, вы покупаете Oracle SOA, а Oracle становится боссом всех ваших частей. Все остальные игроки должны работать с SOA через службу (веб-сервис или что-то еще). Монолит Oracle заботится обо всем (монолит не подразумевается уничижительным). О да, у вас есть ASP.NET MVC спереди или что-то еще.

      главное - перемещать вещи в систему и из нее без какого-либо воздействия и поддерживать поставщика Oracle SOA, Microsoft WCF, как мозги всего этого. все, что нравится oop/ood, жидкость, вещи, которые движутся и выходят без какого-либо воздействия, даже человеческие услуги, а не только компьютеры.

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

      из блога ittoolbox.

      Ниже описываются сходства и отличия от прошлых методов проектирования:

      SOA и структурированное программирование o Сходства: большинство похоже на вызовы подпрограмм, где передаются параметры, а функция функции абстрагируется от вызывающего абонента - например, CICS и выполнить и зарезервированное слово COBOL CALL. Копировальные книги используются для определения структуры данных, которая обычно определяется как XML-схема для служб. o Различия: SOA слабо взаимосвязана, что означает, что изменения в сервисе оказывают меньшее влияние на потребителя ("вызывающая" программа), а службы взаимодействуют между языками и платформами.

      SOA против OOA/OOD o Сходства: инкапсуляция, абстракция и определенные интерфейсы o Различия: SOA слабо связан с иерархией классов или наследованием, абстракции низкого уровня - уровень класса и бизнес-сервис

      SOA и устаревшая разработка на основе компонентов (CBD) - например, CORBA, DCOM, EJB o Сходства: Повторное использование через компоненты сборки, Интерфейсы, Удаленные вызовы o Различия: широкое внедрение стандартов, XML-схем и маршализированных объектов, сервис-оркестровка, проектирование для повторного использования проще, услуги ориентированы на бизнес и ИТ-ориентированные, бизнес-услуги являются конечно-крупными (широкими по охвату)

      SOA (для интеграции) по сравнению с интеграцией корпоративных приложений (EAI) o Сходства: лучшие практики (четко определенные интерфейсы, стандартизованные схемы, управляемая событиями архитектура), многоразовые интерфейсы, общие схемы o Различия: стандарты, принятие и улучшенные инструменты

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

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

      Уже несколько лет в России, как и во всем мире, обсуждаются вопросы, связанные с применением принципов сервис-ориентированной архитектуры (Service Oriented Architecture, SOA). Многие производители информационных систем уже заявили о поддержке принципов SOA, но реализация этих принципов на практике пока ограничивается единичными случаями. Мы рассмотрим предпосылки появления SOA и основные требования, которые должна выполнить компания, чтобы успешно применять концепцию SOA в своей практике.

      «Проблема в том, что в аббревиатуре SOA люди больше обращают внимание на «service oriented», нежели на «architecture». Однако именно архитектура и дисциплина могут помочь SOA принести реальный результат».

      Джеймс Гавернор (James Governor), ведущий аналитик, компания Redmonk

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

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

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

      Принципы SOA

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

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

      Аналогичная ситуация складывается сейчас с информационными решениями. Многие уже поняли на своем опыте, что монолитные системы (ERP, CRM, SCM и т. д.) обладают двумя врожденными пороками: ограниченной гибкостью (не всегда позволяют внести требуемые изменения в необходимые сроки) и высокой стоимостью владения и внесения изменений. Эти два фактора критичны для современных компаний, работающих в высококонкурентном и динамичном мире, что заставляет их уделять пристальное внимание оптимизации в данной области.

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

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

      Оценив сложившуюся маркетинговую ситуацию и потенциал SOA для бизнеса, ведущие поставщики информационных систем поспешили заявить о своей готовности к SOA. Не отставали здесь ни пресса, ни аналитики. Если вспомнить начало кампании в 2005 г., то все единодушно говорили о большом потенциале SOA, и как следствие в 2006-2007 гг. было начато множество пилотных проектов SOA. Затем появилась информация о первых результатах, первых трудностях и неудачах. Темпы развития рынка SOA оказались не столь высоки, как ожидалось. По данным аналитиков, 90% компаний, запустивших пилотные проекты, завязли в них.

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

      Цели и средства внедрения SOA

      Изначально при внедрении SOA ставятся следующие цели:

      • сокращение времени адаптации сложных информационных систем к постоянно изменяющимся бизнес-процессам компании;
      • снижение стоимости владения ИТ (Total Cost of Ownership, TCO) в масштабе времени — за счет сокращения затрат на проектирование, внедрение, документирование, внесение изменений и т. п.;
      • систематизация компонентов ИТ-архитектуры и повышение степени интегрированности информационных систем компании.

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

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

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

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

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

      Условия успешного применения SOA

      Несмотря на то что все ведущие вендоры ИТ-мира вписали в свои маркетинговые материалы аббревиатуру SOA, а заказчики все чаще требуют от внедренцев, чтобы ИТ-решение у них строилось с использованием принципов SOA, ясные и понятные цели SOA очень часто не достигаются. Причина в первую очередь кроется в низком уровне бизнес-культуры и процессной зрелости компаний. Поскольку SOA, как мы уже говорили, базируется на идеологии BPM, трудно поверить в «кусочное» внедрение SOA в какой-либо компании, разве что в узкотехнологическом аспекте — применении технологии Web-сервисов. Это подтверждается и опытом первых проектов SOA — многие из них, зайдя в тупик из-за непрозрачности ИТ-архитектуры и непонимания общей картины ИТ-поддержки бизнеса, вызвали к жизни проекты документирования и управления архитектурой предприятия (Enterprise Architecture, EA). И наоборот — успешные проекты описания архитектуры предприятия дали жизнь SOA-проектам, поскольку стало очевидно, в каких областях идеология SOA применима и может дать наибольший эффект.

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

      Доходы будущих периодов

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

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

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

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

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

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

      • расширение, а не сужение, «зоопарка» информационных систем и приложений,
      • снижение надежности поддержки бизнеса;
      • повышение стоимости владения ИТ;
      • и в конечном счете — дискредитация идеологии SOA как таковой.

      Заключение

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

      Уроки первых проектов позволяют утверждать, что:

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

      Не следует ждать немедленного сокращения времени внедрения и экономии от SOA: это «доходы будущих периодов», базирующиеся на предварительно созданной SOA-инфраструктуре и репозитории сервисов. Но если мы не хотим «остаться за бортом» и рассчитываем получить стратегические бизнес-преимущества, этим надо заниматься уже сейчас — потому что к 2010 г., согласно прогнозу аналитиков Gartner Group, по меньшей мере 65% больших компаний переведут более 35% своего портфеля приложений на SOA.

      Андрей Коптелов , директор департамента развития и внедрения ИТ
      Виктор Голубев , директор департамента продвижения продуктов и услуг компания «IDS Scheer Россия и страны СНГ»

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

      Речь идет, прежде всего, о сервисной модели взаимодействия между приложениями общей системы в рамках так называемой сервис-ориентированной архитектуры ( 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 -сервисов на предприятии можно ожидать существенного сокращения сроков и затрат на интеграцию.

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

      Решение многих описанных выше задач, возникающих при создании современных Веб-приложений, теперь начинает возлагаться на Веб-сервисы – не зависящие от платформы, объектной модели и клиента программные компоненты, которые можно вызывать из клиентских Веб-приложений (а также из самих Веб-сервисов) через основанный на протоколе HTTP и языке XML протокол SOAP. Для описания Веб-сервисов используется XML-подобный язык WSDL, а для организации реестров Веб-сервисов, в которых разработчики и компании могут искать необходимые им сервисы, а также публиковать данные о своих сервисах – интерфейс UDDI.

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

      Сервис-ориентированная архитектура (SOA, service-oriented architecture) – модульный подход к разработке программного обеспечения, основанный на использовании сервисов (служб) со стандартизированными интерфейсами [21 ].

      OASIS (Организация по распространению открытых стандартов структурированной информации) определяет SOA следующим образом (OASIS Reference Model for Service Oriented Architecture V 1.0): Сервисно-ориентированная архитектура – это парадигма организации и использования распределенных информационных ресурсов таких как: приложения и данные, находящихся в сфере ответственности разных владельцев, для достижения желаемых результатов потребителем, которым может быть: конечный пользователь или другое приложение.

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

      Компоненты программы могут быть распределены по разным узлам сети, и предлагаются как независимые, слабо связанные, заменяемые сервисы-приложения. Программные комплексы, разработанные в соответствии с SOA, часто реализуются как набор веб-сервисов, интегрированных при помощи известных стандартных протоколов (SOAP, WSDL, и т. п.)

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

      SOA хорошо зарекомендовала себя для построения крупных корпоративных программных приложений. Целый ряд разработчиков и интеграторов предлагают инструменты и решения на основе SOA (например, платформы IBM WebSphere, Oracle/BEA Aqualogic, Microsoft Windows Communication Foundation, SAP NetWeaver, ИВК Юпитер, TIBCO, Diasoft).

      Основными целями применения SOA для крупных информационных систем, уровня предприятия, и выше являются :

        сокращение издержек при разработке приложений, за счет упорядочивания процесса разработки;

        расширение повторного использования кода;

        независимость от используемых платформ, инструментов, языков разработки;

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

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

      Принципы SOA:

        архитектура , как таковая, не привязана к какой-то определенной технологии;

        независимость организации системы от используемой вычислительной платформы (платформ);

        независимость организации системы от применяемых языков программирования;

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

        организация сервисов как слабосвязанных компонентов для построения систем.

      Архитектура не привязана к какой-то определенной технологии. Она может быть реализована с использованием широкого спектра технологий, включая такие технологии как REST, RPC, DCOM, CORBA или веб-сервисы. SOA может быть реализована, используя один из этих протоколов и, например, может использовать, дополнительно, механизм файловой системы, для обмена данными.

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

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

      Таким образом, системы, основанные на SOA, могут быть независимы от технологий разработки и платформ (таких как Java, .NET и т. д.). К примеру, сервисы, написанные на C#, работающие на платформах.Net и сервисы на Java, работающие на платформах Java EE, могут быть с одинаковым успехом вызваны общим составным приложением. Приложения, работающие на одних платформах, могут вызывать сервисы, работающие на других платформах, что облегчает повторное использование компонентов.

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

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