SOA: что такое сервис-ориентированная архитектура, её плюсы и минусы

Разбираем, как устроена сервис-ориентированная архитектура: из каких компонентов состоит, какие задачи решает, чем отличается от микросервисов и как внедрить её в корпоративную среду без хаоса в интеграциях.

Краткий пересказ YandexGPT
  • SOA (сервис-ориентированная архитектура) — подход к проектированию программных систем, при котором приложение собирается из независимых сервисов с понятными интерфейсами и взаимодействует через стандартные протоколы.
  • SOA решает проблему сложных интеграций в IT-ландшафте крупных компаний, позволяя избежать зависимости каждой новой системы от всех существующих.
  • Типовая схема SOA-системы включает клиента, балансировщик нагрузки, API-шлюз, сервисы, базы данных и хранилища, а также систему мониторинга.
  • Преимущества SOA: переиспользование сервисов, слабая связанность, интеграция легаси-систем, независимое масштабирование сервисов, гибкость для бизнеса.
  • Недостатки SOA: сложность управления множеством API, требования к экспертизе интеграционного слоя, сложность мониторинга распределённой системы, задержки из-за сетевых вызовов, увеличенная поверхность атаки.
  • SOA отличается от микросервисной архитектуры масштабом сервисов, способом обмена данными, управлением данными, развёртыванием и управлением.
  • SOA подходит для интеграции множества существующих систем, а микросервисная архитектура — для быстрого развития новых продуктов с нуля.
  • Внедрение SOA в корпоративную среду включает аудит ландшафта, выделение сервисов и контрактов, выбор интеграционного слоя, пилотный проект и управление.
  • Принципы SOA лежат в основе микросервисов и API-first-подхода.
  • Возможно сочетание SOA и микросервисов в рамках одной компании: интеграционный контур строится по правилам SOA, а отдельные продукты — на основе микросервисов.

Yandex Scale 2026

24 сентября, Москва и онлайн.
Главная технологическая конференция
Yandex Cloud.

Хочу прийти!

Почему SOA до сих пор актуальна

В IT-ландшафте крупной компании легко насчитать десятки систем: учётные, CRM, биллинг, склад, мобильные приложения, аналитика. Если связывать их напрямую, каждая новая система тянет за собой интеграции со всеми существующими. Уже при десяти системах количество возможных связей приближается к полусотне, и любое изменение в одной из них рискует уронить соседние.

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

Хоронить подход рано. Да, термин SOA звучит реже, чем микросервисы, но сами принципы никуда не делись: на них строятся API-first-подход, корпоративные интеграционные платформы и та же микросервисная архитектура. В этом практическая ценность SOA: архитектура из независимых сервисов переживает смену технологий и модных терминов, а понимание её принципов помогает осознанно проектировать любую распределённую систему.

Что такое SOA

Сервис-ориентированная архитектура (Service-Oriented Architecture, SOA) — это подход к проектированию программных систем, при котором приложение собирается из независимых сервисов. В русскоязычных текстах встречается написание «СОА».

Что это значит на практике: каждый сервис реализует отдельную бизнес-функцию, доступен по стандартному протоколу и ничего не знает о внутреннем устройстве соседей. В обиходе подход называют короче — сервисная архитектура; это то же понятие.

Сервис-ориентированная архитектура — это парадигма организации и использования распределённых возможностей, которые могут находиться под управлением разных владельцев. Так определяет SOA стандарт Reference Model for Service Oriented Architecture — эталонная модель консорциума OASIS, принятая в 2006 году.

Ключевое слово здесь — «владельцы». SOA изначально проектировали для мира, где сервисы принадлежат разным командам, департаментам и даже компаниям. Отсюда упор на контракты, стандартизацию и интеграционный слой, который отличает сервисную архитектуру от простого набора приложений с API.

SOA — это не конкретная технология и не продукт, который можно купить и установить. Это архитектура, ориентированная на сервисы как на главный строительный блок: её принципы реализуют разными инструментами, от классических веб-сервисов на SOAP до современных REST-интерфейсов и gRPC.

Основные понятия SOA

Прежде чем разбирать принципы работы, нужно договориться о терминах. В сервис-ориентированной архитектуре их шесть.

Сервис — автономный программный компонент, который выполняет конкретную бизнес-функцию: проверяет остаток на счёте, рассчитывает стоимость доставки, отправляет уведомление и т. д. Сервис можно вызвать, не зная, как он устроен внутри.

Интерфейс — точка доступа к сервису. Она скрывает реализацию: потребителю не важно, на каком языке написан сервис и какая база данных за ним стоит.

Контракт — формальное описание интерфейса: какие операции доступны, что сервис принимает на вход, что возвращает и какие гарантии даёт. Для REST API контракт обычно описывают по стандарту OpenAPI, для SOAP-сервисом — в формате WSDL.

Сообщение — единица обмена данными между сервисами. В классической SOA сообщения передавали в XML, сегодня чаще используют JSON или бинарные форматы вроде Protocol Buffers в gRPC.

API (Application Programming Interface) — программный интерфейс, через который сервисы обмениваются запросами. В SOA API сервиса — публичная часть его контракта.

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

