L'un des arguments les plus courants pour utiliser les microservices est une meilleure évolutivité. Mais je me demande si cet argument est vraiment valable.
Disons que nous avions une application composée de 10 microservices dont 9 ont chacun deux instances (pour la redondance) et l'une d'entre elles avec 4 instances pour gérer la charge (évolutivité). L'argument pro-microservice est alors que vous pouvez faire évoluer ce miroservice indépendamment des autres services.
Cependant, disons que les 10 microservices étaient des modules dans un seul monolithe et que plusieurs instances (par exemple 22 comme la somme ci-dessus) de ce monolithe ont été déployées. Le système doit être capable de gérer la charge pour la seule pièce critique, car il y a suffisamment d'instances pour le faire. Si les instances contiennent une logique de programme non nécessaire, le seul inconvénient serait que le binaire et la quantité de RAM nécessaire seraient légèrement plus grands. Mais là encore, la différence ne devrait pas être trop grande dans la plupart des cas - du moins pas par rapport au reste de la pile (pensez à Spring Boot). L'avantage d'un monlith à l'échelle serait un système plus simple sans (la plupart) des erreurs d'un système distribué.
Suis-je en train de manquer quelque chose?