Uno degli argomenti comuni per l'utilizzo dei microservizi è una migliore scalabilità. Ma mi chiedo se questo argomento sia davvero valido.
Diciamo che avevamo un'applicazione composta da 10 microservizi con 9 di essi con due istanze ciascuno (per ridondanza) e uno con 4 istanze per gestire il carico (scalabilità). L'argomento pro-microservice è quindi che sei in grado di ridimensionare questo miroservice indipendentemente dagli altri servizi.
Tuttavia, supponiamo che tutti i 10 microservizi fossero moduli in un singolo monolite e che siano state distribuite diverse istanze (ad esempio 22 come la somma dall'alto) di questo monolito. Il sistema dovrebbe essere in grado di gestire il carico per una parte critica, poiché vi sono sufficienti istanze per farlo. Se le istanze contengono la logica del programma non necessaria, l'unico aspetto negativo sarebbe che il binario e la quantità di RAM necessaria sarebbero leggermente più grandi. Ma ancora una volta, la differenza non dovrebbe essere troppo grande nella maggior parte dei casi - almeno non rispetto al resto dello stack (pensate a Spring Boot). Il vantaggio di un monlith in scala sarebbe un sistema più semplice senza (la maggior parte) degli errori di un sistema distribuito.
Mi sto perdendo qualcosa?