Artículos

Vivir
_
en
_
un
_
contenedor.
_
Así
_
lo
_
hacen
_
los
_
microservicios

Automatización  ·  Big Data  ·  Soluciones Cloud

La arquitectura de microservicios depende a su vez de los llamados contenedores y de los orquestadores. Tal vez te suene Docker y Kubernetes. Cada vez son más las plataformas que los usan para darnos seguridad, continuidad y escalabilidad.

23 de marzo de 2021, 7:41 hora local, Km. 151, un megabuque de 199.489 GT sufre un apagón. No, no es el nombre de un servidor, ni un data center secreto. Se trata del Ever Given, un supercarguero japonés con 400 metros de eslora y cerca de 220.000 toneladas de capacidad que dan para 20.000 contenedores. Lo que viene después es de sobra conocido: 6 días más tarde se reflotó el barco y el tráfico por el canal de Suez se restableció.

Lo sucedido ha hecho que por un momento nos paremos a pensar en cómo funciona nuestro mundo y lo frágil que es. Se produce en una parte del mundo (generalmente Asia), se coloca en contenedores y se envía a algún puerto por lo general lejano. En el trayecto hay innumerables situaciones a tener en cuenta para que algo aparentemente tan sencillo concluya con éxito: desde la situación del puerto, los estibadores, el estado de la mar, del barco, la pericia de la tripulación, el clima, la presencia de piratas (en la mar o en la nube), de las FAS protegiendo los envíos, su posterior transporte por carretera, etc.

A nivel de programación sucede algo parecido. Algo tan aparentemente sencillo como poder ver una película en Netflix esconde muchas decisiones, horas de planeamiento y riesgos que casi nunca se cumplen porque hay excelentes programadores detrás.

Cada nube viene a ser uno de esos supercargueros y, gracias a “la nube”, ha sido posible el desarrollo de una arquitectura de programación que, poco a poco, se ha posicionado como una de las más usadas: la “arquitectura” de microservicios.

Las aplicaciones basadas en microservicios dividen su funcionalidad en servicios especializados, muy desacoplados, que se comunican entre ellos y colaboran a través de APIs. Cada microservicio se ejecuta independientemente de los demás en su propio proceso, máquina virtual o contenedor. La ventaja principal de esto es la separación de responsabilidades, que hace que las aplicaciones sean por lo general más fáciles de desarrollar, mantener y escalar, aunque como veremos al hablar de contenedores requiere estar muy atentos a muchas cosas.

La contrapartida de los microservicios es que aumenta el trabajo de gestión y mantenimiento de infraestructura, así como la orquestación del conjunto, la integración y el versionamiento, para lo que afortunadamente existe un amplio número de aplicaciones que facilitan el proceso y hacen que compense.

Sus posibilidades son tantas que Netflix ha creado su propia plataforma de contenedores. Se llama Titus y es de código abierto.  Impulsa aspectos críticos del negocio de Netflix, desde transmisión de video, recomendaciones y aprendizaje automático, big data, codificación de contenido, tecnología de estudio, herramientas de ingeniería internas y otras cargas de trabajo de la compañía Hay que entender que Netflix lanza “hasta medio millón de contenedores y 200.000 clústeres por día”.

En los últimos años han proliferado los gestores de contenedores. En Cuatroochenta utilizamos Docker, el “padre” de los contenedores.

Por una parte Docker comenzó como un proyecto de código abierto liderado por Solomon Hykes, que adquirió gran relevancia por sus integraciones con OpenShift, AWS, IBM, Microsoft y otros. La idea de una implementación de contenedores ampliamente aceptada por proveedores de nube a bajo costo de configuración comenzó a inundar a los emprendedores tecnológicos haciendo que el proyecto creciera en popularidad rápidamente. En junio de 2015, Docker donó la especificación de imagen del contenedor y el código de tiempo de ejecución, ahora conocido como runc, a Open Container Initiative (OCI) para ayudar a establecer la estandarización a medida que el ecosistema de contenedores crece y madura.

Siguiendo esta evolución, Docker continúa contribuyendo con el proyecto containerd, que Docker donó a Cloud Native Computing Foundation (CNCF) en 2017 y el proyecto cambió de nombre; ahora es The Moby Project.

Por otra parte, Docker In es una empresa que promueve la tecnología de contenedores, ofreciendo servicios empresariales y manteniendo la versión de la comunidad. Docker cuenta con Docker Engine, un entorno de ejecución. Permite compilar y ejecutar contenedores en cualquier equipo de desarrollo y, después, almacenar o compartir imágenes de contenedor mediante un registro de contenedor, como Docker Hub. A nivel de arquitectura se compone de un servidor llamado Docker Daemon, un API y un cliente.

Virtual Machines

Containers

Además tienen la ventaja, al igual que los contenedores físicos, de poder “apilarse”, es decir, podemos agruparlos en clústeres de contenedores y, mediante los llamados orquestadores, poder gestionarlos y así trabajar con aplicaciones/servicios de mayor tamaño.

Detrás de cualquier aplicación existen muchas decisiones que van desde el correcto análisis y diseño de la propia aplicación, el modo más adecuado de dar solución al problema planteado, así como utilizar las herramientas adecuadas que permitan dotar de seguridad, continuidad y escalabilidad al proyecto. En Cuatroochenta nos preocupamos de utilizar las mejores herramientas para aportar soluciones al cliente.