Принципы работы сервис-ориентированной архитектуры

Если коротко, SOA работает так: потребитель находит нужный сервис, читает его контракт и вызывает операции по стандартному протоколу, а интеграционный слой доставляет запросы и ответы. Устойчивой систему делают принципы SOA, сформулированные ещё в эталонной модели OASIS и развитые на практике.

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

Дальше — переиспользуемость: одна и та же проверка платёжных реквизитов работает и в мобильном приложении, и в личном кабинете, и во внутренней CRM.

Наконец, обнаруживаемость: сервисы регистрируются в общем каталоге, где их можно найти вместе с контрактами, а не выяснять устройство системы по переписке.

На практике обмен между сервисами устроен двумя способами.

Синхронный — потребитель отправляет запрос и ждёт ответа. Так работают запросы через REST API или gRPC — например, страница заказа запрашивает у сервиса цен актуальную стоимость. Единой точкой входа для таких вызовов служит API-шлюз. В Yandex Cloud эту роль выполняет Yandex API Gateway: шлюз описывается декларативной спецификацией по стандарту OpenAPI 3.0, умеет проверять авторизацию по JWT, ограничивать частоту запросов и раскатывать «канареечные» релизы API.

Асинхронный — отправитель кладёт сообщение в очередь и продолжает работу, а получатель забирает его, когда готов. Такой сценарий выручает при пиковых нагрузках и долгих операциях: заказ принят мгновенно, а сборка, оплата и уведомления обрабатываются в своём темпе. Для этого используют очереди сообщений, например Yandex Message Queue. Тип очереди выбирают под задачу: стандартные дают максимальную пропускную способность с доставкой «как минимум один раз», а FIFO гарантируют строгий порядок и однократную обработку.

Схема SOA

Типовая схема SOA-системы выглядит как путь запроса через несколько слоёв.

Клиент (браузер, мобильное приложение или внешняя система) обращается к платформе. Балансировщик нагрузки распределяет входящий трафик, API-шлюз проверяет права и направляет запрос нужному сервису.

Дальше сервисы выполняют бизнес-логику: часть операций проходит синхронно, а долгие задачи уходят в очередь сообщений, откуда их разбирают обработчики.

Результаты сохраняются в базах данных и хранилищах. Поверх всей цепочки работает мониторинг: он собирает метрики и логи каждого звена, иначе найти причину сбоя в распределённой системе почти невозможно.

Компоненты SOA-системы

За схемой стоят конкретные компоненты SOA. Исторически центральным была сервисная шина предприятия (Enterprise Service Bus, ESB) — посредник, который маршрутизирует сообщения, преобразует форматы и связывает несовместимые системы. Рядом с шиной работали реестр сервисов — каталог с контрактами и адресами, и оркестратор — механизм, который собирает из отдельных сервисов сквозные бизнес-процессы.

Сегодня тяжёлую ESB всё чаще заменяет связка более простых инструментов: API-шлюз берёт на себя маршрутизацию и безопасность синхронных вызовов, брокер сообщений — асинхронный обмен, а описания API в едином репозитории играют роль реестра. Логика при этом смещается из шины в сами сервисы: интеграционный слой остаётся тонким и предсказуемым.

Преимущества и недостатки SOA-архитектуры

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

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

Недостатки SOA

Переиспользование сервисов: одна бизнес-функция работает во всех каналах и продуктах

Сложность управления множеством API: версии, совместимость, документация

Слабая связанность: команды развивают сервисы независимо друг от друга

Интеграционный слой требует экспертизы и может стать узким местом

Интеграция легаси-систем: старые приложения оборачиваются в сервисы без переписывания

Мониторинг распределённой системы сложнее, чем монолита

Независимое масштабирование нагруженных сервисов

Сетевые вызовы добавляют задержки по сравнению с вызовами внутри монолита

Гибкость для бизнеса: новые продукты собираются из готовых сервисов

Безопасность: больше точек входа — шире поверхность атаки

Хорошая новость в том, что большую часть недостатков SOA сегодня исправляют готовыми инструментами. Управление API и защиту точек входа централизует API-шлюз, за метрики и алерты распределённой системы отвечает система наблюдаемости — например, Yandex Monium, а доступ к облачным ресурсам разграничивает Yandex Identity and Access Management. Сложность не исчезает, но перестаёт быть ручной работой.

Чем SOA отличается от микросервисной архитектуры

Микросервисная архитектура (MSA) выросла из SOA: архитектура микросервисов доводит её принципы до предела, поэтому сервисы становятся меньше, автономнее и избавляются от общей шины. Мартин Фаулер, один из авторов канонического описания микросервисов, прямо называет их вариантом сервис-ориентированного подхода. Поэтому корректнее говорить не о SOA против микросервисов, а о двух поколениях одной идеи.

Основные отличия SOA от MSA удобно свести в таблицу:

Что сравниваем

SOA

MSA

Масштаб сервиса

Крупные сервисы уровня бизнес-домена

Небольшие сервисы под одну функцию

Обмен данными

Через общую шину (ESB), часто SOAP и XML

