Eines der häufigsten Argumente für die Verwendung von Microservices ist die bessere Skalierbarkeit. Aber ich frage mich, ob dieses Argument wirklich zutrifft.
Nehmen wir an, wir hatten eine Anwendung bestehend aus 10 Mikrodiensten, von denen 9 jeweils zwei Instanzen (aus Redundanzgründen) und eine mit 4 Instanzen für die Lastverwaltung (Skalierbarkeit) hatten. Das Argument pro-microservice lautet dann, dass Sie diesen miroservice unabhängig von den anderen Diensten skalieren können.
Nehmen wir jedoch an, dass alle 10 Mikrodienste Module in einem einzelnen Monolithen waren und dass mehrere (z. B. 22 wie die Summe von oben) Instanzen dieses Monolithen eingesetzt wurden. Das System sollte in der Lage sein, die Last für den einen kritischen Teil zu bewältigen, da genügend Instanzen dafür vorhanden sind. Wenn Instanzen Programmlogik enthalten, die nicht benötigt wird, ist der einzige Nachteil, dass die Binärdatei und die Menge des benötigten RAM etwas größer sind. Andererseits sollte der Unterschied in den meisten Fällen nicht zu groß sein - zumindest nicht im Vergleich zum Rest des Stapels (denken Sie an Spring Boot). Die Oberseite eines skalierten Monoliths wäre ein einfacheres System ohne (die meisten) Irrtümer eines verteilten Systems.
Vermisse ich etwas?