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



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

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



Подробнее



1️⃣ Внесение изменений

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

В MSA зависимости от других сервисов отсутствуют либо минимальны, то необходимость взаимодействия с другими сервисами и командами пропадает. Внесение изменений осуществляется командой, которая владеет сервисом/



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

В SOA стремится переиспользованию. Разработчики часто тратят много времени, пытаясь интегрировать повторно используемые сервисы, которые потом мало используются повторно

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



3️⃣ Команды

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

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



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

В SOA взаимодействие осуществляется через корпоративную шину. Если в ней со временем появляется много логики, то она легко становится бутылочным горлышком.

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



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

SOA состоит из множества развертываемых модулей, что затрудняет процесс автоматизации и координации

В MSA каждый cервис может быть развернут независимо от других сервисов (и другой инфраструктуры), что отражает ограниченный контекст



6️⃣ Тестирование

В SOA ни одна из частей архитектуры не является завершенной — все они являются частью более крупного рабочего потока и обычно не предназначены для изолированного тестирования

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



📎 Материалы

1. SOA vs MSA

2. Microservices Architecture – SOA and MSA

3. Как и зачем переходить от сервис-ориентированной архитектуры к микросервисам

4. ▶️ Различия SOA и микросервисной архитектуры за 9 минут



#архитектура #сравнение