La tecnología docker lleva con nosotros desde 2013, año en que se liberó el código y comenzó su uso por los grandes gigantes tecnológicos (RedHat primero y después Microsoft, Amazon, IBM etc…). 

Su uso a día de hoy es masivo, no hay empresa ni organización que de forma consciente o inconsciente no esté usando docker en alguna de sus áreas. 

Pero ¿qué hace a Docker tan especial? ¿Por qué se oye tanto “runrún” en el mundo tecnológico? ¿Cómo ha evolucionado y donde se encuentra actualmente? ¿Cómo influye en las empresas industriales? ¿Cuál es su relación con el IoT/Edge computing?

En una serie de artículos vamos a explorar el impacto de Docker a nivel tecnológico, estratégico y  de negocio en las organizaciones,  así como algunas de sus aplicaciones más interesantes en el mercado.

Según su propia página web Docker es:

“Un contenedor es una unidad de software estándar que incluye en un paquete tanto el código como las dependencias de una aplicación  de forma que ésta pueda correr de forma rápida y consistente de un entorno a otro.  Un contenedor es un paquete de software ligero, autocontenido y ejecutable con todo lo que necesita una aplicación: código, herramientas del sistema, librerías y configuraciones”

¿…y? Tres aspectos de esta definición son la clave para entender la revolución que supone Docker en la industria del desarrollo

Primero, “…estándar…” “…consistente de un entorno a otro”

Esta es la primera clave de docker o la tecnología de contenedores, su capacidad para estandarizar las aplicaciones. Ya hace bastantes años que un buen desarrollo de aplicación no es nada sin una tecnología de despliegue a la altura. 

En todos los ámbitos se oye hablar de metodologías agile, iteraciones de producto rápidas, adaptación al cliente y mercado etc… En el mundo de la programación esto se traduce en ser capaz de tener tus aplicaciones corriendo de forma estable con cada nueva versión lo más rápido y de la forma más segura y robusta posible.

De nada sirve un equipo de desarrollo que haga una nueva capacidad para un cliente en una semana si en el proceso de despliegue, calidad y test se tarda más de un mes

Los contenedores estandarizan las aplicaciones a nivel de despliegue y homogeniza su ejecución en los distintos entornos, bien sean cloud o locales. Esas pequeñas piezas de software que el equipo de desarrollo compone son fácilmente ejecutables para el equipo de despliegue y le dan consistencia a la solución.

Como director de producto en Barbara IoT ya tomamos la decisión de incluir nuestras aplicaciones en contenedores desde el principio y a la larga vemos que fue la decisión correcta. La capacidad de adaptación al cliente y la seguridad de que los cambios implementados en cada ciclo de desarrollo (típicamente 2 semanas) van a funcionar en producción, es mucho mayor. 

Como jefes de producto los contenedores nos permiten ahorrar costes de despliegue, versatilizar las opciones del cliente con opciones locales (On-Prem) e incluso de diferentes proveedores de cloud dado que esa estandarización permite una migración barata y segura.

Segundo “…incluye en un paquete tanto el código como las dependencias de una aplicación…”. 

Un contenedor es autocontenido, incluye código, librerías, configuraciones y dependencias.

Hay que tener en cuenta la complejidad que tiene desarrollar aplicaciones en el ordenador del desarrollador, testearlas en el ordenador de calidad, probarlas en el servidor de la empresa y finalmente desplegarlas en el cloud del proveedor de turno.

La tecnología de contenedores hace que este proceso sea consistente. El software lleva todo lo necesario para correr dentro del contenedor y con la versión que el desarrollador ha decidido.

Se acabó el infierno de las versiones de librerías, de sistemas operativos, de sistemas de ficheros. La imagen del contenedor funciona donde la ejecutes desde el ordenador local, al servidor edge tirado en el campo.

Tercero “ligero” y “rápido”

¿Por qué no usamos máquinas virtuales? La tecnología de virtualización es mucho más pesada, se emula todo el HW del sistema además del software. Los contenedores son rápidos y ligeros y permiten iteraciones y despliegues acordes. 

Los equipos de producto pueden generar y mantener capacidades de forma fácil y en arquitecturas más modulares, ahorrando costes y mejorando los tiempos de desarrollo y despliegue.

Ahora ya sabemos lo que implica un docker/contenedor. En los siguientes artículos nos centraremos en las distintas aplicaciones de esta tecnología y sus beneficios a la hora de generar valor en los distintos ámbitos de la empresa, desde los servidores cloud hasta los dispositivos de campo IoT.


Si quieres saber más Docker, y cómo el software de Barbara IoT puede ayudarte, ponte en contacto con nosotros