Autentia

Blog

Características principales de arquitecturas orientadas a microservicios

En Autentia diseñamos e implementamos arquitecturas de software altamente escalables para nuestros clientes. Esto implica que en ocasiones la solución más acertada es una arquitectura orientada a microservicios.

Si alguna vez se ha trabajado con microservicios se sabrá que uno de los retos que hay que afrontar es su despliegue en cada uno de los entornos. Con el tiempo el número de artefactos a manejar se vuelve muy grande y por tanto, se complica su gestión, su despliegue, su monitorización, el autoescalado y por supuesto mantener todo en alta disponibilidad.

Por todo esto, aparecen algunas herramientas que ayudan a realizar toda esta gestión de forma automática sin la intervención manual de un operador. Mediante su correcta instalación y configuración se construirá una plataforma de microservicios estable y dinámica.

A continuación se explicarán algunas de las principales y más importantes características que una plataforma de microservicios tiene que cumplir.

Despliegue

Una de las principales ventajas que aportan los microservicios es que estos se pueden desplegar de forma independiente unos de otros. Por otro lado, para que un sistema pueda funcionar correctamente es posible que se tengan que desplegar varios microservicios.

Cuando se tienen muchos microservicios esta gestión de despliegues se vuelve imposible hacerla manualmente por lo que es vital tener algún sistema automático que permita su “orquestación” de forma sencilla y controlada.

Martin Fowler. Microservices.

Contenedores

A nivel de desarrollo no hay ninguna duda de que la manera más ágil de arrancar todas las piezas de una arquitectura es usando contenedores. Y cada día más y más empresas utilizan esta solución también en producción.

Está claro que el uso de contenedores y sus sistemas de orquestación es un gran avance en el despliegue, gestión y monitorización de aplicaciones. Permite una sencilla implementación de alta disponibilidad para tus aplicaciones, aprovecha los recursos de las máquinas contratadas/compradas y facilita la integración continua.

Otra ventaja es que los despliegues son “configurados” y por tanto es muy sencillo crear nuevos entornos completos para pruebas, QA, demos, etc.

Una de las ventajas de trabajar con contenedores es la abstracción sobre el entorno de despliegue que ofrece. Esto da más libertad y claridad a la responsabilidades de los desarrolladores sobre el software y la base donde se ejecutará su aplicación. Por lo tanto se podrían tener entornos similares al que se tiene en producción.

Monitorización

Otra de las funcionalidades que tiene que tener nuestro sistema es la monitorización de éste. Es necesario poder medir cómo se están comportando los microservicios, no sólo para saber su rendimiento, sino también para saber si un servicio está caído o no.

Con sistemas de gestión de contenedores donde estos son volátiles, es vital tener herramientas de monitorización que puedan analizar el estado de salud de cada una de las piezas para tomar las medidas oportunas.

Alta disponibilidad

Con toda probabilidad los microservicios van a tener que estar desplegados en entornos productivos en alta disponibilidad. Es decir, desplegar varias instancias de un mismo microservicio en distintos nodos/máquinas con el objetivo de que si una de ellas se cae o falla, poder seguir dando servicio con el resto de instancias. Evitar el famoso corte del servicio que puede provocar pérdidas de muchas formas (monetarias, prestigio, etc.).

Otra característica que está estrechamente ligada a la alta disponibilidad y tal vez uno de los grandes puntos clave de estos sistemas de gestión de contenedores es la autocuración o self healing. Ante un problema o fallo de una instancia de un microservicio, los sistemas tienen la capacidad de levantar dinámicamente otros contenedores con las instancias necesarias hasta llegar a cumplir los requisitos de disponibilidad configurados en el sistema.

Autoescalado

Una vez se tiene la alta disponibilidad, el siguiente paso es el autoescalado. Esto permite aumentar el número de instancias de un microservicio en función de la demanda de uso, de forma que el sistema no sólo es tolerante a fallos, sino que es capaz de soportar picos de peticiones.

Con el autoescalado nuestro sistema será capaz, mediante monitorización, de aumentar o disminuir el número de instancias de un determinado microservicio. En las horas picos el sistema detectará una alta carga de un microservicio y de forma automática levantará más contenedores con más instancias de ese microservicio, necesarias para poder dar un buen rendimiento global.

De esta forma nuestro sistema se adaptará dinámicamente en función de la carga  optimizando el uso de los recursos.

Nuestro curso de contenedores, ¡ya disponible!

Consultar
Por Alfonso Blanco Criado 10 Sep 2018

¿Cómo podemos ayudarte?

Hablemos