Bases de datos, dependencias, trabajos cron… Las aplicaciones de hoy en día tienen tantas capas que no es una sorpresa que mover cosas lleve mucho tiempo. Pero no tiene por qué ser así. Hoy en día, se puede enviar software a prácticamente cualquier entorno, y estar en funcionamiento en segundos. Entra en Docker.
Entrega de software
La entrega de software solía ser fácil. La parte difícil era programar, pero una vez que terminabas te encargabas del producto, tal vez arreglabas algunos errores, y eso era todo.
Más tarde, con la «pila LAMP» (Linux, Apache, MySQL, PHP) – que fue ampliamente apoyada por las empresas de hosting – las cosas se complicaron un poco más, pero todavía eran manejables. Podías entregar sitios dinámicos vinculados a bases de datos y configurar todo a través de paneles de control.
Pero en tiempos más recientes, el escenario se ha vuelto aún más diverso y exigente, a medida que las nuevas tecnologías han irrumpido. Las bases de datos NoSQL y Node.js, lenguajes de programación como Python y Ruby, han ganado en prominencia. Todo esto y más ha abierto muchas posibilidades, pero ahora la entrega de software ya no es tan fácil.
Implementación
Las aplicaciones se han vuelto difíciles de implementar. Incluso si consigues un servidor dedicado, todavía tienes que ocuparte de la instalación y la configuración, e incluso del mantenimiento necesario para que todo funcione. Y aún así, con todo funcionando, dado que ahora estás en sistemas complejos y estrechamente acoplados con diferentes servicios y lenguajes de programación, siempre existe la posibilidad de que las cosas se rompan de repente.
Docker al rescate
Docker hace que la entrega del software sea fácil de nuevo. Docker te permite configurar todo: el software que has desarrollado, el sistema operativo en el que se ejecutará, los servicios que necesita, los módulos y las herramientas de fondo como las tareas cron. Todo puede ser configurado para ejecutarse en minutos, con la garantía de que funcionará tanto en el sistema de destino como en tu entorno de desarrollo.
Los problemas que resuelve Docker
Estos son algunos de los problemas con los que te encontrarás en algún momento de la entrega del software:
La aplicación que desarrollaste cuidadosamente con tu lenguaje favorito (Python, Ruby, PHP, C) no parece funcionar en el sistema de destino, y no puedes entender por qué.
Todo funcionaba bien… hasta que alguien actualizó algo en el servidor, y ahora ya no lo hace.
Una dependencia menor (por ejemplo, un módulo que se usa sólo ocasionalmente, o un trabajo de cron) causa problemas cuando tu cliente usa el software … Pero estaba funcionando bien en tu computadora cuando lo probaste!
Contenedores de software
Probablemente esté familiarizado con esos grandes contenedores de transporte estandarizados que existen para simplificar la entrega en todo el mundo
Puedes poner casi todo en uno, enviarlo a cualquier parte, y en el otro extremo descargar lo que está allí – un coche, algunos muebles, un piano – en exactamente la misma condición original.
En el desarrollo de software, podemos pasar días intentando que las cosas funcionen en un entorno diferente, sólo para que fallen un par de días después. Es más fácil y rápido enviar un coche en funcionamiento a un continente diferente que entregar un software que funcione de forma fiable. ¿No es un poco embarazoso?