Що насправді відрізняється між SOA та мікросервісами


10

Відмова від відповідальності

Я сподіваюся, що я не наступаю ні на кого ніг і не ображаю ентузіастів жодної концепції

Фон

Я шукав реальні відмінності між сервісно-орієнтованою архітектурою та мікросервісами, не знайшовши чіткої відповіді.

Я читаю такі речі, як:

  • побічні ефекти SOA
  • SOA як анти-модель
  • Мікросервіси прийшли виправити збої SOA
  • ESB насправді не є ESB, натомість вони є EAI
  • Надмірна надійність брокерів на повідомлення
  • Продавці зловживають поняттям SOA і намагаються продати свою продукцію
  • SOA безконтрольно росте

Але все-таки нічого чітко не визначає архітектурні відмінності між сервісно-орієнтованою архітектурою (як концепція) та мікросервісами (як концепція)

Згідно з тим, що я зрозумів, вони обоє мають:

  • Постачальники послуг, роблячи лише одне
  • Служба шлюзу / ESB, що відкриває ці послуги споживачам
  • Сервісні споживачі, що отримують доступ до послуг через ESB / Service Gateway

Питання

Отже, чи є щось інше, ніж відновлення SOA в мікросервіси? чи обмежено технологію, щоб обмежити мікросервіси перетворюватися на макрос?

Примітка. Я не шукаю думок, а лише важкі факти, сподіваюся, в пунктах

Список літератури

Оновлення

Схоже, подібна дискусія трапилася і в питанні про переповнення Stack , і думки поділяються за тим чи ні Мікросервіси маскуються під сервіс, орієнтований на сервіс.

Висновок з питання СО:

  • МС - особливий випадок SOA
  • MS схвалює менший розмір програм, що розміщують послуги
  • MS залежить від технології (використання HTTP, а не параметрів відкритого протоколу)
  • MS покладаються на технології для забезпечення дисципліни (автоматичне розгортання послуг)
  • MS вважає ESB (злі), але використовує шлюзи API, які IMHO є типом ESB

З цього випливає висновок, що MS - SOA, якщо справедливо таке:

  • Чи підтримують МС поняття оркестрації? Один або кілька головних процесів керують робочими процесами
  • Чи є рівень посередника повідомлень у MS? Набір адаптерів, що переводять формати повідомлень з простору повідомлень виробників послуг до споживачів послуг
  • Чи можуть мікросервіси зчитувати дані з монолітних корпоративних програм? Чи можуть це бути API монолітного застосування? або це повинні бути автономні додатки, здатні працювати самостійно?

Якщо відповідь на останнє запитання виявилася ні, то мікросервіси не змогли б обробляти складні системи робочого процесу, наприклад системи управління кредитними картками або системи примирення


Сьогодні мода розподілених обчислень - це невеликі, нещільно пов'язані, децентралізовані, стійкі до помилок "агенти" або "модулі", які мають чіткі, специфічні обов'язки і пов'язані між собою простим, прямим протоколом зв'язку. SOA є майже протилежним усьому цьому. Ваше спостереження за верховинкою подібності та видом на гору відмінностей.
Роберт Харві

1
Чи не повинен SOA також реалізовувати невеликі з’єднані компоненти? Я знаю, що в задньому кінці SOA - це багатофункціональні програми, які в основному описуються як "Best of Breed", що надають послуги іншим програмам та споживають послуги інших програм, використовуючи будь-який формат повідомлення, протокол та доступ до середнього доступу
A .Рашад

Слід, але, як ви тільки що вказали, зазвичай це не так.
Роберт Харві

Martin Fowler's Site (I think he hates it big time)Це не було моїх почуттів, коли я їздив на його розмову в Барселону. Він знає про компроміси і про те, як люди сліпо перейшли до цієї архітектури, не вважаючи, що MS не підходить для всіх.
Лаїв

1
Мікросервіси - це купа маркетингу. Різниці немає. Люди робили це років тому, і тепер хтось поставив ім’я, а тепер це щось нове. Ви правильні, що MS - це (НЕ СПЕЦІАЛЬНИЙ) випадок SOA. Будь ласка, припиніть, намагаючись зробити щось із цього.
Кайл Джонсон

Відповіді:


12

Постачальники послуг, роблячи лише одне

Основна відмінність, що має широкі наслідки проекту, полягає в тому, що за допомогою мікросервісів ці Постачальники послуг незалежно розгортаються та масштабуються .

Це чудово, адже ти можеш бути спритнішим. Якщо послугу потрібно змінити, ви просто зміните цю, жодну з її родичів. Якщо ви хочете спробувати новий фреймворк чи мову, просто зробіть заміну заміни для цієї послуги. Якщо вам раптом потрібна ємність 100x, заведіть нові машини з цією послугою, щоб обробити цей наплив. Якщо ви хочете щось версії, просто оновлюйте його, не торкаючись усього додатка. І це полегшує моніторинг, інструмент, співанки серед команд, застарілі ...

Але це має деякі важкі наслідки:

  • Процес випуску потрібно змінити, оскільки розгортання кількох сервісів відрізняється від розгортання кількох десятків служб.
  • Ваш процес випуску повинен змінитися, оскільки розгортання служби на одній машині значно відрізняється від розгортання на кілька десятків машин.
  • Дизайн, використання та розгортання вашої бази даних потрібно змінити, оскільки розгортати службу як би безглуздо, якщо їй потрібно розгорнути цю велику спільну БД для роботи (порушуючи всі ваші інші служби).
  • Ваша конструкція та використання бібліотек потребує змін, оскільки розгортати службу має сенс, якщо їй потрібно оновити цю спільну бібліотеку (порушивши всі ваші інші служби).
  • Ваша реєстрація / авторизація / управління сеансом / і т.д. повинно змінитися , тому що це досить легко поділитися речами , коли ви тільки один сервісом, але відрізняється , коли у вас є кілька незалежних послуг мало, складові продукт - і вони збираються в хочете поділитися речами. О, і всі ці спільні речі повинні мати справу з потенційним наявністю в різних версіях.
  • Ваше спілкування має змінитися. Маючи мало служб, ви можете розбивати речі, коли спілкування не відбувається часто і / або може відбуватися повільно. З мікропослугами вони збираються багато спілкуватися один з одним, і висока затримка не збирається її скорочувати.

1
Через всі ці причини я розглядаю мікросервіси як конкретне рішення конкретної проблеми (масштабування за допомогою розподілених обчислень), а не як загальну архітектуру додатків.
Роберт Харві

1
Ех, вони отримали достатньо широкий вплив, що, на мою думку, їх слід розглядати як архітектуру додатків із масштабованістю / розподіленими обчисленнями як догори (зі складністю та іншими недоліками, як компроміс).
Теластин

1
Отже, з архітектурної точки зору, мікросервіси - це окремі мікросистеми, які роблять одне, тоді як SOA - це монолітні програми з багатьма послугами, які піддаються споживачам?
А.Рашад

1
Я зараз більше розгублений! Чи можна монолітним додатком виставити мікросервіси? чи це повинні бути окремі мікропрограми?
А.Рашад

1
Погляньте на цю статтю у DZone Microservices vs SOA .
Лаїв

2

Ось суть справи Одна очевидна різниця між SOA і Microservices є поняття

Розумні кінцеві точки німі труби

В відміну від SOA , які будуть покладатися на споживачів НЕ звертаючи уваги послуг і виробників, делегування управління трафіком, повідомлення в форматі перекладу і обслуговування orchestratoration до зовнішніх систем, наприклад , ESB, сервіс Orchestrator, брокер повідомлень.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.