Тема SOA активно обсуждается участниками ИТ-рынка уже несколько лет, но за последний год она претерпела серьезное качественное изменение (по крайней мере, в нашей стране), перейдя из категории общеметодических рассуждений в стадию практического применения.
Одним из внешних проявлений этого стало то, что ИТ-поставщики, в течение двух предшествовавших лет активно убеждавшие клиентов в преимуществах SOА, заметно сбавили свой маркетинговый пыл, а тон в дискуссиях начали задавать заказчики, уже получившие определенный опыт в этом направлении.Как обычно бывает, действительность во многом отличается от первоначальной гипотезы, и это требует определенного переосмысления теоретических положений SOA с учетом уже полученных результатов использования. В чем же суть SOА и каковы ее реальные преимущества с точки зрения потребителей? В каких случаях предприятиям стоит делать ставку на нее? Как подойти к реализации SOA-стратегии на практике?
Что такое SOA?
SOA (Service Oriented Architecture) — это категория не технологическая, а методологическая. То есть это не набор программных продуктов, а архитектурный подход к созданию корпоративных информационных систем на основе композиции автономных функциональных модулей, представленных в виде ИТ-сервисов. Важно отметить, что речь идет преимущественно именно о системах в целом, а не об отдельных ИТ-проектах. Можно сказать и так: SOA подразумевает возможность реализации конкретных ИТ-проектов на базе широкого применения уже используемых в организациях технологий и продуктов, а также внешних готовых сервисов в интересах достижения быстрого эффекта с точки зрения бизнеса.
В то же время вполне уместно говорить об уровне пригодности тех или иных программных средств для создания SOA-систем. В целом же SOA в технологическом плане больше ассоциируется с решением задач интеграции приложений и управления бизнес-процессами в распределенных гетерогенных средах.
В чем новизна SOA?
До сих пор зачастую SOA ассоциируются исключительно с возможностью использования функциональных компонентов в виде веб-сервисов. Это слишком узкое понимание вопроса, поскольку для реализации SOA могут быть задействованы и другие технологии.
SOA можно рассматривать как альтернативу созданию информационных систем на базе монолитных решений от одного вендора. Но нужно подчеркнуть, что композитный подход к разработке систем и ранее широко применялся в ИТ-практике. В этом плане новизна SOA заключается в том, что в ней используются более высокоуровневые компоненты, которые в данном случае называются сервисами. При этом новый термин отражает качественное изменение содержания: если раньше компонент относился сугубо к технологической категории, то сервис ассоциируется с бизнес-функцией. Другими словами, владельцем ИТ-компонента обычно является ИТ-подразделение, а ИТ-сервиса — бизнес.
Более того, ключевое новшество SOA — даже не разработка ИТ-сервисов как таковых, а реализация возможности создания и модернизации на их основе новых бизнес-процессов. Сейчас можно уверенно констатировать, что само появление SOA в значительной мере вызвано тем, что бизнес широко использует процессную модель управления предприятием, и в целом SOA является отражением общей тенденции к усилению взаимосвязи ИТ и бизнеса.
Всем ли нужна SOA?
SOA — это лишь один из подходов к созданию корпоративных ИТ-систем. Его актуальность на современном этапе развития бизнеса и ИТ растет, но это совсем не значит, что данная архитектура подходит для всех компаний. В любом случае нужно понимать, что SOA — средство, а не цель. Более того, это не единственный вариант решения интеграционных задач.
SOA наиболее востребована на предприятиях с процессно-ориентированной моделью функционирования, там, где нужна высокая гибкость и скорость реакции бизнеса на внешние изменения. Можно констатировать, что SOA используют чаще всего сервисные организации, работающие с конечными пользователями, в секторах с высоким уровнем конкуренции (телеком, кредитно-финансовая сфера, страхование и т. д.). Очевидно, что SOA очень хорошо подходит для реализации ИТ-систем социального назначения, но интерес к этому подходу со стороны государственных структур пока не очень велик, возможно, из-за низкой конкуренции в данной сфере.
В то же время внедрение SOA подразумевает наличие у компании долгосрочной стратегии бизнес-развития и достаточно высокой стабильности выделяемых ИТ-сервисов. Именно по этой причине SOA пока не находит должного применения в малом и среднем бизнесе.
Участие бизнеса в реализации SOA
Как уже говорилось ранее, SOA сама по себе отражает повышение взаимосвязи ИТ и бизнеса и во многом использование этой архитектуры связано с необходимостью повышения скорости реакции ИТ на запросы бизнеса. В то же время, по мнению наших экспертов — представителей заказчиков, непосредственное участие бизнеса в реализации SOA следует свести к минимуму. Но при этом построение SOA должно быть явно обозначено в ИТ-стратегии предприятия, которую, в свою очередь, необходимо согласовать с его руководством. Скорее всего, требуется одобрение на высшем уровне и специальной ИТ-инфраструктуры (сервисной шины данных и пр.). Нужна четкая формулировка требований со стороны бизнеса, но обеспечение реализации бизнес-требований в SOA-архитектуре — это задача ИТ-подразделения.
Кто должен создавать ИТ-сервисы?
Реализация SOA изначально подразумевает решение интеграционных задач. И в этом плане важную роль играют выбор и внедрение базовой SOA-платформы. А вот вопрос о создании функциональных ИТ-сервисов остается сегодня открытым. Два-три года назад в теоретических рассуждениях о преимуществах SOA часто рисовалась идеальная картина, на которой бизнес-приложения были представлены в виде наборов сервисов. Однако жизнь показала, что поставщики прикладных решений совсем не спешат к осуществлению такого подхода в своих продуктах.
На практике получается, что создание сервисов выполняется в ходе реализации конкретных проектов — в частности, путем создания различного рода программных адаптеров (в том числе и с помощью технологий Web Services) к тому или иному функционалу готовых бизнес-приложений. Именно поэтому эффективность SOA-проектов обычно возрастает по мере увеличения их числа за счет применения уже созданных сервисов.
В то же время нужно отметить, что для использования тиражных бизнес-решений в варианте SOA недостаточно лишь наличия средств логического представления функционала в виде сервиса. Принципиально важным является обеспечение производительности и масштабируемости системы, что обычно подразумевает необходимость радикальной переработки прикладных продуктов для работы в условиях SOA.
Поддержка гетерогенных сред и внешних ИТ-сервисов
Появление SOA изначально подразумевало использование мультивендорных ландшафтов и гетерогенных сред и возможность применения внешних независимых ИТ-сервисов. Однако большинство экспертов считают, что говорить о полной интеграции решений от различных поставщиков не приходится и пока «мультивендорной» SOA-архитектуры не существует. Но при этом выражается надежда на то, что общие SOA-стандарты появятся на рынке в ближайшее время.
В минимальной степени сегодня применяются внешние ИТ-сервисы вследствие их фактического отсутствия на нашем рынке. Однако по мере роста популярности SOA можно ожидать появления подобных предложений на коммерческой основе от сервис-провайдеров, в том числе в рамках реализации модели SaaS (софт как сервис).
Как меняются взаимоотношения заказчика и исполнителя?
В этом вопросе нет единства мнений. Кто-то считает, что организация работ в SOA- и не-SOA-проектах принципиально не изменяется. Но все же чаще высказывается мнение, что роль и значимость ИТ-подразделения заказчика в SOA-проектах существенно повышаются. Ведь в традиционном варианте генеральным подрядчиком обычно является внешний интегратор, который отвечает за все, а ИТ-служба выполняет общий надзор за работой и принимает выполненный проект. В случае же SOA зачастую в проекте участвует несколько исполнителей и на ИТ-подразделение ложится ответственность за координацию их работ и целостность всего решения.
Хотя при этом нужно особо отметить важность в общей SOA-системе предприятия базовой интеграционной платформы, внедрение которой обычно выполняет квалифицированный интегратор.
В целом же чаще всего реализация SOA подразумевает активное использование внешних ресурсов и услуг. При этом SOA существенно увеличивает возможности маневра ресурсами в рамках проектов — например, позволяет разделять их на потоки разработки по отдельным сервисам, расширяет выбор среди поставщиков решений. В то же время довольно часто заказчики осуществляют SOA-проекты собственными силами с привлечением внешних консультантов. Но в этом случае речь, скорее, уже идет об аутстафинге (аренде персонала), а не аутсорсинге (услугах сторонних организаций).