Was ist wirklich anders zwischen SOA und Microservices

10

Haftungsausschluss

Ich hoffe, ich trete niemandem auf die Zehen oder beleidige die Enthusiasten beider Konzepte

Hintergrund

Ich habe nach echten Unterschieden zwischen serviceorientierter Architektur und Microservices gesucht , ohne eine klare Antwort zu finden.

Ich lese Dinge wie:

  • die Nebenwirkungen von SOA
  • SOA ist Anti-Pattern
  • Microservices kamen, um die Fehler von SOA zu beheben
  • ESBs sind nicht wirklich ESBs, sondern EAIs
  • Übermäßiges Vertrauen in Message Brokers
  • Anbieter missbrauchen den Begriff SOA und versuchen, ihre Produkte zu verkaufen
  • SOA wächst unkontrolliert

Dennoch definiert nichts klar die architektonischen Unterschiede zwischen serviceorientierter Architektur (als Konzept) und Microservices (als Konzept).

Nach meinem Verständnis haben beide:

  • Dienstleister, die nur eines tun
  • Service Gateway / ESB stellt diese Dienste Verbrauchern zur Verfügung
  • Service-Verbraucher, die über ESB / Service Gateway auf Services zugreifen

Frage

Gibt es etwas anderes als die Umbenennung von SOA in Microservices? Ist es eine technologische Einschränkung, die verhindert, dass Microservices zu Makros werden?

Hinweis: Ich suche keine Meinungen, nur harte Fakten, hoffentlich in Stichpunkten

Verweise

Aktualisieren

Es scheint, dass eine ähnliche Debatte in einer Stapelüberlauffrage stattgefunden hat , bei der die Meinungen geteilt wurden, ob Microservices eine serviceorientierte Architektur sind oder nicht.

Schlussfolgerung aus der SO-Frage:

  • MS ist ein Sonderfall von SOA
  • MS befürworten kleinere Anwendungen von Hosting-Diensten
  • MS ist technologieabhängig (die Verwendung von HTTP anstelle von offenen Protokolloptionen)
  • MS setzt auf Technologie, um Disziplin durchzusetzen (automatische Bereitstellung von Diensten)
  • MS betrachtet ESBs (böse), verwendet jedoch API-Gateways, bei denen es sich meiner Meinung nach um eine Art ESB handelt

Daraus folgt, dass MS SOA ist, wenn Folgendes zutrifft:

  • Unterstützen MS den Begriff Orchestrierung? Ein oder mehrere Masterprozesse verwalten Workflows
  • Gibt es in MS eine Nachrichtenbroker-Schicht? Eine Reihe von Adaptern, die Nachrichtenformate aus dem Nachrichtenbereich der Dienstproduzenten an die Dienstkonsumenten übersetzen
  • Können Microservices Daten aus monolithischen Unternehmensanwendungen lesen? Können es APIs einer monolithischen Anwendung sein? oder müssen es eigenständige Anwendungen sein, die unabhängig arbeiten können?

Wenn sich die Antwort auf die letzte Frage als Nein herausstellen würde, wäre Microservices nicht in der Lage, komplexe Workflow-Systeme, z. B. Kreditkartenverwaltungssysteme oder Abstimmungssysteme, zu handhaben

A. Rashad
quelle
Die Mode für verteiltes Rechnen sind heutzutage kleine, lose gekoppelte, dezentrale, fehlertolerante "Agenten" oder "Module", die klare, spezifische Verantwortlichkeiten haben und durch ein einfaches, unkompliziertes Kommunikationsprotokoll miteinander verbunden sind. SOA ist so ziemlich das Gegenteil von all dem. Sie beobachten den Maulwurfshügel oberflächlicher Ähnlichkeiten und übersehen den Berg der Unterschiede.
Robert Harvey
1
Sollte SOA nicht auch kleine lose gekoppelte Komponenten implementieren? Ich weiß, dass es sich am hinteren Ende von SOA um multifunktionale Anwendungen handelt, die meist als "Best of Breed" bezeichnet werden und Dienste für andere Anwendungen bereitstellen und Dienste von anderen Anwendungen verwenden, wobei das dafür geeignete Nachrichtenformat, Protokoll und Medienzugriff verwendet wird
A. .Rashad
Es sollte, aber wie Sie gerade betont haben, tut es normalerweise nicht.
Robert Harvey
Martin Fowler's Site (I think he hates it big time)Das waren nicht meine Gefühle, als ich zu seinem Vortrag in Barcelona ging. Er ist sich der Kompromisse bewusst und wie sich die Menschen blindlings auf diese Architektur verlagert haben, ohne zu berücksichtigen, dass MS nicht für jeden geeignet ist.
Laiv
1
Microservices ist eine Menge Marketing. Es gibt keinen Unterschied. Die Leute haben das vor Jahren gemacht und jetzt hat jemand einen Namen dafür gegeben und jetzt ist es etwas Neues. Sie haben Recht, MS ist ein (NICHT SPEZIELLER) Fall von SOA. Bitte hören Sie auf zu versuchen, etwas daraus zu machen.
Kyle Johnson

