Перейти к основному содержимому

SOA vs MSA: чем отличается микросервисная архитектура от сервисно-ориентированной?

Кратко

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

Подробнее

Внесение изменений

  1. SOA: Для внесения одного изменения требуется изменения сразу в нескольких сервисах. Так как отдельными сервисами владеют разные команды, то внесение элементарных изменений превращается в сущий ад из бесконечных совещаний, согласований и документов.
  2. MSA: Зависимости от других сервисов отсутствуют либо минимальны, то необходимость взаимодействия с другими сервисами и командами пропадает. Внесение изменений осуществляется командой, которая владеет сервисом.

Переиспользование

  1. SOA: Стремится к переиспользованию. Разработчики часто тратят много времени, пытаясь интегрировать повторно используемые сервисы, которые потом мало используются повторно.
  2. MSA: Избегают повторного использования: дублирование логики лучше зависимости от других сервисов. Повторное использование предполагает связанность, а архитектура микросервисов старается ее избегать. Это достигается за счет разбиения системы на сервисы по ограниченным контекстам (бизнес-областям).

Команды

  1. SOA: Команды разделены так же, как архитектура. Требуются колоссальные усилия координации для простых изменений.
  2. MSA: Команда кроссфункциональна, то есть включает в себя всех специалистов, необходимых для развития сервиса. Так как сервис реализует процесс от и до, то команда владеет процессом от начала до конца. Как следствие, они отвечают за процесс целиком.

Взаимодействие

  1. SOA: Взаимодействие осуществляется через корпоративную шину. Если в ней со временем появляется много логики, то она легко становится бутылочным горлышком.
  2. MSA: Каждый сервис обладает всеми частями своего ограниченного контекста и осуществляет связь с другими ограниченными контекстами с помощью обмена данными, используя брокер сообщений. Просто обмен, никакой сложной логики.

Автоматизация и развертывание

  1. SOA: Состоит из множества развертываемых модулей, что затрудняет процесс автоматизации и координации.
  2. MSA: Каждый сервис может быть развернут независимо от других сервисов (и другой инфраструктуры), что отражает ограниченный контекст.

Тестирование

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

Подборка материалов

  1. SOA vs MSA
  2. Microservices Architecture – SOA and MSA
  3. Как и зачем переходить от сервис-ориентированной архитектуры к микросервисам
  4. ▶️ Различия SOA и микросервисной архитектуры за 9 минут