10.3.7.2. Основы SOA
Сервис-ориентированная архитектура (SOA) представляет собой подход к организации взаимодействия между разнородными компьютерными системами, в частности к получению и предоставлению данных.
Ниже рассматриваются некоторые ключевые термины и понятия, знание которых поможет BPM-профессионалу со стороны бизнеса разговаривать с IТ-специалистами. Ключевые понятия SOA: сервис, интерфейс, протокол, поставщик, потребитель, запрос, ответ[210].
Сервисом называется программный модуль, включающий одну или несколько логически связанных функций (в случае веб-сервиса они называются методами), например получение суммы остатка на банковском счете и распоряжение на перевод денежных средств со счета. В рамках SOA система, предоставляющая свои ресурсы для внешнего мира, называется поставщиком сервиса, а система, обращающаяся к ресурсам другой системы, – потребителем сервиса.
Взаимодействие между поставщиком и потребителем обычно осуществляется через веб-сервисы (хотя теоретически ставить знак равенства между SOA и веб-сервисами неправильно, так как SOA может реализовываться и другими способами).
Вызов веб-сервиса реализуется следующим образом: программный код на стороне потребителя сервиса «упаковывает» входные данные (например, номер счета) в XML-документ и соединяется по сети с потребителем сервиса. Это делается примерно так же, как интернет-браузер соединяется с веб-сайтом, и с использованием схожих механизмов – в частности, потребитель задает адрес поставщика сервиса в Интернете или во внутренней сети предприятия. Получив запрос, программный код поставщика сервиса его «распаковывает», извлекая данные, и выполняет действия, заказанные потребителем. Результат (например, сумма остатка по счету) снова упаковывается в XML и также по сети отправляется обратно поставщику – опять-таки примерно так же, как веб-сайт отправляет веб-страницу браузеру. Обычно вызов веб-сервиса осуществляется по тому же протоколу HTTP, по которому браузер обращается к веб-сайту, но в принципе могут использоваться и другие протоколы, в частности электронная почта.
Относительную независимость (так называемую слабую связанность) поставщика и потребителя обеспечивает то, что им не требуется знать о способе обработки на другой стороне. Все, что нужно для вызова сервиса, – это спецификация его интерфейса, представляющего собой своего рода «контракт», которому стороны обязаны следовать в ходе взаимодействия.
В случае веб-сервиса для спецификации интерфейса используется специальный язык описания веб-сервисов (WSDL)[211]. Спецификация WSDL содержит адрес поставщика сервиса в Интернете, перечень функций (методов), формат запроса и ответа и поддерживаемые поставщиком протоколы. Этой информации потребителю сервиса достаточно, чтобы вызвать поставщика и получить от него требуемый результат.
Сервисы SOA являются слабосвязанными в том смысле, что и поставщик, и потребитель сервиса могут работать независимо, быть размещены на разных серверах и реализованы на разных языка программирования.