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
- Fragen zum Software-Engineering
- Martin Fowlers Site (Ich denke, er hasst es sehr)
- Info Welt
- Michael Fethers 'Website
- Fragen zum Stapelüberlauf
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
quelle
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.Antworten:
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:
quelle
Hier ist das Fazit Der einzige offensichtliche Unterschied zwischen SOA und Microservices ist der Begriff von
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.
quelle