Containerización

¿Qué es la contenedorización?

La contenedorización es un método para entregar código de software de forma que combine todos los elementos necesarios en un paquete que pueda moverse fácilmente entre tipos de infraestructura. El contenedor incluye las bibliotecas, dependencias y marcos necesarios para ejecutar una aplicación. Este contenedor mantiene la aplicación independiente de su entorno y totalmente portable entre entornos de infraestructura. La contenedorización está relacionada con la virtualización, pero presenta ventajas para determinados tipos de cargas de trabajo.

Ventajas de la contenedorización

Un contenedor se abstrae del sistema operativo anfitrión, con un acceso limitado a los recursos subyacentes. Esto lo hace más ligero que una máquina virtual completa, pero con una gran portabilidad y flexibilidad. El contenedor puede ejecutarse en distintos tipos de infraestructura, como servidores de metal desnudo, dentro de máquinas virtuales o en la nube. El código puede transferirse más fácilmente de un sistema local a la nube o entre sistemas operativos.

Como no es necesario arrancar una máquina virtual entera, hay menos sobrecarga, sin necesidad de cargar un sistema operativo distinto para cada contenedor, ya que el núcleo es compartido. La alta eficiencia de la contenedorización la hace ideal para ofrecer los microservicios que requieren las aplicaciones modernas. Dado que los contenedores están aislados, pueden mantenerse seguros unos de otros porque se impide que cualquier compromiso malicioso o conflicto de código se transfiera entre ellos. El aislamiento es menos completo que con una máquina virtual completa, pero las amenazas pueden minimizarse. El rápido despliegue significa que los contenedores pueden detenerse y reiniciarse rápidamente en caso de problema.

Ejemplos de contenedores

La contenedorización tiene muchos usos a lo largo del ciclo de vida de la prestación de un servicio de software.

  • Una aplicación creada en un contenedor de forma local se ejecutará de forma idéntica cuando se transfiera a la infraestructura de producción durante el desarrollo.
  • El código heredado puede ejecutarse en un contenedor, lo que elimina su dependencia del hardware heredado y permite trasladarlo fácilmente entre distintos tipos de infraestructura, como de los servidores locales a la nube.
  • Los servicios en los que la seguridad es esencial, como los que alojan transacciones financieras, pueden prestarse a través de contenedores, lo que permite una escalabilidad más rápida y segura a medida que aumenta la demanda.
  • En la informática del automóvil, los microservicios proporcionados a un vehículo conectado definido por software pueden suministrarse de forma ligera, dinámica y segura utilizando la contenedorización, por ejemplo, a través de BlackBerry QNX en la nube.

Cómo funciona la contenedorización

La contenedorización se ejecuta sobre una infraestructura local o basada en la nube. Esta última se desplegará con un sistema operativo compartido, sobre el que se instala el motor de contenedores, por ejemplo, Docker o Google Kubernetes Engine. Este orquesta los contenedores alojados, cada uno de los cuales consta de una o varias aplicaciones y las dependencias necesarias. Este contenedor se ejecutará de forma fiable independientemente del entorno informático que actúe como anfitrión, ya que no depende de sus recursos.

Un contenedor puede contener una o varias aplicaciones completas, pero también puede permitir un enfoque modular para ofrecer una aplicación compleja. Puede dividirse en módulos, cada uno de los cuales se ejecuta en su propio contenedor, lo que se conoce como enfoque de microservicios. Aunque los contenedores suelen estar aislados, se les puede dotar de la capacidad de comunicarse entre sí a través de canales bien definidos. Debido a la naturaleza ligera de los contenedores, pueden iniciarse justo a tiempo, según sea necesario, en lugar de dejarlos en ejecución, donde seguirán consumiendo recursos.

Containerización frente a virtualización

La contenedorización se menciona a menudo en el mismo contexto que la virtualización. Están estrechamente relacionadas, pero adoptan enfoques ligeramente diferentes. La virtualización simula todo el hardware físico, incluidos los núcleos de la CPU, la memoria, el almacenamiento e incluso la aceleración de la GPU, dentro del cual se ejecuta un sistema operativo invitado. La contenedorización no simula el hardware, sólo el sistema operativo. Así, varias aplicaciones pueden compartir el mismo núcleo del sistema operativo. En la práctica, las funciones pueden ser similares entre un contenedor y una máquina virtual completa. Aunque esta última proporciona un mayor aislamiento de los recursos, el enfoque ligero de la contenedorización ofrece ventajas cuando resulta beneficioso un despliegue dinámico rápido. de una aplicación o aplicaciones y las dependencias necesarias. Este contenedor se ejecutará de forma fiable independientemente del entorno informático que actúe como anfitrión, ya que no depende de sus recursos.

Un contenedor puede contener una o varias aplicaciones completas, pero también puede permitir un enfoque modular para ofrecer una aplicación compleja. Puede dividirse en módulos, cada uno de los cuales se ejecuta en su propio contenedor, lo que se conoce como enfoque de microservicios. Aunque los contenedores suelen estar aislados, se les puede dotar de la capacidad de comunicarse entre sí a través de canales bien definidos. Debido a la naturaleza ligera de los contenedores, pueden iniciarse justo a tiempo, según sea necesario, en lugar de dejarlos en ejecución, donde seguirán consumiendo recursos.