Todo lo que no sea una arquitectura de microservicios es un monolito!
Hablando en serio, enmarcar la discusión como una opción binaria entre monolitos y microservicios crea una falsa dicotomía. Hay todo un espectro de opciones arquitectónicas, con muchos tonos de gris en el medio.
Sin ir muy lejos, esta comparación engana por que:
● Los microservicios describen tanto la arquitectura como la implementación. Son un estilo arquitectónico específico en el que un sistema de software se divide en servicios pequeños e independientes, cada uno de los cuales maneja una capacidad del sistema. Estos servicios están débilmente acoplados y se comunican a través de APIs. La naturaleza independiente de los microservicios permite que cada servicio se implemente y despliegue individualmente
● Monolito es principalmente un término de implementación. Se refiere a una aplicación empaquetada e desplegada como una sola unidad. Si bien un monolito a menudo puede tener una arquitectura estrechamente acoplada, el término en sí no describe inherentemente la estructura interna de la aplicación.
Por lo tanto, es inexacto comparar estos dos conceptos directamente. Digamos que tenemos nuestra arquitectura basada en servicios de N niveles. Podemos optar por desplegar estas capas en una sola unidad (yo estaría de acuerdo en llamar esto un monolito), pero también podemos desplegar cada capa en una unidad computacional diferente. Y, ¿Qué pasa si agregamos balanceadores de carga entre capas?
En resumen, creo que hemos perdido la riqueza del debate si nos centramos en microservicios o monolitos. Aún más, para mí esto es como papas y boniatos, los microservicios son un estilo arquitectónico (comparemoslos con N-Tier, Event-driven, pipelines and filters, etc.). Por separado, analicemos cómo desplegamos estas arquitecturas.
Nota: He visto estas discusiones dicotómicas antes en el desarrollo de software (es decir, cualquier cosa que no sea ágil tiene que ser una cascada). Parece que nos gustan, principalmente porque simplifica las complejidades inherentes a los términos. Sin embargo, de la misma manera que he visto equipos que dicen ser ágiles cuando no lo son, ¡he visto arquitecturas que dicen ser microservicios cuando no lo son!