CONTENEDORES: ¿Por qué se prefieren antes que las máquinas virtuales?

Según la definición de Docker, “un contenedor es una unidad estándar de software que empaqueta código y todas sus dependencias. Así la aplicación se ejecutará rápida y confiablemente de un entorno informático a otro”.

De esta forma, el contenedor es un paquete de software donde se extrae el código de la aplicación, sus bibliotecas y dependencias, los archivos de configuración y las herramientas del sistema. Todo para la operación de una aplicación.

Para entender mejor los contenedores, pensemos en los contenedores físicos. La industria marítima moderna funciona tan bien porque estandarizó los pequeños envíos en grandes contenedores de envío. Antes de este estándar, enviar cualquier objeto o alimento a granel era complicado. Con los contenedores, diversos productos se transportan en un mismo lugar. Esa misma filosofía sigue el contenedor de software.

 

Contenedores versus máquinas virtuales

Según TechTarget, “los contenedores son diferentes de la virtualización del servidor, ya que una arquitectura virtualizada emula un sistema de hardware”.

Cada máquina virtual puede ejecutar un sistema operativo en un entorno independiente y presentar a la aplicación, mediante abstracción, un sustituto de una máquina física. El hipervisor emula el hardware de las CPU agrupadas, la memoria, el almacenamiento y los recursos de red, que pueden ser compartidos numerosas veces por varias instancias de máquinas virtuales.

Las máquinas virtuales simulan todo el equipo y el sistema operativo. Esto significa que las máquinas virtuales han simulado recursos de CPU, RAM, filesystems y red. En cambio, los contenedores solo virtualizan el espacio de usuario de un sistema operativo existente. En este sentido, los contenedores son mucho más ligeros que las máquinas virtuales.

Según VMWare, los contenedores han ganado popularidad desde la versión de Docker en 2013, en parte como respuesta a la cantidad de recursos que consumen las máquinas virtuales. Dado que los contenedores viajan en el sistema operativo de un servidor, comparten esa única instancia del sistema operativo.

Por tanto, los contenedores solo deben incluir código de aplicación. Sea en forma de una sola aplicación monolítica o microservicios que se agrupan en uno o varios contenedores para abarcar una función determinada.

 

¿Cómo funcionan los contenedores?

De acuerdo con Atlassian, para entender los contenedores, primero debemos discutir la virtualización. La virtualización es el acto de dividir los recursos computacionales compartidos: CPU, RAM, Disco y Redes en recursos aislados. Al virtualizar una máquina mediante máquinas virtuales (VM) o contenedores, los recursos de la máquina host se dividen esencialmente en sectores para que los componentes virtualizados los usen.

“Los contenedores virtualizan un sistema operativo de máquinas en el nivel de espacio de usuario. La virtualización del espacio de usuario aprovecha los mecanismos existentes que dividen los recursos del sistema entre cuentas de usuario y programas independientes en un sistema operativo”, afirma el sitio web.

 

Usos comunes de contenedores

Los contenedores se emparejan con frecuencia con microservicios y la nube. Pero también ofrecen ventajas a las aplicaciones monolíticas y a los centros de datos locales.

Los contenedores están bien adaptados para funcionar con microservicios. Ya que cada servicio que conforma la aplicación se empaqueta en un contenedor escalable de forma independiente.

Por ejemplo, una aplicación de microservicios se puede componer de servicios en contenedores que generan alertas, registran datos, controlan la identificación del usuario y proporcionan otros servicios.

Cada servicio opera en el mismo sistema operativo mientras permanece aislado individualmente. Cada servicio puede escalar para responder a la demanda. La infraestructura en la nube está diseñada para este tipo de escalado elástico e ilimitado.

 

Beneficios de utilizar contenedores

De acuerdo con la información de IBM, la principal ventaja de los contenedores es, proporcionar “un nivel de abstracción que los hace ligeros y portátiles”. A continuación, explicaremos los siguientes beneficios.

  • Los contenedores son ligeros: Los contenedores comparten el kernel del sistema operativo de la máquina. De esta forma, elimina la necesidad de un sistema operativo por una aplicación. Haciendo que los archivos de contenedor sean pequeños y fáciles de obtener en los recursos. Su tamaño más pequeño, especialmente en comparación con las máquinas virtuales, significa que pueden admitir aplicaciones nativas en la nube que se escalan horizontalmente.

 

  • Portátil e independiente de la plataforma: Los contenedores llevan todas sus dependencias. Esto significa que el software se puede escribir una vez. Después de ello, puede ejecutarse sin necesidad de volver a configurarse en equipos portátiles, entornos informáticos locales y, por supuesto, en la nube.

 

  • Soporta desarrollo moderno y arquitectura: Debido a una combinación de su portabilidad/coherencia de implementación entre plataformas y su pequeño tamaño, los contenedores son ideales para patrones de apps. Por ejemplo, para DevOps, serveless y microservicios.