Antworten:

12

Dienstleister, die nur eines tun

Der Hauptunterschied, der weit verbreitete Konsequenzen des Projekts hat, besteht darin, dass diese Dienstanbieter mit Microservices unabhängig voneinander bereitstellbar und skalierbar sind .

Das ist großartig, weil Sie agiler sein können. Wenn ein Dienst geändert werden muss, ändern Sie einfach diesen, keinen seiner Verwandten. Wenn Sie ein neues Framework oder eine neue Sprache ausprobieren möchten, ersetzen Sie einfach diesen einen Dienst. Wenn Sie plötzlich die 100-fache Kapazität benötigen, drehen Sie einige neue Maschinen mit diesem Service hoch, um diesen Zustrom zu bewältigen. Wenn Sie etwas versionieren möchten, versionieren Sie es einfach, ohne die gesamte App zu berühren . Und es macht es einfacher, Dinge zu überwachen, zu instrumentieren, zwischen Teams aufzuteilen, veraltet ...

Aber es hat einige schwerwiegende Folgen:

  • Ihr Freigabeprozess muss sich ändern, da sich die Bereitstellung einiger Dienste erheblich von der Bereitstellung einiger Dutzend Dienste unterscheidet.
  • Ihr Freigabeprozess muss sich ändern, da sich die Bereitstellung eines Dienstes auf einem Computer erheblich von der Bereitstellung auf einigen Dutzend Computern unterscheidet.
  • Das Design, die Verwendung und die Bereitstellung Ihrer Datenbank müssen sich ändern, da die Bereitstellung eines Dienstes bedeutungslos ist, wenn diese große gemeinsam genutzte Datenbank für die Arbeit bereitgestellt werden muss (wodurch alle anderen Dienste beschädigt werden).
  • Ihr Design und Ihre Verwendung von Bibliotheken müssen sich ändern, da es irgendwie bedeutungslos ist, einen Dienst bereitzustellen, wenn diese gemeinsam genutzte Bibliothek aktualisiert werden muss (wodurch alle anderen Dienste beschädigt werden).
  • Ihre Protokollierung / Autorisierung / Session - Management / etc muss mich ändern , weil es zu teilen Sachen ziemlich einfach ist , wenn man nur ein Dienst ist, aber anders , wenn Sie eine Reihe von unabhängigen kleinen Dienstleistungen, die das Produkt bilden - und sie gehen zu will Sachen teilen. Oh, und all das geteilte Zeug muss sich damit befassen, möglicherweise auf verschiedenen Versionen zu sein.
  • Ihre Kommunikation muss sich ändern. Mit wenigen Diensten können Sie Probleme lösen, bei denen die Kommunikation nicht häufig und / oder langsam erfolgt. Mit Microservices werden sie viel miteinander reden, und eine hohe Latenz wird es nicht schaffen.
Telastyn
quelle
1
Aus all diesen Gründen betrachte ich Microservices als eine spezifische Lösung für ein bestimmtes Problem (Skalierung über verteiltes Computing) und nicht als eine allgemeine Anwendungsarchitektur.
Robert Harvey
1
Enh, sie haben eine so weit verbreitete Wirkung, dass ich denke, dass sie als Anwendungsarchitektur mit Skalierbarkeit / verteiltem Computing als Vorteil angesehen werden sollten (mit Komplexität und anderen Nachteilen als Kompromiss).
Telastyn
1
Aus architektonischer Sicht sind Microservices eigenständige Mikrosysteme, die eines tun, während SOA monolithische Anwendungen mit mehreren Diensten sind, die den Verbrauchern zugänglich sind.
A. Rashad
1
Ich bin jetzt verwirrter! Ist es für eine monolithische Anwendung möglich, Mikrodienste freizulegen? oder müssen es eigenständige Mikroanwendungen sein?
A. Rashad
1
Schauen Sie sich diesen Artikel in DZone Microservices vs SOA an .
Laiv
2

Hier ist das Fazit Der einzige offensichtliche Unterschied zwischen SOA und Microservices ist der Begriff von

Intelligente Endpunkte dumme Rohre

Im Gegensatz zu SOA würde dies darauf beruhen, dass Servicekonsumenten und -produzenten nichts davon mitbekommen und das Verkehrsmanagement, die Übersetzung des Nachrichtenformats und die Service-Orchestrierung an externe Systeme delegieren, z. B. ESB, Service Orchestrator, Message Broker.

A. Rashad
quelle