В отличие от SOA каждый сервис обладает всеми необходимыми для функционирования частями – имеет свою собственную базу данных и существует как независимый процесс. Такая архитектура делает каждый сервис физически разделенным, самодостаточным, что ведет с технической точки зрения к архитектуре без разделения ресурсов.
Сервисы раскрываются для потребителей также через слой API, но его стараются проектировать с полным отсутствием какой-либо логики. Это фактически просто проксирование API сервисов во вне.
Взаимодействие между сервисами сводится к обмену данными, используя брокер сообщений. Именно к обмену данными, а не вызову методов из других сервисов.
Как вы могли заметить, проектируя архитектуру в данном стиле мы имеем небольшое количество слоев, но достаточно много сервисов и команд, которые ими владеют. Основной сложностью данной архитектуры является правильное определение ограниченного контекста и распределение сервисов по командам. Но это выходит за рамки данной статьи и подробно рассматривается в моем
курсе.
Давайте сравним SOA и MSA с точки зрения развития и поддержки системы.