Uno de los argumentos comunes para usar microservicios es una mejor escalabilidad. Pero me pregunto si este argumento es realmente válido.
Digamos que teníamos una aplicación que consta de 10 microservicios con 9 de ellos con cada dos instancias (por redundancia) y uno de ellos con 4 instancias para manejar la carga (escalabilidad). El argumento pro-microservicio es que puede escalar este miroservicio independientemente de los otros servicios.
Sin embargo, supongamos que los 10 microservicios eran módulos en un solo monolito y que se implementaron varias instancias (por ejemplo, 22 como la suma de arriba) de este monolito. El sistema debería poder manejar la carga de la parte crítica, porque hay suficientes instancias para hacerlo. Si las instancias contienen lógica de programa que no es necesaria, el único inconveniente sería que el binario y la cantidad de RAM necesaria serían ligeramente mayores. Pero, de nuevo, la diferencia no debería ser demasiado grande en la mayoría de los casos, al menos no en comparación con el resto de la pila (piense en Spring Boot). La ventaja de un monlith escalado sería un sistema más simple sin (la mayoría de) las falacias de un sistema distribuido.
¿Me estoy perdiendo de algo?