Fragen? Antworten! Siehe auch: Alternativlos
Daher hier nochmal meine längeren Gedanken. Der Aufhänger für die ganze Geschichte war ja nicht, dass Amazon von Microservice auf Monolith umgestellt hat, sondern dass sie damit 90% Kosten gespart haben.
Natürlich kann man hier eine tolle Diskussion der Vor- und Nachteile von Modularisierung und Microservices führen. Aber geht halt am Punkt vorbei. Amazon hat das nicht aus strukturellen Gründen umgestellt, sondern weil das 90% billiger ist.
Warum ist das denn 90% billiger? Nun, dazu ein kleines Gedankenexperiment.
Nehmen wir an, ihr geht zu einem Hoster, und mietet bei dem zwei Rechner an. Die stehen am Ende im selben Rechenzentrum, und zwischen ihnen gibt es Ethernet. Der Traffic zwischen den Kisten kostet euch nichts. Denn der kostet auch den Hoster nichts. Das ist ein Kabel, ein Switch. Niemand käme auf die Idee, da einen Trafficzähler dran zu hängen, und euch eine Rechnung pro Kilobyte zu schicken.
Sagte ich niemand? Doch! Die Amazon Cloud macht das so. In der Cloud haben Amazon und co ein Nickel-and-Dime-Abrechnungsmodell etabliert, bei dem man für Dinge Rechnungen kriegt, die beim Hoster mit drin sind, und die dem Cloudanbieter keine Kosten verursachen.
Traffic zwischen den Diensten. Traffic zur Festplatte. Benutzter Platz auf der Festplatte. Sowas.
Was hier also die immensen Einsparungen verursacht hat, das war keinesfalls eine "bessere Architektur". Nein. Das war die gezielte Vermeidung von Amazons Freudenhaus-Preisstruktur. Wenn Amazon für Storage oder den Traffic zum Storage Geld sehen will, dann reduzieren wir am besten temporäre Zwischenspeicher. Wenn Amazon für den Traffic zwischen Microservices Geld sehen will, dann fusionieren wir die am besten zu einem Monolithen zusammen.
DAS ist hier passiert.
Auf architektonischer Ebene kauft man sich mit Verteilung (z.B. auf Microservices) höheren Durchsatz, aber zahlt mit steigender Latenz. Wenn die Latenz wichtig ist, dann versucht man die Pfade kurz zu halten. Wenn der Durchsatz wichtiger ist, dann zerlegt man den Prozess in mehr Stufen und baut ein Fließband-System, bei dem die Schritte entkoppelt sind, damit sie einzeln in die Breite skaliert werden können. Wenn man das geschickt macht, kann man sowohl hohen Durchsatz und geringe Latenz haben. Das ist dann aber mit Arbeit verbunden.
Die Story hier ist also meiner Ansicht nach nicht über Microservices oder Monolithen oder Modulithen, wie Kris sie nennt, sondern über Amazons Preisstruktur. Wieso das außerhalb von Amazon anscheinend niemandem auffällt, sondern wir dafür einen Blogpost von deren Videoabteilung brauchen.
Wo sind denn eigentlich die ganzen schonungslosen Analysen, ob die Dinge durch die Cloud-Migration tatsächlich billiger oder effizienter geworden sind?! Ich sehe keine davon. Weil keiner zugeben will, dass das dadurch langsamer, unzuverlässiger und teurer geworden ist, ohne irgendeinen Vorteil zu zeitigen.
Update: Ein Leser empfahl zu Amazons Kostenstruktur diese handliche Übersicht. Na dann ist ja jetzt alles klar. *gacker*