
Cuando los monolitos crecen demasiado, puede que sea el momento de pasar a los microservicios
Una aplicación monolítica se compila como una sola unidad unificada, mientras que una arquitectura de microservicios es una serie de servicios pequeños que se pueden implementar de forma independiente. ¿Cuál deberías elegir tú? La respuesta depende de varios factores.
¿Qué es una arquitectura monolítica?
Una arquitectura monolítica es una red informática grande y única con una base de código. Para hacer cambios en este tipo de aplicación, hay actualizar toda la pila, lo que requiere acceder a la base de código y compilar e implementar una versión actualizada de la interfaz del lado del servicio. Esto hace que las actualizaciones sean restrictivas y lentas.
Estas son algunas desventajas de una arquitectura monolítica:
Velocidad de desarrollo más lenta: con una aplicación grande y monolítica, el desarrollo es más complejo y lento.
Escalabilidad: no se pueden escalar componentes individuales.
Fiabilidad: si hay un error en algún módulo, puede afectar a la disponibilidad de toda la aplicación.
Barrera para la adopción de tecnología: cualquier cambio en el marco o el lenguaje afecta a toda la aplicación, lo que hace que los cambios suelan ser costosos y lentos.
Falta de flexibilidad: un monolito está limitado por las tecnologías que se utilizan en él.
Implementación: un pequeño cambio en una aplicación monolítica requiere una nueva implementación de todo el monolito.
¿Qué la arquitectura de microservicios?
Son servicios tienen su propia lógica empresarial y base de datos con un objetivo específico que se implementar de forma independiente. Los microservicios no reducen la complejidad, pero hacen que cualquier complejidad sea visible y más gestionable, ya que separan las tareas en procesos más pequeños que funcionan de manera independiente entre sí y contribuyen al conjunto global.
Estas son las ventajas de los microservicios:
Agilidad: promueve formas ágiles de trabajar con equipos pequeños que implementen con frecuencia.
Escalado flexible: si un microservicio está alcanzando su capacidad de carga, se pueden implementar rápidamente nuevas instancias de ese servicio al clúster que lo acompaña para aliviar la presión. Ahora tenemos varios inquilinos y no tenemos control de estado, con clientes repartidos en varias instancias. Así, podemos respaldar tamaños de instancias mucho mayores.
Implementación continua: tenemos ciclos de lanzamiento frecuentes y más rápidos. Antes enviábamos actualizaciones una vez a la semana y ahora podemos hacerlo dos o tres veces al día.
Muy fácil de mantener y probar: los equipos pueden hacer pruebas con el código y dar marcha atrás si algo no funciona como esperan. Esto facilita la actualización del código y acelera el tiempo de salida al mercado de nuevas funciones. Además, es fácil aislar y corregir fallos y errores en los servicios individuales.
Implementación independiente: los microservicios son unidades individuales, por lo que permiten una implementación independiente rápida y sencilla de funciones individuales.
Flexibilidad tecnológica: con las arquitecturas de microservicios, los equipos pueden elegir con libertad las herramientas que desean.
Alta fiabilidad: puedes implementar cambios para un servicio en concreto sin el riesgo de que se caiga toda la aplicación.
Equipos más satisfechos: los equipos de Atlassian que trabajan con microservicios están mucho más satisfechos, ya que son más autónomos y pueden compilar e implementar de forma independiente, sin esperar semanas a que se apruebe una solicitud de incorporación de cambios.
En resumen…
Es posible que los microservicios no sean para todo el mundo. De hecho, una arquitectura monolítica heredada puede funcionar de maravilla y quizá no valga la pena descomponerla. Sin embargo, a medida que las organizaciones crecen y aumentan las demandas de sus aplicaciones, la arquitectura de microservicios puede ser la solución.