Resumen
Las máquinas virtuales (VM) y los contenedores de Linux® son entornos informáticos empaquetados que combinan varios elementos de TI y los aíslan del resto del sistema. Las principales diferencias radican en la capacidad de ampliación y la portabilidad.
- Por lo general, los contenedores se miden en megabytes. El elemento más grande que empaquetan es una aplicación y todos los archivos necesarios para su ejecución. También suelen utilizarse para empaquetar funciones individuales que realizan tareas específicas (conocidas como microservicios). La naturaleza ligera de los contenedores y su sistema operativo (SO) compartido permiten trasladarlos entre los distintos entornos con mucha facilidad.
- Por lo general, las máquinas virtuales se miden en gigabytes. Suelen tener su propio sistema operativo, lo cual les permite realizar varias funciones con uso intensivo de los recursos al mismo tiempo. Las máquinas virtuales cuentan con una mayor cantidad de recursos disponibles, lo cual les permite extraer, dividir, duplicar y simular sistemas operativos, escritorios, bases de datos, conexiones de red y servidores completos.
Más allá de las diferencias tecnológicas, la comparación entre los contenedores y las máquinas virtuales es una comparación indirecta entre las prácticas de TI nuevas y las arquitecturas de TI tradicionales.
¿Cuál debería utilizar?
Eso depende de si necesita una instancia pequeña de algo que se pueda trasladar con facilidad (contenedores) o de si necesita una asignación semipermanente de recursos personalizados de TI.
Debido a que los contenedores son pequeños y ligeros, pueden trasladarse con facilidad entre los equipos sin sistema operativo, así como entre los entornos de nube pública, privada, híbrida y multicloud. También son el entorno ideal para implementar las aplicaciones nativas de la nube actuales. Estas consisten en colecciones de microservicios diseñadas para proporcionar un desarrollo uniforme y una experiencia de gestión automatizada en los entornos de nube pública, privada, híbrida y multicloud. Las aplicaciones nativas de la nube agilizan el diseño de aplicaciones nuevas, la optimización de las actuales y la conexión entre todas ellas. Tenga en cuenta que los contenedores deben ser compatibles con el sistema operativo subyacente. Si comparamos los contenedores con las máquinas virtuales, son mejores para las siguientes funciones:
- Diseñar aplicaciones nativas de la nube
- Empaquetar microservicios
- Implantar gradualmente las prácticas de DevOps o CI/CD
- Trasladar proyectos de TI escalables a todo un footprint de TI diverso con el mismo sistema operativo
Las máquinas virtuales pueden ejecutar muchas más operaciones que un contenedor individual. Por eso se han utilizado para empaquetar las cargas de trabajo monolíticas, incluso en la actualidad. Sin embargo, esa capacidad para ofrecer más funciones reduce su portabilidad, debido a su dependencia del sistema operativo, las aplicaciones y las bibliotecas. Si comparamos las máquinas virtuales con los contenedores, son mejores para las siguientes funciones:
- Alojar cargas de trabajo tradicionales, monolíticas y heredadas
- Aislar ciclos de desarrollo riesgosos
- Implementar recursos de infraestructura (como redes, servidores y datos)
- Ejecutar un sistema operativo diferente dentro de otro (por ejemplo, ejecutar Unix en Linux)
Virtualización
El software llamado hipervisor separa los recursos de las máquinas físicas para que puedan dividirse y destinarse a las máquinas virtuales. Cuando un usuario emite una instrucción de una máquina virtual que requiere recursos adicionales del entorno físico, el hipervisor transmite la solicitud al sistema físico y almacena los cambios en la memoria caché. Las máquinas virtuales parecen servidores físicos y actúan como tales, lo que puede multiplicar las desventajas de las dependencias de las aplicaciones y los grandes footprints del sistema operativo. Incluso, en la mayoría de los casos, ese footprint no se necesita para ejecutar una sola aplicación o microservicio.
Contenedores
Los contenedores contienen un microservicio o una aplicación y todo lo que necesita para ejecutarse. Lo que está dentro de un contenedor se conserva en lo que llamamos imagen: un archivo basado en un código que incluye todas las bibliotecas y las dependencias. Estos archivos pueden considerarse una instalación de la distribución de Linux, porque la imagen viene con paquetes RPM y archivos de configuración. Como los contenedores son tan pequeños, suele haber cientos de ellos con un nivel de acoplamiento bajo, así que se utilizan plataformas de organización de contenedores (como Red Hat OpenShift y Kubernetes) para configurarlos y gestionarlos.
¿Por qué conviene elegir Red Hat?
Porque desde hace mucho tiempo respaldamos la virtualización y el desarrollo en contenedores. Cooperamos con las comunidades de máquina virtual basada en el kernel (KVM) y oVirt desde su fundación, y somos el segundo colaborador principal de las bases de código Docker y Kubernetes. También invertimos en el futuro de ambas tecnologías. Nuestra participación en la virtualización propia de los contenedores, KubeVirt y la infraestructura hiperconvergente mejoran la forma en la que los contenedores y las máquinas virtuales trabajan en conjunto como parte del mismo sistema de TI.