Una de las últimas tecnologías de moda en las startups es Docker, un software que te permite empaquetar tu proyecto con todas sus dependencias en un sencillo binario, de forma totalmente aislada al resto de proyectos que puedan residir en la misma máquina. Su fundamental diferencia con las ya establecidas máquinas virtuales es que los contenedores comparten el mismo sistema operativo anfitrión, conteniendo solo lo estrictamente necesario para ejecutar la app, mientras que las máquinas virtuales también incorporan un sistema operativo. Esto repercute en el rendimiento enormemente: al haber menos capas entre el metal y la aplicación, se ganan milisegundos de latencia preciada. Los tiempos de arranque de un container Docker son además prácticamente instantáneos.
Este año 2015 está viendo muchos cambios en torno a como está concebida la web, y Docker es uno de los grandes. Se está convirtiendo en el estándar de facto para aislar unas aplicaciones de otras en el servidor, y grandes corporaciones como Spotify, Ebay o Yandex ya lo están usando ampliamente en producción. Sin embargo, Docker tiene algunas inconveniencias: aunque sea más óptimo que usar máquinas virtuales, sigue siendo una capa entre el sistema operativo y el código que hace que no sea 100% óptimo.
Además, con el auge de Docker se está desatando una moda bastante acentuada, que implica que muchos desarrolladores web están usando esta tecnología, cuando en muchos casos no es necesaria para que la app funcione correctamente ni abarata costos. Docker está principalmente dirigido a grandes corporaciones con miles de líneas de código, proyectos muy dispares entre ellos y de diferentes épocas, todas ejecutándose en máquinas muy distintas. Este fenómeno de usar una tecnología porque esté de moda es cada vez más frecuente, hay que procurar diferenciar entre que es una moda pasajera y que es una tecnología que ha llegado para quedarse.
En muchos casos hacer una migración máquinas virtuales a Docker requiere reescribir toda la infraestructura de la aplicación, lo cual puede suponer muchas horas dependiendo de lo grande que sea. Esto hace que muchas empresas decidan no pasarse a Docker y apuesten por tecnologías ya establecidas. Esto cambiará dentro de unos años, cuando la mayoría de las startups basen su infraestructura en Docker desde un principio, favoreciendo el mantenimiento e integración continua del proyecto.
Configurar un container Docker es muy sencillo, y esta es una de sus mayores virtudes: un archivo llamado Dockerfile se encarga de recopilar todas las órdenes que le damos al contenedor. La sintaxis es concisa y muy legible, podéis obtener una referencia completa en la documentación del proyecto. El hecho de que la interfaz de configuración de Docker sea texto plano hace que sea muy fácil compartir una configuración genérica para un tipo de aplicaciones con el resto del mundo a través de servicios como Github, apoyando así el movimiento del código abierto y la colaboración entre desarrolladores. Muchos ejemplos de Dockerfiles que automatizan la puesta a punto de containers los podemos encontrar en la cuenta Github de Dockerfile, la cual está repleta de configuraciones de todo tipo listas para usar, como containers con nginx, ElasticSearch o Node, entre muchos otros.
Esta automatización esta haciendo cada vez más sencillo el trabajo de los desarrolladores, que dejan de depender en un sysadmin para configurar un servidor para su aplicación y lo hacen de una manera sencilla, tan solo creando un archivo y ejecutando Docker. Esa es una de las mayores virtudes de esta herramienta: cualquier usuario con una línea de comandos puede configurar un container a su gusto en cuestión de segundos.
Docker es una herramienta por la que definitivamente merece la pena apostar, y más teniendo en cuenta que todo apunta a que sera el estándar en software de containerización en un futuro próximo. A la hora de idear un proyecto, es decisión tuya si estás dispuesto a sacrificar un poco de rendimiento a cambio de un proceso de implementación más sencillo, seguro y cómodo.