В настоящее время бурными темпами идет процесс усложнения разрабатываемого программного обеспечения. Современные приложения уже не являются монолитными ядрами, работающими на крупной компьютерной платформе, а представляют собой набор динамически изменяемых модулей. Сегодня большинство приложений создаются командами разработчиков на основе нескольких различных языков программирования, с применением множества данных, которые чаще всего поступают «онлайн» из нескольких, как правило, географически распределенных источников. В итоге возникает потребность в создании такого стиля разработки приложений, в основе которого будут программные службы (software services). Такой стиль позволит программистам не начинать работу с нуля, а создавать новые приложения, используя уже готовые службы. Между службами существует определенная иерархия: служба которая обрабатывает сложный запрос, разбивает его на более простые, и передает уже их в другие службы. При этом образуются ассоциативные связи.
Изначально распределенные системы строились как естественное расширение тех методов, которые применялись для традиционных архитектур с последовательным выполнением операций, что привело к использованию модели распределенных объектов. Данная модель оказалась неадекватна так как она плохо масштабировалась - распределенные объекты были слишком сильно связаны друг с другом, а объектные технологии были слишком сложны. В результате на сегодняшний момент объектно-ориентированный подход был заменен на «сервисно - ориентированный». На смену объектам пришли «сервисы», которые взаимодействуют посредством асинхронных «сообщений» - заменив прежний механизм взаимодействия объектов в режиме «запрос-ответ». Таким образом, распределенные системы стали слабо связанными, их масштабируемость улучшилась а накладные расходы на взаимодействие снизились [1].
На сегодняшний момент наиболее адекватным средством построения распределенных систем с высокой масштабируемостью и реактивностью являются Web-сервисы. которые, в свою очередь, используют протоколы и стандарты Интернет.
В течение последних нескольких лет возрос интерес разработчиков и пользователей к концепции «сервисно-ориентированный компьютинг» (Service Oriented Computing – SOC) и «сервисно-ориентированная архитектура» (Service Oriented Architecture – SOA). При этом SOA - это не рассматривается как технология, а понимается как способ проектирования и организации информационной архитектуры и бизнес-функциональности [2,3].
Определим ключевые термины при рассмотрении термина «сервисно-ориентированная архитектура»:
Архитектура – это формальное описание системы, определяющее еѐ цели, функции, внешне видимые свойства, и интерфейсы. Она также включает описание отношений и внутренних компонентов системы, принципы которые лежат в основе управления ее дизайном, функционированием и последующей эволюцией.
Сервис (служба) – программный компонент, к которому можно удалѐнно обратиться посредством компьютерной сети, и предоставляющая некоторые функциональные возможности запрашивающей стороне.
В общем виде в структуре SOA предполагается наличие трех основных участников: поставщика сервиса, потребителя сервиса и реестра сервисов. Взаимодействие участников происходит по схеме: поставщик сервиса регистрирует свои сервисы в реестре, а потребитель обращается к реестру с запросом.
При внедрении SOA на начальном этапе ставятся следующие цели:
- сокращение времени адаптации сложных информационных систем к постоянно изменяющимся бизнес-процессам компании;
- снижение стоимости владения ИТ (Total Cost of Ownership, TCO) в масштабе времени — за счет сокращения затрат на проектирование, внедрение, документирование, внесение изменений и т. п.;
- систематизация компонентов ИТ-архитектуры и повышение степени интегрированности информационных систем компании.
Сегодня центральное место в SOA занимают Web-сервисы. Представители ведущих компаний разработчиков отмечают, что использование XML и Web-сервисов при работе с SOA значительно повышает их эффективность.
Открытые стандарты, которые описывают XML и Web-сервисы, позволяют применять SOA ко всем технологиям и приложениям, установленным в компании. Web-сервисы базируются на распространенных и открытых протоколах: HTTP, XML, UDDI, WSDL и SOAP. Данные стандарты реализуют и поддерживают основные требования SOA - во-первых, сервис должен поддаваться динамическому обнаружению и вызову (UDDI, WSDL и SOAP), во-вторых, должен использоваться независящий от платформы интерфейс (XML). Наконец, HTTP обеспечивает функциональную совместимость. Сегодня Web-сервисы рассматриваются разработчиками как эффективный инструмент для интеграции и взаимодействия процессов, выполняемых в различных компаниях [4].
SOA поддерживается языком WSDL (Web Services Description Language). В данном языке описание сервисов делится на интерфейс и оболочку. Интерфейс описывает, что должен содержать запрос, а оболочка определяет протоколы транспорта и данных.
Идеология SOA предлагает революционное изменение способа проектирования информационных систем, влияющее не только на архитектуру бизнес-процессов, но и на архитектуру предприятия в целом. Однако попытка внедрить SOA в неготовой к этому организации грозит неминуемым провалом и лишь дискредитирует саму идею.