¿Por qué todo el mundo habla de Docker en el IoT Industrial?

22 de diciembre de 2020, by Isidro Nistal

Con docker, la agilidad y capacidad de adaptación al cliente así como la seguridad de que los cambios implementados en cada ciclo de desarrollo van a funcionar en producción, es mucho mayor.

La Tecnología Docker comenzó a usarse por los grandes gigantes tecnológicos (RedHat primero y después Microsoft, Amazon, IBM etc…) en el años 2013, mismo año donde se liberó el código. 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. 

¿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.

¿Qué es docker?

Docker es una plataforma de software que permite crear aplicaciones empaquetadas en contenedores, que incluyen todo lo necesario para que la aplicación se ejecute.

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.

¿Qué aporta Docker al iOT Industrial para que sea tan especial?

1. Docker es «estándar» y … «consistente de un entorno a otro»

Docker containers

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 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.

2. Docker «..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.

Descubre máss sobre: Cómo optimizar despliegues de IoT Con contenedores Docker

3. Docker es «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.

Ventajas de Docker

1. Retorno de inversión

Como en toda configuración, al principio en Docker también hay que dedicar tiempo para preparar los servidores y adaptar las aplicaciones para que funcionen. Pero ese tiempo no cae en saco roto, ya que según los siguientes puntos podrás ver que en cada proyecto supone un ahorro de tiempo en TODOS los departamentos.

2. Más velocidad

Al no tener que arrancar un sistema operativo como ocurre en una VM, un contenedor Docker es capaz en arrancar de forma inmediata o en cuestión de segundos.

3. Aislamiento y seguridad

Si se configura, cada despliegue (que suele contener uno o varios contenedores) puede estar en una subred aparte de forma aislada.

En el caso que entre algún tipo de virus o malware, solo afectará a esa estructura de contenedores, y no al resto. Utilizando Docker-Compose cada despliegue ya se realiza de forma automática en una subred independiente.

3. Posibilidad de probar el mismo código en diferentes entornos en segundos (cambio de versión de TOMCAT, JAVA, PHP, etc.)

El mismo código puede ser compartido entre diferentes contenedores, y cada contenedor puede tener una versión diferente de, por ejemplo, un apache.

De esta manera, sabemos cómo reacciona el mismo código al cambiar ese factor de nuestro entorno. Esto simplifica el seguimiento de compilaciones, la ramificación y el control de versiones para aplicaciones multiservicios, mientras itera de forma independiente el código sin romper la aplicación.

4. Facilita el testing

Docker puede hacer que las pruebas de control de calidad sean más fáciles, rápidas y efectivas. Los contenedores se pueden configurar para que solo contengan una parte o partes de toda la configuración del entorno.

5. Portabilidad

Los contenedores se crean bien por líneas de comando, o bien mediante un archivo de plantilla (Docker-Compose). Igualmente todo funciona bajo Docker. Es decir, si lanzamos el mismo comando o usamos la misma plantilla (teniendo en cuenta los volúmenes y un par de detalles propios del hierro, como la RAM y la CPU, si se especifica), el contenedor que funciona en la máquina A será exactamente igual que el contenedor que funciona en la máquina B. Por tanto, no habrá ninguna variación entre los entornos de desarrollo, pre-producción o producción.

Ahora ya sabemos lo que implica un docker o 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

Habla con nuestros expertos si quieres que estudiemos tu caso de uso