SOA (сервис-ориентированная архитектура)

menu icon

SOA (сервис-ориентированная архитектура)

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

Что такое SOA (сервис-ориентированная архитектура)?

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

Каждый сервис SOA содержит интеграции кода и данных, необходимые для выполнения конкретной бизнес-функции, такой как проверка кредита клиента, вычисление ежемесячного взноса или обработка заявки на ипотеку. Интерфейсы сервисов являются слабо связанными, то есть они могут использоваться даже при небольших знаниях о том, как выполняется интеграция. Доступ к сервисам предоставляется с использованием стандартных сетевых протоколов, таких как SOAP (простой протокол доступа к объектам)/HTTP или JSON/HTTP, по которым отправляются запросы на чтение или изменение данных. Сервисы публикуются таким образом, что они позволяют разработчикам быстро находить их и повторно использовать для сборки новых приложений.

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

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

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

Что такое ESB?

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

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

Дополнительная информация о ESB приведена на веб-странице «Введение в ESB (сервисная шина предприятия)».

Преимущества SOA

SOA предлагает существенные преимущества по сравнению с предшествующими архитектурами:

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

Примеры SOA

Уже в 2010 году реализации SOA активно использовались передовыми компаниями практически в каждой отрасли. Например:

  • Компания Delaware Electric внедрила SOA для интеграции систем, которые раньше не взаимодействовали друг с другом. В результате компании удалось повысить эффективность разработки и остаться на плаву во время пятилетней заморозки тарифов на электроэнергию.
  • Cisco использовала SOA, чтобы согласовать процесс заказа всех продуктов по всем каналам. Для этого подразделениям, дочерним компания и бизнес-партнерам Cisco были предложены сервисы, с помощью которых они могли добавить процессы заказа на свои веб-сайты.
  • Страховая компания Independence Blue Cross (IBC) из Филадельфии внедрила SOA, чтобы предоставить заинтересованным лицам — агентам IBC по обслуживанию клиентов, больницам и пользователям веб-сайта IBC — единый источник достоверных данных о пациентах.

SOA и микросервисы

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

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

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

  • Гибкость и продуктивность работы разработчиков: используя микросервисы, разработчики могут встраивать новые технологии в одну часть приложения, не затрагивая при этом остальное приложение. Изменение, тестирование и развертывание отдельных компонентов можно выполнять независимо от других компонентов, сократив при этом итерационные циклы.
  • Масштабируемость: микросервисы позволяют получить максимальную отдачу от масштабируемости облачных сред — любой компонент можно масштабировать независимо от остальных компонентов, обеспечивая при этом максимально быстрое реагирование на изменения нагрузки и наиболее эффективное использование вычислительных ресурсов.
  • Устойчивость: и снова благодаря отделению сбой одного микросервиса никак не сказывается на работе других. Каждый микросервис может работать в соответствии с собственными требованиями к доступности, не ограничивая другие компоненты или приложение в целом.

Для подробного изучения различий между SOA и микросервисами, обратитесь к веб-странице «SOA и микросервисы: в чем разница?»

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

SOA и IBM Cloud

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

Сделайте следующий шаг:

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

Начните работать с учетной записью IBM Cloud уже сегодня.