Sobre Docker
Hace unos meses leí en un blog tecnológico estadounidense que, una vez cada cinco años, los profesionales en arquitectura y sistemas críticos solemos experimentar la adopción de una nueva tecnología que modifica el “cómo se han hecho las cosas” hasta el momento. Confieso que no siempre soy consciente de estas disrupciones tecnológicas (una palabra de moda para decir que las cosas están cambiando), pero durante los inicios de este 2015 he podido observar las mejoras que aportan los contenedores (o Dockers) a las empresas que los adoptan como método de despliegue de aplicaciones. Este es el caso de, por ejemplo, Ackstorm, empresa especializada en la gestión de plataformas críticas que diseña, construye y mantiene sistemas de contenedores en los principales proveedores de IaaS Cloud.
Basta decir que, desde la creación de contenedores Docker en el 2013, Docker ha registrado más de 100 millones de descargas. Solo hace falta teclear “Docker” en un buscador de Internet para darnos cuenta de la gran repercusión que está teniendo esta tecnología de despliegue de aplicaciones en servidores.
Aunque muchos piensan que el uso de contenedores está extendido en toda Europa, esta realidad no es cierta. A pesar de que algunos ya conocíamos sus funcionalidades desde el año pasado, es ahora cuando los contenedores Docker empiezan a aceptarse y a ofertase. Y todavía más importante; es ahora cuando se empieza a poder comparar su impacto en rendimiento, simplicidad de despliegue y optimización de arquitectura frente a otras arquitecturas tradicionales.
El uso más obvio de Docker lo encontramos cuando disponemos de una aplicación o servicio que “no es un buen compañero de clase”. O dicho en otras palabras; cuando una aplicación necesita muchos recursos ante un aumento de visitas, un paquete con librerías incompatibles o un paquete con dependencias que son difíciles de armonizar con el resto del sistema instalado. ¿Ejemplos de ello? Procesos de uso errático de computación-memoria, portales de uso acusado de memoria y tráfico durante periodos concretos, un proceso de Mapreduce que se lanza ante una petición de business inteligence, y un largo etcétera. En tales situaciones se proporciona a cada contenedor exactamente lo que necesita donde se necesita, sin perder ni un ciclo de CPU en tareas de coexistencia entre Host y Contenedor.
Construir un contenedor requiere el esfuerzo de empaquetar lo mínimo para que el servicio funcione. A pesar de ello, el esfuerzo merece la pena desde el primer momento ya que los grupos de escalado funcionan muy bien y la factura de la arquitectura se ajusta a las necesidades de computación en cada momento. Esto supone una vuelta de tuerca más en el ámbito del IaaS.
Después de este proceso de empaquetamiento, en una reunión de seguimiento post-migración, escucharemos los comentarios de lo bien que va esto de poder empaquetar la versión correcta de las librerías que cada aplicación necesita en cada release. Y de lo eficientes que son los Dockers a la hora de tener corriendo versiones diferentes de su aplicativo con las librerías correctas en cada contenedor.
En definitiva, los contenedores ayudan a los profesionales IT a producir los recursos de computación de su compañía a un menor precio y de manera más ágil y rápida.
Parece que esto también lo han entendido los tres grandes; el Amazon Web Services, Google CloudPlatform y Microsoft Azure (que acaba de lanzar su propia tecnología de contenedores sobre su sistema operativo). Todos están trabajando en ofrecer servicios de computación del tipo “trae tu docker y lo hacemos correr” y todos permiten ya contratar máquinas virtuales listas para correr nuestros Dockers.
Ahora Google confirma su apuesta por esta tecnología ofreciendo el siguiente paso; un orquestador de contenedores conocido como Kubernetes. Kubernetes es una herramienta de gestión Docker liberada como opensource. Se usa para desplegar contenedores a través de clusters de computadores propios y de terceros con el fin de organizar y orquestar las cargas de trabajo entre los nodos que ejecutan los Dockers. Kubernetes mantiene balanceadas las cargas de contenedores dentro de un clúster o grupo de servidores.
Pero lo realmente novedoso de Kubernetes es que ofrece la posibilidad de que los contenedores se comuniquen entre sí, sin necesidad de abrir puertos de red o realizar otros trucos de sysadmin. Está escrito en Go – al igual que Docker – por lo que la compatibilidad con la tecnología está garantizada.
A juzgar por el número de proyectos que se están posicionando en este campo, el tema de los orquestadores es importante. Será muy interesante comparar las características de cada orquestador y ver cómo evolucionan estos novedosos complementos para los ecosistemas basados en contenedores.
No es extraño, pues, que durante este año 2015 empresas especializadas en la gestión de los sistemas como lo es Ackstorm estén desarrollando consultoría en la implantación de contendores a empresas y proyectos que están en fase de migración al Cloud o que ya cuentan con infraestructuras desplegadas en la Nube.
Además, durante este año también se espera que los profesionales de sistemas veamos crecer o desaparecer orquestadores de contendores como Heroku-docker, Docker Node Tester, DickerSh y como no… Kubernetes.