ICM / azuretitle_li=linuxtitle_li=tecnología / Container vs Instancia

Container vs Instancia

1 junio 2022 | Lluis Pons

Hoy nos centraremos en dos conceptos habituales en las conversaciones cuando hablamos de computación en la nube el Container vs Instancia.

Comenzaremos con los contenedores.

Podríamos marcar como fecha aproximada de su nacimiento en 1979 con el sistema operativo Unix V7 donde nace el comando chroot y que permite cambiar el directorio principal a otra ubicación del sistema y crear un entorno para un proceso aislado.

A partir de aquí y hasta la fecha de hoy los containers ha pasado por diferentes tecnologías y sistemas operativos hasta llegar a nuestros días, pasando por FreeBSD (Jails) , Solaris(Solaris containers) y Linux(Vserver, OpenVZ, LXC, Docker, Containerd…)

Todos ellos tienen en común que agrupan y aíslan grupos de procesos que comparten el mismo núcleo del sistema operativo.

La ventaja principal de los container vs la instancia es que aprovechan al máximo el hardware del que disponen y no realizan emulaciones de sistemas completos a diferencia de las máquinas virtuales donde hay un hypervisor que dedica parte de los recursos de hardware para su huso posterior de las aplicaciones.

El concepto instancia

Por su lado el concepto instancia nace de las máquinas virtuales.

Desde hace muchos años las máquinas virtuales y los entornos de virtualización forman parte de nuestro día a día. Aunque sus inician se remontan a los años 60 del pasado siglo su popularización de uso a nivel global nos traslada a los mediados de la primera década del siglo XXI.  Con VMware a principios de siglo comienza la era de los hypervisores y todas las ventajas que no han brindado durante estos años y que continúan vigentes hoy en día.

Cuando definimos una máquina virtual tradicional le asignamos los recursos de hardware que queremos para ese servidor. CPU, Memoria RAM, disco, dispositivos de red, tarjetas gráficas, dispositivos de entrada.

Queda todo definido en el fichero de configuración del servidor durante su vida útil. Y las modificaciones que se realizan se basan en estas configuraciones para cada una de ellas.

Objetivos de una instancia vs container

El concepto Instancia nace de los entornos de nube pública o privada.

La idea principal es desacoplar los diferentes elementos de una máquina virtual para que sean independientes entre ellos y puedan ser intercambiables sin que los procesos o datos que gestionan se vean afectados entre cambios.

Por lo que los elementos de computación, los de almacenamiento y conectividad quedan separados en las instancias y se pueden cambiar de forma cómoda y “fácil”.

Las instancias normalmente vienen predefinidas con unos recursos de hardware a nivel de CPU y memoria que habitualmente son fijos y si queremos más recursos solo tenemos que cambiar el tipo de instancia.

En lo que respecta a la parte del almacenamiento normalmente se dispone discos separados para el sistema operativo y los datos.

Los discos de sistema operativo suelen ser sistemas operativos ya configurados por el proveedor con todas las configuraciones necesarias para su funcionamiento. Y que podemos cambiar en caso de necesidad de forma rápida. Mientras que los datos residen en otro tipo almacenamiento preparado para ello.

Y con la conectividad nos pasa algo parecido podemos agregar o quitar tarjetas de red de forma dinámica y conseguir la conectividad adecuada.

Esto siempre acompañado de las APIs proporcionadas por los proveedores que son la clave de la automatización. Esto ha dado lugar al conocido término de Infraestructura como código y que permite desplegar sistemas complejos mediante scripts.

Container vs Instancia