Estado del Arte del Mundo de los Contenedores 2018

Autor: Javier Ramírez, Arquitecto de Sistemas Senior en Hopla! Software

Durante 2017 el mundo de los contenedores evolucionó de forma continua, sin embargo, en la actualidad, aún siguen siendo pocos los que conocen esta tecnología.  

2018 supone un paso más en la integración de los contenedores en nuestro día a día. Todos los fabricantes apuestan por este nuevo concepto, ya que está resultando como un nuevo estándar de distribución de software. La capacidad de ejecutar en cualquier lugar las aplicaciones, sin dependencias de sistema, podrá permitir en un futuro que incluso el usuario final pueda realizar sus despliegues de aplicaciones en forma de imágenes.

No obstante, el mundo de los contenedores no ha hecho más que despegar.

Servicios en la nube

La apuesta actual son los despliegues sobre las propias infraestructuras de los contenedores, dejando a un lado la complejidad de la propia plataforma y permitiendo así el foco en nuestras aplicaciones. Las grandes empresas de la nube apuestan por servicios completos basados en orquestación, sin importar la plataforma subyacente. De esta forma, nos encontramos con Azure Kubernetes Service (AKS), Amazon Elastic Container Service for Kubernetes (EKS) y, por supuesto, la plataforma propia de Google: Google Kubernetes Engine.

Por otro lado, existe incluso la evolución a plataformas aún más abstractas, como Amazon Fargate, en la que simplemente desplegamos contenedores y servicios, manteniendo el foco únicamente en el propio despliegue.

Serverless

Los contenedores y los microservicios son otro concepto que se ha hecho muy popular en los últimos años, y que van claramente de la mano. Cualquiera de los orquestadores de las plataformas de contenedores gestionará la interacción de los diferentes microservicios (escalados, interconexión, resiliencia, etc..).

Una vuelta de tuerca al concepto de microservicio son los componentes Serverless: el desarrollador no tendrá que ocuparse por los recursos sobre los que se ejecutará esta parte del aplicativo, almacenamiento, cluster de computación, etc…

La relación de los componentes serverless y los contenedores es también evidente. Este tipo de componentes llevan tiempo disponibles dentro del catálogo de Amazon como AWS Lambda, pero los contenedores han facilitado la creación de nuevos entornos de integración (Function as a Service).

IoT

Los contenedores proporcionan algunas de las características más necesarias para los dispositivos del Internet de las Cosas (IoT): independencia de plataforma, velocidad de despliegue y ligereza. Si añadimos además las posibilidades geográficas de los diferentes dispositivos y la seguridad, tendremos una solución perfecta. Últimamente se ven nuevos proyectos como Eliot, aún en fase alpha, que nacen como orquestación y configuración de miles de dispositivos con las necesidades de estos entornos tan dinámicos.

Service Mesh

El concepto de Service Mesh surge como solución a las intercomunicaciones entre los diferentes microservicios de un entorno. Las comunicaciones entre servicios pueden tener también encriptación por seguridad y, además, podremos crear servicios de proxy entre ellos para acelerar sus comunicaciones, o simplemente elegir los mejores caminos para llegar a ellos en cada situación, añadiendo, entre otras funcionalidades, la caché y la posibilidad de romper circuítos de comunicación erróneos.

Todas estas funcionalidades se ofrecen desde NGINX/NGINX+, pudiéndose ampliar también con Istio.io o Linkerd.io. NGINX, por su parte, propone tres modelos de arquitectura de intercomunicación de Microservicios (Proxy Model, Routing Mesh Model y Fabric Model), cada uno con casos de uso más o menos particulares.

Orquestación

El gran hito este año es la integración de Kubernetes bajo el paraguas de Docker Enterprise Edition 2.0. Esto supone la posibilidad de elección de la mejor orquestación, dependiendo del tipo de trabajo que vamos a desplegar en el clúster de EE2.0, y que incluye una versión completamente funcional de Kubernetes certificada por la CNCF (Cloud Native Computing Foundation).

La evolución de Kubernetes, además, llega también a Windows, por lo que en breve podremos usar este orquestador también en los despliegues de nuestra aplicaciones .Net.

Entorno de Ejecución

No podemos dejar a un lado los cambios del último año en lo referente a Docker como estándar de ejecución. La aparición de Moby y LinuxKit hacen presagiar un nuevo concepto que permitirá la liberalización total de fabricantes.

Además, el runtime de ejecución se dividió en componentes con el nuevo concepto de Container Runtime Interface (CRI) que, junto a la liberalización de containerd, ha dado lugar a CRI-Containerd, que compite con el propio Docker y los proyectos de runtime ajenos al mismo como CRI-O.

Esta competencia es muy buena si se mantiene una unicidad de criterios y siempre podamos elegir el runtime de ejecución que más se ajuste a nuestras necesidades.

Almacenamiento

Rexray como solución certificada por Docker para el mundo de los contenedores, con gran cantidad de proveedores de backend supone un gran avance, al igual que la consolidación de StorageOS y la evolución de las cabinas tradicionales de almacenamiento de los fabricantes a modelos totalmente definidos por software. Igualmente, las integraciones de los grandes competidores en hiperconvergencia con los diferentes orquestadores de contenedores han mejorado para poder tratar modelos totalmente productivos de entornos persistentes. ¿Quién no se atreve aún a ejecutar bases de datos en contenedores?

Publicación de Servicios

La publicación de los microservicios para su consumo, tanto interno entre servicios como por los propios usuarios es otro de los puntos problemáticos cuando tratamos con infraestructuras dinámicas.

Por un lado tendremos que lidiar con routing dinámico y por otro con la propia securización de las aplicaciones. En ambos casos se busca una gestión más allá de la mera publicación de endpoints al mundo. Para ello, NGINX como proxy inverso, proporciona gran parte de lo que podemos esperar (API cachés, gestión dinámica de backends, alta disponibilidad, routing y gestión de tráfico).

Podemos ir un paso más allá con herramientas como Kong, basada en NGINX, que añade aún más funcionalidades, facilitando de forma integrada la propia documentación de nuestras APIS, o la gestión de estadísticas de consumo de nuestros servicios, con seguridad integrada, muy útil cuando tratamos por ejemplo con servicios IoT.

Por último, cabe destacar el uso extensivo que se realiza hoy en día de los contenedores en nuevas tecnologías como Blockchain, o incluso a la hora de desplegar entornos de Machine Learning o Big Data.

En resumen, los contenedores siguen avanzando y son ya un estándar de despliegue y un artefacto simplificado en los pipeline de desarrollo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.