Los contenedores, tu mayordomo digital
La tecnología de Docker y Kubernetes aplicada a la industria 4.0 no resulta sencilla de explicar, pese a la incuestionable influencia positiva que se han ejercido recíprocamente, de modo que el autor se sirve de la imagen de Atlas Tecnológico como un barco en el que los usuarios disponen de varios camarotes y reciben diversos servicios, una forma sencilla de entenderla
Es muy raro encontrar artículos o referencias a Docker, Kubernetes, rkt, sigularity, etc cuando buscas “Industria 4.0” o “Industria conectada”. Pero creo firmemente que la relación entre ambos es directa: los contenedores no serían lo que son hoy si no fuera por el paradigma de la industria 4.0 y está no sería tan eficaz si no fuera por los contenedores.
La digitalización, las tecnologías emergentes y la cada vez mayor necesidad de tenerlo todo en la nube, ya sea de forma privada o pública, han permitido que estos “pequeños” elementos crezcan como la espuma. Pero ¿qué son los contenedores? ¿Qué es Docker, Kubernetes…? ¿Por qué tienen tanta importancia? Vamos a intentar explicarlo.
El contexto
Quiero usar un ejemplo, una historieta, más visual. Me gustaría ambientarlo en una empresa que, para ser original, llamaremos Atlas Tecnológico. Esta se dedica a transportar empresas de un mundo antiguo -donde las aspiraciones no son muy altas, el trabajo es muy poco agradecido, seco y muchas veces repetitivo y el ambiente no es el más agradable-, a un mundo nuevo, solo apto para quienes quieran ser más productivos, más entregados con su gente y su entorno y con intención de mejorar cada día más.
Para ello, Atlas tiene cuatro buques (Rumbo, Sherpa, Sr. Lobo y Alfa). Cada uno hace una ruta diferente y tiene unos clientes diferentes. Rumbo, por ejemplo, es un buque para trayectos más cortos. Está pensado para los clientes que simplemente necesitan de un proveedor de logística. Las empresas se organizan el viaje y Atlas solo aporta el proveedor. Por otro lado, está Alfa, por ejemplo, que es el buque insignia y donde el trayecto es más largo. Está cargado de servicios. Este buque está pensado para las empresas que quieren que los acompañen desde el principio al final del viaje y quieren disfrutar de los servicios que aporta Atlas, no solo durante el trayecto.
Los contenedores
A los buques en su conjunto los llaman “los nodos”. Es donde ocurre toda la magia del viaje. A los nodos, para alegría de Atlas, se han subido un montón de empresas y colaboradores. A las empresas se les llama namespaces. Entre ellas, a priori no hay ninguna relación y están “aisladas” unas de otras. Cada una está especializada en un conjunto de procesos y tiene unos objetivos concretos.
Antes de comenzar su viaje, a cada namespace se le ha asocia uno o varios camarotes del buque. Cuando un namespace llega, se evalúa su tamaño y con eso se especifica cuántos camarotes va a ocupar. A los camarotes les llamaremos “contenedores”. Cuando un namespace hace la reserva de un viaje puede contratarlo para un departamento solo o para toda la empresa. Sabiendo que esto es así y por favorecer las cuestiones de gestión y lógica, se han distribuido los camarotes por departamentos de la empresa. Cada departamento usará un contenedor. Cuando al namespace se le asigna uno o varios camarotes, se forma lo que se llama “Pod” o “compose”.
De todos es sabido que un buque no podría funcionar sin su personal de servicio y su capitán. Al personal de servicio se les llamado “API” porque su misión es ayudar a cada pod durante todo el tiempo que estén a bordo, para que su viaje sea lo más cómodo y llevadero posible. Los pods piden y siempre que esté en sus manos, les sirven sin dudarlo. Por otro lado, está el capitán y la tripulación. Comúnmente son llamados los “Máster” porque, a la vez que intentan satisfacer las necesidades de todos los pasajeros y personal de servicio, luchan por mantener el buque a flote en medio de una tormenta o cuando hay mucho tráfico marítimo.
Por último, a bordo tenemos el colaborador, también llamado “volumen”. Este contiene toda la información que necesitan los pods. Hay algunos que, cuando el pod se baja del buque, se bajan también y si algún día vuelven a subir nadie se acuerda de nada. Otro tipo de volúmenes son aquellos que se quedan en el buque a no ser que el máster los eche con la idea de que si los pods vuelven a subir todo siga como estaba cuando se fueran. Por último, si el Máster así lo indica, el volumen puede compartir parte de su información con el resto de pods que hay en el buque y así mejorar la calidad del servicio.
Cuando todo está en su sitio y Atlas da su visto bueno, el capitán da la orden para comenzar con el trayecto. Cada uno empieza a trabajar en su misión y el buque comienza el viaje. Hay veces que si el Máster ve que la carga de trabajo de su nodo es muy alta, solicita poner en marcha otros buques que permitan relajar la carga y hacer que los pasajeros puedan disfrutar con más calma de su viaje.
Esto es, muy por encima, lo que es el mundo de los contenedores. Una herramienta que, en palabras de Collabnix, “es una pieza de software liviana, independiente, empaquetable y ejecutable que incluye todo lo que necesita para correr: código, runtime, herramientas de sistema, librerías y configuraciones”. Es cierto que un buque no es liviano, pero el esquema de los contendores de un buque de carga lo representa bien. He puesto el ejemplo de Atlas porque creo que representa todavía mejor el objetivo que no es otro que ayudar a simplificar los procesos y fomentar la colaboración entre las empresas para mejorar la calidad. Por otro lado, he usado a Atlas porque su metodología me servía para ambientar mejor el ejemplo.
¿Por qué tiene tanta importancia para un desarrollador? Por tanto, y siendo ya un poco más técnico el de los contenedores es un software independiente que puede ejecutarse por sí mismo y que, alojado en la memoria del anfitrión, ajusta sus características para obtener la funcionalidad requerida.
Esto, para los desarrolladores de aplicaciones web, es como el regalo de Reyes que siempre has querido de niño. Facilita sobremanera el trabajo de la implantación y mantenimiento de las aplicaciones ya que “Docker [los contenedores] elimina las tareas de configuración repetitivas y mundanas durante todo el ciclo de vida del desarrollo para un desarrollo de aplicaciones rápido, fácil y portátil: escritorio y nube. La plataforma integral de Docker incluye UI, CLI, API y seguridad que están diseñadas para trabajar juntas en todo el ciclo de vida de la entrega de aplicaciones” (https://www.docker.com/)
En resumen, es como si te dijeran: tú dime qué quieres y encárgate del código, que yo me encargo de que funcione siempre. Lógicamente hay que preparar esa imagen que corre en el contenedor y decirle al Máster lo que quieres, pero eso siempre es mucho más rápido y fácil que tener que preocuparte de instalar tu Sistema Operativo, actualizarlo, configurarlo, configurar toda la seguridad, montar el servidor web, montar las máquinas virtuales, etc.
Juan Ignacio Cantero es experto en desarrollo de la industria 4.0 del Instituto de Tecnología Cerámica y colaborador de Atlas Tecnológico