En una industria tan propensa a las modas de aparición súbita – lo que no quiere decir que sean insustanciales – a pocos extrañará la rapidez con la que se ha extendido el ruido sobre Docker, un motor open source que automatiza el desarrollo de aplicaciones. Uno tras otro, grandes nombres del sector se suman a la corriente en favor de los contenedores, cuyo exponente es Docker: están, por supuesto, los múltiples vendedores de distribuciones Linux, a los que se añaden, Google, IBM, Microsoft y VMware, entre otros, una lista que crecerá próximamente. Un informe de Forrester Research vaticina que 2014 no ha sido nada comparado con lo que vendrá en 2015, el apogeo de una moda elevada a fenómeno.
En el pasado VMworld se lanzó el mensaje según el cual VMware soportará Docker en su propia suite, a pesar de que – al decir de muchos – los contenedores deberían verse como una amenaza para la virtualización, a la que aquella debe su éxito: la conversión al nuevo credo del datacenter definido por software (SDDC) obliga a VMware a dar ese paso. El acuerdo entre VMware y Docker (la empresa) implica que trabajarán juntas para asegurar que Docker (el software) pueda trabajar sobre estaciones de trabajo que usen VMware Fusion, servidores de centros de datos bajo vSphere y vCloud Air.
De RedHat y Canonical (Ubuntu) podía esperarse su alineamiento con Docker, que a fin de cuentas es de su galaxia. Más llamativo ha sido el anuncio de Microsoft de incorporar una tecnología alineada con Docker Engine en su próxima versión de Windows Server, que saldrá a mediados del año próximo.
De Solomon Hykes, CTO de la empresas que lleva el nombre de Docker, se puede decir que es el padre de la criatura. La gestó como proyecto interno en una pequeña empresa entonces llamada dotCloud, y para marzo del 2013 ya estaba en condiciones de lanzar las herramientas necesarias para construir aplicaciones distribuídas, automatizando su creación y despliegue mediante contenedores, definidos como una forma light de virtualización.
Hykes no es uno de esos fundamentalistas de Linux que regurgitan nada más oir el nombre de Microsoft. Al conocer el anuncio sobre Windows Server, lo calificó de «un mensaje muy importante para la comunicad TI: el papel futuro de Docker no es el de ser una herramienta para hipies sino un componente de la corriente central de las TI […] No es todavía un producto, pero hay una declaración de compromiso de Microsoft, que nos tomamos muy en serio». Según Hykes, el valor de tener a Microsoft a bordo es que viene a decir a los desarrolladores: «tu aplicación podrá correr en Azure, en una máquina de Amazon o en una de tu cliente, tanto como en tu propia portátil, y podrá correr tanto en Linux como en Windows». Por otra parte, reconoció que estar bajo el paraguas de Linux no es algo simple: hay que atender a diferentes sabores del sistema operativo, por lo que habría decenas de maneras de desplegar contenedores: si Microsoft, en su viraje estratégico, empieza a arrimarse a Linux, ¿qué tendría de malo para alguien como Hykes?
En realidad, la propia Microsoft se ha ocupado de relativizar el entusiasmo por su anuncio. El nuevo CTO de Azure, Mark Russinovich, ha declarado que el compromiso no es incondicional hacia Docker, al que objeta fallos de seguridad, sin concretarlos. Microsoft sigue extendiendo las variantes open source soportadas por Azure, y en este movimiento hay que incorporar la integración con Kubernetes (el contenedor de Google) y su propio proyecto Drawbridge, todos con parecidos propósitos.
Hace pocas semanas, este blog se ocupó de las mejoras que introduce la noción de DevOps para la productividad, la optimización y las relaciones entre los desarrolladores y el personal de operaciones en las empresas. Hasta cierto punto, se podría hablar de modas, pero no hay duda de que la adopción de DevOps se ha extendido como la pólvora, y todo indica que está ocurriendo lo mismo con Docker.
Haciendo abstracción de los conceptos técnicos y de la arquitectura que está detrás, en esencia Docker es una plataforma de código abierto, basada en el kernel de Linux, que permite desplegar varios tipos de aplicaciones en la nube de forma ligera, dinámica y segura con el fin de que puedan ser ejecutadas prácticamente en cualquier entorno. Para ser precisos, habría que resaltar que Docker profundiza en la idea de ´paquetizar` el software a través de contenido.
No es una idea completamente nueva. Los contenedores empezaron a usarse allá por el 2000 (con FreeBSD) y desde entonces ha sido usado bajo una forma u otra por empresas como Sun/Oracle (con Solaris) y por Google, que contribuyó a darle notoriedad con su propia variante Kubernetes.
No hace falta ser experto en programación para entender que una de las tareas más arduas que afrontan los desarrolladores es la necesidad de testear sus aplicaciones en todos los entornos en los que van a ser ejecutadas. Esto crea innumerables dependencias, tanto con respecto al hardware como en el software. Hasta ahora, para eludir ese problema, muchos han optado por desplegar aplicaciones embebidas en máquinas virtuales, con lo que se aseguran una ejecución controlada a priori.
Sin embargo, el despliegue de aplicaciones a través de VM tiene como principal desventaja el tamaño del fichero que genera: el hipervisor necesita emular el hardware en modo virtual, exigiendo más requisitos al sistema. Por el contrario, Docker sustituye el hipervisor por el llamado Docker Engine, que facilita el despliegue de aplicaciones mediante el uso de contenedores: es mucho más ligero, al reducir el tamaño a su mínima expresión.
El modelo que propone Docker es sencillo: hay que desarrollar la aplicación usando los contenedores mediante cualquier lenguaje y/o entorno, después, se envía ´docklerizada` y, por último, se ejecuta de manera flexible, con la posibilidad de escalar hasta 1.000 nodos y moverla entre el/los datacenter y la nube. En definitiva, el despliegue de aplicaciones mediante Docker es un modelo en auge porque cada vez más empresas necesitan desplegarlas.
Y eso porque las empresas no pueden permitirse (en realidad no lo necesitan) tener un equipo de desarrolladores específico para llevar a cabo el testeo en diversos entornos. Con lo que el caldo de cultivo para una solución como Docker está servido. Si la actual fuera una primera oleada de entusiasmo, en la siguiente – a partir de 2015 – sonaría la hora de las migraciones y las herramientas de gestión, que como bien saben las empresas de la órbita Linux, son la crema del mercado.
De hecho, circulan estimaciones subjetivas de en torno a 400 millones de dólares como valor del negocio en torno a Docker. Uno de los últimos anuncios, en la conferencia de Amazon Web Services, fue el soporte nativo de Docker en el servicio EC2. Volviendo al informe de Forrester, que firma el analista Dave Bartoletti, lo presenta como «una disrupción en el mercado de virtualización de servidores, y un estímulo para la mayor adopción de tecnologías basadas en la nube».
En cualquier caso, sea mediante contenedores al uso, a través de Docker o de cualquier otro modelo, el despliegue de aplicaciones es un problema persistente, que es necesario simplificar de una forma u otra, ya que la demanda es cada vez mayor y el ciclo de vida de las aplicaciones requiere una ´democratización`. ¿Será pertinente esta expresión tomada de la esfera social?
[basado en un informe de Daniel Comino]