Wie können sich Microservices in Bezug auf Softwarearchitektur und -design gegen Middleware "stapeln" (Wortspiel beabsichtigt)? Ich komme aus Java, und wenn Sie sich von REST als API entfernen und verschiedene Ebenen und Verbindungsparameter abstrahieren, zumindest in Java, schließt sich fast der Kreis zu einigen sehr alten Ideen . Wir sind zur Virtualisierung zurückgekehrt ... wobei die JVM bereits virtuell ist.
Auf agnostische Weise können Sie, und ich würde die Vorteile argumentieren, eine RESTful-API für CORBA abstrahieren. Oder, auf eine Java-zentrierte Art und Weise, JMS oder MDB.
Früher war EJB eine große Sache in Java, dann wurde es als ein bisschen wie ein Cluster-Effekt erkannt, aber jetzt sind wir wieder am Anfang?
Oder bieten Microservices etwas an, was CORBA oder noch besser MDB fehlt? Wenn ich (FowDR) Martin Fowler lese, der Microservices erklärt, erscheint es mir als gute Lösung für ein schlechtes Problem, wenn Sie so wollen. Oder besser gesagt, ein geschlossener Ansatz, der ein Maß an Komplexität einführt, das das Problem nur herumschubst. Wenn die Dienste wirklich klein und zahlreich sind, hat jeder einen Dollar Kosten für den Betrieb und die Wartung.
Wenn ein Mikrodienst unter vielen seine API ändert, bricht außerdem alles ab, was von diesem Dienst abhängt. Dabei spielt es keine scheinen lose gekoppelt, es scheint das Gegenteil von dem agilen. Oder missbrauche ich diese Worte?
Natürlich gibt es eine unbestimmte Anzahl von Möglichkeiten zwischen diesen Extremen.
Hai gegen Gorilla ... los! (Für die Pedantiker soll das ironisch sein und ist überhaupt nicht meine Absicht. Die Frage soll zum Nennwert genommen werden. Wenn die Frage verbessert werden kann, tun Sie dies bitte oder kommentieren Sie und ich werde es beheben. )
Stellen Sie sich eine Vielzahl von Mikrodiensten vor, die im Docker auf einem Computer ausgeführt werden und miteinander sprechen ... Wahnsinn. Schwer zu warten oder zu verwalten und so gut wie unmöglich, jemals etwas zu ändern, da jede Änderung kaskadiert und unvorhersehbare Fehler verursacht. Wie ist es irgendwie besser, dass diese Dienste auf verschiedene Maschinen verteilt sind? Und wenn sie verteilt sind, dann haben sicherlich einige sehr, sehr alte Schultechniken zumindest bis zu einem gewissen Grad verteiltes Rechnen gelöst.
Warum ist horizontale Skalierung so weit verbreitet oder zumindest wünschenswert?
giant blob
es Schnittstellen haben muss, sodass jeder Teil, der vom Kernel ausgeht, eine Art MS ist, und als erstes vorher Jedes Team, das mit dem Schreiben von Code begann, sollte sich auf die Spezifikationen v0.0.1 einigen.