Разница между архитектурой Microservices и SOA

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

+239
источник поделиться
7 ответов

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

  • Границы явны
  • Услуги автономны.
  • Схема общих служб и контракт, а не класс
  • Служба совместимости основана на политике

    -Don Box, Microsoft (pre-.Net 3.0)

Это приводит нас к каноническому определению микросервисов, от Льюиса/Фаулера:

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

Из этого определения ясно, что микросервисы выполняют, по крайней мере, первые два принципа (с акцентом на втором), но сомнительно, выполняют ли они третью (я действительно не понимаю принцип 4, поэтому я не буду комментарий).

Причина, по которой третий принцип может не выполняться для микросервисов, заключается в том, что одна из характеристик микросервисов заключается в том, что они, как правило, подвергаются воздействию RESTful API, что, можно утверждать, не раскрывает контракт и схему вообще (сверх и выше регулярный HTTP-слово), как мы видим из Фаулера:

набор небольших служб, каждый из которых... взаимодействует с легкими механизмами, часто API-интерфейсом HTTP

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

Эти услуги... независимо развертываются полностью автоматизированным механизмом развертывания

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

+178
источник

Основное различие между SOA и микросервисами заключается в размере и объеме. Как предполагает слово "микро", оно должно быть значительно меньше, чем имеет место SOA. Microservice - это небольшая (er) независимая установка. Остерегайтесь очень маленького микросервисного антипаттера - наносервиса. SOA может быть монолитом или может состоять из нескольких микросервисов. Мартин Фаулер говорит, что ему нравится думать, что SOA является суперсетью микросервисов.

введите описание изображения здесь

Мартин Фаулер: https://youtu.be/2yko4TbC8cI?t=15m53s

Изменить: Вот еще одно видео Мартина Фаулера, говорящего о различии между Microservices и SOA. https://youtu.be/wgdBVIX9ifA?t=13m10s

Термин микросервисы уделяет большое внимание размеру услуг, что указывает на то, что большинство практикующих считают довольно неудачным. Стефан Тилков утверждает, что вы должны начать с общего приложения и понять, как его можно разумно вырезать. Обсуждение Сэма Ньюмана подчеркивает, что вы должны получить свои микросервисы на основе DDD-концепции Ограниченный контекст

Вам может показаться, что это интересно:  Резюме книги "Строительство микросервисов"

+72
источник

Прямо из Сообщение Oracle, о различиях между SOA и микросервисами, краткое описание разницы можно суммировать в Torsten Winterberg (Oracle ACE Режиссер):

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

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

Microservices - это архитектурная специализация SOA, основанная на практике DevOps. Индивидуально развертываемые службы упростили применение непрерывной интеграции/непрерывного развертывания

+52
источник

Нет никакой разницы. Используемый подход к размеру или развертыванию не задается с помощью SOA. Micros-services - это тип шаблона SOA, когда принимаются определенные нормальные архитектурные решения. Решения включают в себя детализацию службы и подход к развертыванию/операциям. Люди использовали эти решения в SOA, прежде чем Мартин Фаулер создал новое имя для обычной архитектуры SOA. Действительно, Sun в 2000 году определил сервисы как автономные по всем аспектам и самостоятельно управляемые. Таким образом, Micro-услуги не новы, а просто новый маркетинговый термин для создания новых доходов от консалтинга. Да, крупные производители программного обеспечения с их завышенными продуктами создали монолитный подход, который никогда не был репрезентативным для принципов SOA. Это похоже на изменение имени сервиса на API, его все о маркетинге.

+36
источник

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

В первоначальном рецепте SOA нет ничего, что помешало бы писать услуги на разных языках программирования и позволяло бы их взаимодействие посредством контрактного интерфейса. В первоначальном рецепте SOA также нет ничего, что помешало бы развернуть свои службы независимо друг от друга. Выбор того, нужно ли развертывать все службы в рамках одного процесса Tomcat или разбить их на отдельные процессы Tomcat/Nginx и развернуть их на разных узлах вашего кластера, - это всего лишь вопрос семантики. Таким образом, я лично не вижу разницы между SOA и микросервисами. Сформулировать новый термин не означает, что это изобретение, честно говоря.

+33
источник

Микросервисы, короче говоря, можно рассматривать как веб-службы, которые работают независимо на веб-сервере.
Вот некоторые из ключевых особенностей:

  • Запуск независимо от других веб-сервисов, помогающих развязать большие приложения.
  • Общайтесь с другими микросервисами.

Итак, микросервис:

  • Более мелкая проблемная область.
  • Построен и развернут сам по себе, работает в своем собственном.
  • Выполняется в собственном процессе.
  • Интегрируется через известные интерфейсы.
  • Владеет собственным хранилищем данных.
+7
источник

Разница между SOA и Microservices также зависит от вашего представления о том, что такое SOA. Для некоторых людей Microservices совпадает с SOA, что они уже делают. Микросервисы часто рассматриваются как подмножество методов, используемых SOA.

Полезный обзор различий дает Мартин Фаулер здесь: https://www.youtube.com/watch?v=wgdBVIX9ifA

+6
источник

Посмотрите другие вопросы по меткам или Задайте вопрос