Напрямую по HTTP/REST или gRPC, JSON

Данные

Допустимы общие базы и хранилища

Каждый сервис владеет своими данными

Развёртывание

Сервисы связаны общими релизами

Каждый сервис деплоится независимо

Управление

Централизованное, через интеграционный слой

Децентрализованное, на уровне команд

Типовая инфраструктура

Серверы приложений, ESB

Контейнеры и оркестраторы вроде Kubernetes®

Разница видна и в инфраструктуре. Микросервисы почти всегда живут в контейнерах под управлением оркестратора. Разворачивать и сопровождать такой кластер удобнее в управляемом сервисе — например, Yandex Managed Service for Kubernetes® берёт на себя работу мастера и следит за состоянием групп узлов, оставляя команде только сами приложения. Подробно о том, кому подходит микросервисный подход, мы рассказывали в статье микросервисной архитектуре.

Когда выбирать SOA, а когда — микросервисы

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

Микросервисная архитектура уместнее для нового продукта, который строится с нуля и должен быстро развиваться силами независимых команд. В англоязычных материалах эту дилемму называют «SOA vs microservices», но на практике подходы сочетают: корпоративный интеграционный контур живёт по правилам SOA, а внутри отдельных продуктов работают микросервисы.

SOA для бизнеса

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

Референсная SOA-система на Yandex Cloud выглядит так. Внешний трафик принимает Yandex Application Load Balancer, запросы к API проходят через API-шлюз с проверкой прав, сервисы работают в кластере Kubernetes, асинхронные задачи идут через очередь сообщений, данные лежат в управляемых базах, а метрики и логи всех компонентов собирает единая система наблюдаемости. Каждый элемент этой цепочки — управляемый сервис: инфраструктурную рутину забирает платформа, команда занимается бизнес-логикой.

Внедрение сервис-ориентированной архитектуры в корпоративную среду

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

  1. Аудит ландшафта. Составьте карту систем, их связей и дублирующейся функциональности: дубли — первые кандидаты на выделение в общие сервисы.
  2. Выделение сервисов и контрактов. Разбейте процессы на бизнес-функции и опишите для каждой контракт: операции, форматы данных, требования к доступности.
  3. Выбор интеграционного слоя. Решите, что будет связывать сервисы: API-шлюз, брокер сообщений, шина или их комбинация. Здесь же определите стандарты: протоколы, форматы, правила версионирования.
  4. Пилотный проект. Начните с одного процесса со зримым эффектом, например с единого сервиса клиентских данных. Пилот проверит и технологии, и готовность команд.
  5. Управление SOA. Заведите реестр сервисов, назначьте владельцев, договоритесь о жизненном цикле версий и контроле качества API. Без этого слоя управления система быстро вернётся к хаосу интеграций.

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

SOA в примерах

Разобраться, что такое SОА на практике, проще всего на примерах отраслей.

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

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

Похожим образом SOA работает в телекоме и на производстве: биллинг, CRM и техподдержка обмениваются событиями через интеграционный слой, а новые партнёрские сервисы подключаются через публичные API, не требуя доработки ядра.

Частые вопросы про SOA

SOA — это технология или подход?

Подход. SOA не привязана к конкретному стеку: её принципы можно реализовать на SOAP-сервисах, REST API, gRPC или очередях сообщений. Покупка какого-то одного продукта, даже ESB, сама по себе SOA не создаёт.

Считается ли SOA устаревшей?

Нет. Устарели отдельные технологии её первой волны, такие как тяжёлые шины и SOAP-стек, но сами принципы — контракты, слабая связанность, переиспользование — легли в основу микросервисов и API-first-подхода и применяются в большинстве корпоративных систем.

Можно ли сочетать SOA и микросервисы?

Да, и это частый сценарий. Интеграционный контур компании строят по правилам SOA: общие сервисы, каталог контрактов, единые стандарты. А отдельные продукты внутри этого контура команды собирают как наборы микросервисов в контейнерах.

Что такое ESB и обязательна ли она для SOA?

ESB (Enterprise Service Bus) — сервисная шина предприятия, посредник для маршрутизации и преобразования сообщений между системами. В классической SOA шина была центральным элементом, но SOA работает и без неё: современные SOA-системы чаще строят на связке API-шлюза и брокера сообщений.

Что в итоге

Сервис-ориентированная архитектура остаётся рабочим инструментом для компаний со сложным IT-ландшафтом: она превращает клубок интеграций в управляемый набор сервисов с контрактами и владельцами. Платить за это приходится дисциплиной — управлением API, версионированием и мониторингом, но именно эти задачи сегодня закрывают управляемые облачные сервисы. А спор «SOA или микросервисы» на практике решается союзом: принципы у подходов общие, и зрелые команды используют оба — каждый там, где он уместен.

Соберите сервисную архитектуру на Yandex Cloud

Разверните сервисы в кластере Yandex Managed Service for Kubernetes®, подключите API-шлюз и очереди сообщений — начать можно в консоли, для старта хватит стартового гранта.

SOA: что такое сервис-ориентированная архитектура, её плюсы и минусы

Войдите, чтобы сохранить пост