Основные принципы soa
Многие отождествляют SOA c Web-сервисами или workflow-системами, но это не так. SOA — не набор технологий, а прежде всего процессно-ориентированная архитектура ИС. Можно определить SOA следующим образом: это архитектура приложений, построенная на основе формализованных бизнес-процессов, функции которых представлены в виде многократно используемых сервисов с прозрачными описанными интерфейсами.
В концепции SOA выделяются две стороны: бизнес-процессы и технические возможности — ИТ-сервисы. Понятие «сервис» трактуют по-разному — как некую функцию, программный компонент или типизированный процесс. Для каждой организации может быть свой уровень сервисов. Кроме того, интересы бизнеса отнюдь не идентичны интересам ИТ-служб: как правило, бизнес хочет, чтобы учитывались пожелания каждого ключевого пользователя, то есть множества разнообразных сервисов. Но ИТ-подразделению для минимизации затрат на управление сервисами необходима типизация процессов и выполняемых с помощью ИТ функций, то есть в его интересах — иметь минимальное число агрегированных сервисов. В результате между разнообразными требованиями ключевых пользователей от бизнеса и типовыми решениями в области процессов и ИТ-сервисов следует найти «золотую середину». Методология SOA как раз и предоставляет возможность стандартизации в той сфере, где ее катастрофически не хватает.
Одно из основных требований, возникающих при использовании SOA, — необходимость создания библиотеки типовых сервисов. Фактически при построении информационной системы на принципах SOA помимо описанного процесса нужно иметь перечень сервисов с подробным описанием входов и выходов. Тогда на этапе разработки к определенной функции будет подключаться определенный сервис из библиотеки, а в случае его отсутствия — определяться требования на его разработку. Здесь можно провести аналогию с библиотеками объектов, используемыми в программировании, только уровень абстракции в случае SOA выше.
Фактически сервис представляет собой результат выполнения части процесса (из области ИТ или бизнеса), поэтому в рамках проектирования архитектуры приложения на основе SOA необходимо определиться с уровнем типизируемого сервиса. Под сервисом верхнего уровня понимается ИТ-услуга, поставляемая бизнесу (например, корпоративная информационная система, автоматизирующая процесс сбыта), под сервисом нижнего уровня — автоматизированная операция, в рамках которой возникает определенный результат (скажем, получение данных о клиенте из CRM-системы). Наиболее эффективно типизацию осуществлять на более высоких уровнях сервиса, однако чем выше уровень типизации, тем больше изменений придётся вносить в сервис и тем сложнее будет удержать его в «элементарном» виде. С одной стороны, размер сервиса не должен сдерживать изменение процесса, с другой — он должен быть таким, чтобы им можно было свободно оперировать на уровне изменяемых бизнес-процессов.
Поэтому начинать желательно с самого элементарного уровня — выделять сервисы, сформированные на уровне функций бизнес-процессов, причем принципом их выделения будет выполнение одним исполнителем. В дальнейшем можно пытаться переходить на более высокий уровень типизации и вместе с сервисами типизировать части бизнес-процессов.
Итак, подводя итог, выделим основные принципы SOA:
Сервисы. Информационные системы компании представляются в виде набора независимых компонент, называемых сервисами, каждый из которых предоставляют доступ к своей функциональности через набор программных интерфейсов.
Повторное использование. После ввода в эксплуатацию каждый сервис может быть повторно использован для решения новых задач.
Единая система безопасности. Доступ к программным интерфейсам сервисов регулируется единой системой разграничения доступа.
Интеграция без программирования. Благодаря использованию специализированного инструментария обмен данными между приложениями может быть реализован без написания программного кода.
Открытые стандарты. Архитектура объединенной информационной системы компании основывается на открытых стандартах как прикладного, так и системного уровней.
Независимость от расположения. Широко применяются средства косвенной адресации сервисов, которые обеспечивают прозрачность физического расположения компонентов.
Управляемость. Для обеспечения управляемости, качества и надежности SOA-инфраструктуры может быть использована глобальная система мониторинга сервисов и контроля.