microservicesCada vez más empresas se decantar por una arquitectura enfocada a microservicios. Y probablemente es porque los microservicios son el perfecto complemento para la tecnología SDN/SD-WAN: así, los módulos que componen las aplicaciones pueden implantarse en numerosos servidores o centros de datos.

Pero antes de continuar, definamos con precisión el concepto de microservicios.

¿Qué son los microservicios?

En primera instancia, debemos recordar que se pueden distinguir dos tipos de arquitecturas:
Monolítica.
• Microservicios.

Una arquitectura monolítica es autónoma, es decir, no depende de otros servicios externos a ella y únicamente se centra en sus propios componentes.

En cambio, la gran ventaja de una arquitectura de microservicios es que ofrece cada uno de los componentes de forma aislada, siendo más fáciles de mantener y de responder frente a distintos niveles de escalabilidad. Permite replicar aquellas instancias de microservicios que sean necesarios, evitando, como es en el caso de la arquitectura monolítica, tener que replicar una copia de toda la aplicación en su conjunto.microservices

Microservicios y contenedores

Los microservicios están muy ligados al concepto de contenedor, una unidad estándar de software que empaqueta el código junto a todas de sus dependencias para que el servicio o aplicación se ejecute de forma rápida y fiable de un entorno informático a otro.
Por otro lado tenemos el concepto Docker, una plataforma de contenedores cuyo fin es ejecutar aplicaciones de forma aislada y eficiente.

microservices

Los Dockers necesitan de una imagen para su encapsulación. Una imagen de Docker consiste en un paquete de software liviano, independiente y ejecutable que incluye todo lo necesario para ejecutar una aplicación: código, tiempo de ejecución, herramientas del sistema, librerías y configuraciones. Los Dockers aíslan el software de su entorno y garantizan que funcione de manera uniforme.

Además, un Docker no solo se utiliza para desplegar aplicaciones en producción, sino también para crear entornos de desarrollo replicables entre todos los miembros de un equipo, asegurar que las aplicaciones se van a ejecutar igual en todos los entornos, etc.

Kubernetes

La gestión de cada uno de los ciclos de vida de los contenedores la lleva a cabo Kubernetes, que consiste en un sistema de código que permite automatizar la implementación, el escalado y la administración de aplicaciones en contenedores. Es decir, se trata de un orquestador de contenedores.

microservices

Un orquestador de contenedores tiene como función gestionar el ciclo de vida de cada una de las aplicaciones que se encuentran alojadas en distintos dockers, coordinándolas entre sí.

Las características principales de los Kubernetes son:

• Escalado y autoescalado: permite escalar aplicaciones manual u horizontalmente, mediante reglas predefinidas, en función del uso de la CPU.

• Descubrimiento de servicios y balanceo de cargas: Kubernetes proporciona a los Pods sus propias direcciones IP y un solo nombre DNS para un conjunto de Pods, permitiendo equilibrar la carga entre ellos.

Autorreparación: en caso de fallo de un contenedor, puede reiniciarlo automáticamente.

• Despliegues y rollbacks automáticos: Kubernetes permite no borrar todos los Pods de la versión anterior mientras se está actualizando. En caso de fallo revertirá el cambio automáticamente.

Planificación: coloca automáticamente los contenedores en los mejores nodos de acuerdo con sus requisitos sin sacrificar la disponibilidad.

• Gestión de la configuración y secrets: Kubernetes permite almacenar datos sensibles como contraseñas, claves ssh, tokens, etc., llamados secrets. Estos se guardan en una zona segura y no dentro de la imagen.
• Orquestación del almacenamiento.

• Ejecución Batch.

Contenedores vs. máquinas virtuales

La gran diferencia que presentan los contenedores frente a las máquinas virtuales es que estas últimas son una abstracción del hardware físico que incluye una copia completa del sistema operativo, la aplicación, los binarios necesarios y las bibliotecas, ocupando de esta manera decenas de gigas. En cambio, los contenedores adoptan un enfoque diferente, porque aprovechan la mecánica de bajo nivel del sistema operativo del host.

En resumen, los contenedores permiten desplegar, arrancar y parar aplicaciones más rápido y aprovechar mejor los recursos de hardware, aislando aplicaciones, no sistemas operativos.

En cambio, las máquinas virtuales nos permiten crear sistemas completos totalmente aislados, con mayor control sobre el entorno y mezclando sistemas operativos host y huésped.
Teldat está apostando, cada vez más, por una arquitectura de microservicios que permite mejorar todavía más la eficiencia y la funcionalidad de la tecnología SD-WAN


Sobre el autor

Carlos Masso
Carlos Masso
Ingeniero Informático en el Departamento de I+D de Teldat. Dentro de dicho departamento trabaja en el grupo de Cloud como programador

Comparte este post




| Etiquetas: