La “contenerización” (o contenedorización) de aplicaciones es un método de virtualización a nivel de sistema operativo que se utiliza para implementar y ejecutar aplicaciones distribuidas sin iniciar una máquina virtual (VM) completa para cada aplicación.
En el proceso de contenerización, múltiples aplicaciones o servicios aislados se ejecutan en un solo host y acceden al mismo kernel del sistema operativo.
Los contenedores funcionan en sistemas completos, instancias en la nube y máquinas virtuales; en Linux, en sistemas Windows y en algunos Mac.
¿Como funciona la Contenerización de Aplicaciones?
Los contenedores de aplicaciones incluyen los componentes del ambiente de ejecución, como archivos, variables de entorno y bibliotecas, necesarios para ejecutar el software deseado.
Los contenedores de aplicaciones consumen menos recursos que una implementación comparable en máquinas virtuales.
Y esto porque los contenedores comparten recursos sin un sistema operativo completo para respaldar cada aplicación.
El conjunto completo de información a ejecutar en un contenedor se llama imagen.
El motor del contenedor despliega estas imágenes en los hosts.
La tecnología de contenerización de aplicaciones más común es Docker, específicamente el motor de código abierto Docker Engine.
Y el contenedor basado en el entorno de ejecución universal: runC.
Algunos usuarios manifiestan prevención por el bloqueo de proveedores comerciales de contenedores de aplicaciones.
Pero esto se ve atenuado, en parte, por la gran oferta de tecnología de código abierto de productos de contenedores.
La contenerización de aplicaciones funciona con microservicios y aplicaciones distribuidas, ya que cada contenedor trabaja independientemente de los demás y utiliza recursos mínimos del host.
Cada microservicio se comunica con otros a través de las interfaces de programación de aplicaciones, a través de una capa de virtualización de contenedores, para satisfacer la creciente demanda de un componente de aplicación y distribuir la carga.
Esta configuración también incentiva la flexibilidad.
Por ejemplo, si un desarrollador desea una variación de la imagen estándar, puede crear un contenedor que contenga solo la nueva biblioteca.
Para actualizar una aplicación, un desarrollador realiza cambios en el código de la imagen del contenedor.
Y, a continuación, vuelve a desplegar esa imagen para ejecutarse en el sistema operativo del host.
Los contenedores no consumen tanto espacio como las máquinas virtuales porque cada contenedor comparte el sistema operativo del host.
Contenerización de aplicaciones vs. Virtualización
La virtualización del servidor extrae el sistema operativo y la aplicación del hardware subyacente.
Una capa de hipervisor reside entre la memoria, el procesador y el almacenamiento (componentes del hardware), y el sistema operativo, la aplicación y los servicios.
Cada aplicación se ejecuta en su propia versión de sistema operativo.
Esto permite que diferentes aplicaciones en el mismo host, utilicen diferentes versiones del Sistema Operativo.
Pero también, consume más recursos que los contenedores, y requiere más licencias de Sistema Operativo que una configuración en contenedor.
Los contenedores pueden ejecutarse dentro de máquinas virtuales, lo que significa que una máquina host puede tener múltiples sistemas operativos que admitan múltiples contenedores, todos compartiendo los mismos recursos físicos.
Los contenedores de aplicaciones crean un espacio seguro para que el código de la aplicación consuma recursos del host, sin conocer la existencia de otras aplicaciones que utilizan el mismo sistema operativo.
Los contenedores del sistema desempeñan una función similar a las máquinas virtuales, pero sin virtualización de hardware.
Pueden alojar contenedores de aplicaciones.
Aunque los contenedores del sistema también se basan en imágenes, generalmente son de mayor duración que los contenedores de aplicaciones.
Un administrador actualiza y cambia los contenedores del sistema con herramientas de administración y configuración, en lugar de destruir y reconstruir imágenes cuando se produce un cambio.
Ventajas y deventajas de la contenerización de aplicaciones
Los defensores de la contenerización, aducen ganancias en eficiencia para la memoria, la CPU y el almacenamiento, en comparación con la virtualización tradicional y el alojamiento de aplicaciones físicas.
Sin la sobrecarga requerida por las máquinas virtuales, es posible soportar muchos más contenedores de aplicaciones en la misma infraestructura.
La portabilidad es otro beneficio.
Siempre que el sistema operativo sea el mismo en todos los sistemas, un contenedor de aplicaciones puede ejecutarse en cualquier sistema y en cualquier nube, sin necesidad de cambios de código.
La capacidad de reproducir una aplicación es otra ventaja de la contenerización de aplicaciones.
Esta es una de las razones por las que la adopción de contenedores a menudo coincide con el uso de una metodología: DevOps.
A lo largo del ciclo de vida de la aplicación, desde la creación del código hasta la prueba y la producción, los sistemas de archivos, archivos binarios y otra información, siguen siendo los mismos: todos los artefactos de desarrollo se convierten en una imagen.
El control de versiones en el nivel de imagen, reemplaza la administración de la configuración en el nivel del sistema.
Un inconveniente potencial de la contenerización, es la falta de aislamiento del sistema operativo central.
Al no estar aislado del sistema operativo host en una máquina virtual, es posible que las amenazas de seguridad tengan un acceso más fácil a todo el sistema.
Los escáneres de seguridad y las herramientas de monitoreo pueden proteger el hipervisor y el sistema operativo, pero no los contenedores de aplicaciones.
Sin embargo, la contenerización también ofrece beneficios de seguridad debido al mayor aislamiento de los paquetes de aplicaciones y a los sistemas operativos especializados y de menor tamaño que los ejecutan.
La contenerización de aplicaciones es una metodología de TI a nivel empresarial relativamente nueva y en rápido desarrollo, que genera cambios e inestabilidad.
En consecuencia, otra desventaja de la contenerización, es la falta de entrenamiento y experiencia entre los trabajadores de TI, en comparación con el campo de la virtualización del servidor.
Hay pocos administradores que entiendan el tema de los contenedores y cómo trabajar con ellos.
Si una empresa necesita ejecutar una aplicación de Windows en contenedores en servidores Linux, o viceversa, una capa de compatibilidad o máquinas virtuales anidadas, resolverían el problema, pero aumentaría la complejidad y el consumo de recursos.
Por Margaret Rouse
En Plotandesign tenemos el conocimiento y la experiencia necesarios para la implementación y administración de contenedores, tanto de sistema como de aplicación.
Confíe en nosotros la administración de sus servidores, y...
¡Si desea acompañamiento o asesoría, no dude en llamarnos!
Hector Gil
Hector Gil
Yuset