• Giovanny Rey Cediel

Microservicios VS Monolito

Actualizado: ene 15



La arquitectura de microservicios permite dividir un sistema en varios servicios más pequeños, individuales e independientes, los cuales se ejecutan como procesos autónomos capaces de comunicarse entre sí a través APIs.


La arquitectura monolítica significa que los componentes del código están diseñados para trabajar juntos, compartiendo el mismo espacio de memoria y la misma base de datos. Cuando se realizan cambios en un sistema monolítico, todos los componentes se deben construir y desplegar a la vez.


Benefícios de los Microservicios

Para proyectos grandes, los microservicios pueden ofrecer en una organización una amplia variedad de beneficios, aquí hay 6 posibles:


Aplicaciones más fáciles de crear y mantener

Las aplicaciones se vuelven más fáciles de crear y mantener cuando se dividen en fragmentos componibles más pequeños. La administración del código se vuelve más sencilla porque cada microservicio tiene su propio código fuente. Los servicios pueden implementarse utilizando diferentes lenguajes de programación, bases de datos y entornos de software.


Diseño entorno a las necesidades de negocio

La arquitectura de microservicios motiva a los equipos a centrarse en la creación de funcionalidades orientadas a las necesidades de negocio y no en las tecnologías.


Productividad y velocidad

La arquitectura de microservicios mejora la productividad y la velocidad al descomponer las aplicaciones en servicios manejables que se desarrollan más rápido. Diferentes equipos pueden estar trabajando en diferentes componentes simultáneamente. Esta arquitectura también es muy útil para acelerar las pruebas de calidad, ya que cada microservicio se puede probar individualmente sin tener que esperar a desarrollarlos todos.


Flexibilidad en el uso de tecnologías

Cada microservicio puede escribirse en lenguaje de programación diferente, con bases de datos diferentes, y aún así, coexisten de manera armónica con otros. Esto permite seleccionar la tecnología que mejor se ajuste al propósito de cada microservicio.


Equipos autónomos y multifuncionales

Los microservicios son la mejor noticia para los equipos distribuidos. Un desarrollo de un sistema monolítico puede ser complicado si se trabaja con grandes equipos, aunque se intenten dividir en grupos, siempre habrá acoplamiento entre ellos por el hecho de compartir el mismo código y la misma base de datos. Los microservicios permiten segmentar el equipo en grupos independientes que les permiten trabajar de forma autónoma y tomar decisiones técnicas más rapido.


Mejor escalamiento

Debido a que la arquitectura de microservicios se basa en pequeños componentes, es mas fácil aplicar escalabilidad horizontal y/o vertical (crecer en nodos y/o mejorar el hardware de un nodo). La escalabilidad puede ser aplicada a específicos componentes que la requieran, y no a todo el sistema.


Desventajas de los Microservicios sobre Monolito

Si bien el uso de microservicios resuelve algunos de los problemas de una arquitectura monolítica, también crea varios problemas, de los cuales he aquí tres:


Difícil rotación de desarrolladores

Es natural que los desarrolladores se centren en el código y requisitos funcionales del microservicio que tienen a cargo, generalmente, desconocen los requisitos e historial del código de otros microservicios, y si por añadidura los microservicios se construyen con diferente lenguaje, es fácil suponer que la rotación del personal implicará en menor o mayor grado un riesgo para el proyecto.


Las API remotas son más vulnerables a los ataques que las llamadas a métodos locales

Poner todas las APIs de los microservicios en la red hace que sea mucho más fácil llamarlas. Esto implica que se deben realizar pruebas de seguridad con todas las APIs, mayormente con las expuestas externamente.


Complejidad

Los microservicios requieren más coordinación especialmente cuando varios equipos están involucrados. Los microservicios introducen más tráfico de red que no estaría presente en una aplicación monolítica. A diferencia de un monolito, los microservicios requieren considerar muchos detalles como la comunicación entre ellos, el manejo de errores para evitar disrupción y el incremento de casos de prueba. Estos son detalles que toman especial relevancia en los microservicios y que para un monolito no supone mayor problema.


Características a tener en cuenta en arquitectura de microservicios

  • Cada microservicio es independiente en propósito, entorno de ejecución, código y base de datos.

  • Debido a su independencia, los microservicios pueden ser parte de varios sistemas a la vez.

  • Cada microservicio se despliega por separado.

  • Cada microservicio puede seleccionar la tecnología que mejor se ajuste a su necesidad.

  • Los microservicios interactúan entre ellos usando APIs.

  • Cada microservicio es centrado en una única responsabilidad de negocio.

  • Cada microservicio puede escalarse por separado.

  • Cada cambio en un microservicio implica probar su funcionamiento interno, y su interacción con los demás miembros del ecosistema.

Características a tener en cuenta en arquitectura monolítica

  • Iniciar un proyecto y desarrollarlo es más sencillo en un monolito.

  • Los módulos son altamente acoplados en un monolito.

  • El monolito usa una sola base de datos para todos los módulos.

  • La actualización de un módulo implica re-desplegar toda la aplicación.

  • Reusar los módulos en otro software es difícil.

  • Los despliegues son mas sencillos en un monolito, generalmente implican lanzar un solo archivo que empaqueta todos los módulos en un solo servidor.

  • Cambiar un componente implica probar todo el sistema.

Conclusión

Los microservicios ofrecen un tipo único de modularización que permite enfrentar grandes proyectos de una manera más fácil y ordenada. Incrementa la productividad, ofrece un mejor escalamiento y flexibilidad en la selección de tecnologías. Sin embargo, como cualquier otra arquitectura, los microservicios también presentan desventajas, el uso de diferentes bases de datos, la gestión de múltiples containers, el uso de multiples lenguajes de programación y frameworks, puede ser intimidante para algunas organizaciones; no todos están dispuestos a manejar la autonomía que los microservicios ofrecen.

52 vistas0 comentarios

Entradas Recientes

Ver todo