Máquinas virtuales (VMs) vs contenedores: ¿cuál es la diferencia?

Máquinas virtuales (VMs) vs contenedores: ¿cuál es la diferencia?

  • ITOps y DevOps
6 min de lectura Actualizado Jul 27, 2020

Puntos clave: Las máquinas virtuales (VM) emulan hardware físico, mientras que los contenedores proporcionan aplicaciones modulares que se ejecutan en entornos aislados, mejorando la eficiencia y escalabilidad. Las máquinas virtuales requieren migraciones completas del sistema operativo para transferir cargas de trabajo, lo que conduce a un desperdicio de recursos, mientras que los contenedores Permite que múltiples cargas de trabajo compartan recursos, mejorando la velocidad de desarrollo.

  • Las máquinas virtuales son intensivas en recursos y menos flexibles.
  • Los contenedores maximizan la utilización de recursos y soportan ciclos de desarrollo rápidos.

La virtualización transformó la computación en red a principios de los años 70, allanando el camino para cambios de paradigma sin precedentes, como la revolución de la computación en la nube de la última década.

Más recientemente, surgió la revolución de contenedores con un objetivo similar: mejoras en las tecnologías de centros de datos y el desarrollo de aplicaciones. La tecnología no es del todo nueva. Las soluciones de contenedores de Linux, incluyendo las zonas LXC y Solaris, llevan más de una década en la industria. Empresas como Google llevan varios años utilizando sus propias tecnologías de contenedores. (¡Se dice que Google inicia 2.000 millones de contenedores semanalmente!)

Sin embargo, no fue hasta el lanzamiento de Docker , en 2013, con sus soluciones y ecosistema de contenedores amigables para desarrolladores, cuando la tecnología realmente ganó terreno en la TI empresarial. De hecho, potencialmente nos dirigimos hacia una era en la que las metodologías tradicionales de virtualización darán paso por completo a la contenedorización.

Antes de te adoptar soluciones de desarrollo basadas en contenedores para el desarrollo de aplicaciones y los procesos de lanzamiento de software, Haz asegurarse te comprender completamente los conceptos y operaciones de las máquinas virtuales y los contenedores. Al final de este artículo, te harás:

  • Entiende los conceptos y diferencias entre máquinas virtuales y contenedores
  • Considera los inconvenientes de ambos
  • Explora las principales tendencias
  • Obtén consejos para empezar con los contenedores

¿Qué es una máquina virtual?

Una máquina virtual (VM) se está mejor descrita como un programa de software que emula la funcionalidad de un hardware físico o sistema informático. Se ejecuta sobre un software emulador, llamado hipervisor, que replica la funcionalidad de los recursos físicos subyacentes con un entorno de software. Estos recursos pueden denominarse máquina anfitriona, mientras que la VM que se ejecuta en el hipervisor a menudo se está llamada máquina invitada.

La máquina virtual contiene todos los elementos necesarios para ejecutar las aplicaciones, incluyendo:

  • Computación
  • Almacenamiento
  • Memoria
  • Networking
  • Funcionalidad de hardware disponible como sistema virtualizado

La máquina virtual también puede contener los binarios y bibliotecas del sistema necesarios para ejecutar las aplicaciones. Sin embargo, el sistema operativo (SO) real está gestionado y ejecutado mediante el hipervisor.

[vídeo de hélice]

Cómo funcionan las máquinas virtuales

Los recursos de hardware virtualizados son agrupados y puestos a disposición de las aplicaciones que se ejecutan en la máquina virtual. Luego, se está creado una capa de abstracción para desacoplar las aplicaciones de la infraestructura física subyacente. Esto significa que el hardware físico puede cambiarse, actualizarse o escalarse sin interrumpir el rendimiento de la aplicación.

Una máquina virtual funcionará como un PC aislado y el hardware subyacente puede operar múltiples máquinas virtuales independientes y aisladas para diferentes cargas de trabajo. Las operaciones de las máquinas virtuales suelen son intensivas en recursos y no permiten que la funcionalidad individual de una aplicación se ejecute en entornos virtualizados aislados similares a los de un PC a menos que se están utilizadas una máquina virtual separada para diferentes elementos modulares de la aplicación. Si una carga de trabajo de una aplicación necesita migrar entre diferentes máquinas virtuales o ubicaciones físicas de centros de datos, todo el sistema operativo debe migrar junto con ella.

Rara vez una operación de carga de trabajo consume todos los recursos disponibles para la VM asociada. Como resultado, los recursos restantes no utilizados pueden no incorporarse en la planificación y distribución de capacidad entre todas las VMs y cargas de trabajo. Esto conlleva un gran inconveniente de las VMs: planificación inexacta y un desperdicio significativo de recursos, aunque la virtualización se desarrolló específicamente para optimizar el uso y la distribución de recursos de hardware dentro de un centro de datos.

Las aplicaciones modernas y los servicios de TI son desarrollados en varios bloques modulares para facilitar:

  • Desarrollo y lanzamiento más rápidos
  • Alta escalabilidad
  • La flexibilidad para evolucionar el desarrollo de aplicaciones en respuesta a las necesidades cambiantes del negocio y del mercado

Las prácticas monolíticas de desarrollo de aplicaciones son perdiendo popularidad y las organizaciones son buscando soluciones de arquitectura de infraestructura para optimizar aún más la utilización del hardware. Esta es precisamente la razón por la que se inventó la contenedorización y ganó popularidad como alternativa viable.

¿Qué es un contenedor?

La contenedorización crea abstracción a nivel de sistema operativo que permite que funcionalidades individuales, modulares y distintas de la aplicación se ejecuten de forma independiente. Como resultado, varias cargas de trabajo aisladas —los contenedores— pueden operar dinámicamente usando los mismos recursos físicos.

Una definición menos técnica de contenedores podría ser: una unidad de software que es ligera pero que aún así agrupa el código, sus dependencias y la configuración en una sola imagen. Los contenedores pueden ejecutar:

  • En la parte superior de los servidores bare metal
  • Hipervisores superiores
  • En infraestructura en la nube

Los contenedores comparten todas las capacidades necesarias con la máquina virtual para operar como un entorno operativo aislado para una funcionalidad modular de una aplicación, con una diferencia clave. Utilizando un motor de contenedorización, como el Docker Engine, los contenedores Crea varios entornos de sistema operativo aislados dentro del mismo núcleo del sistema anfitrión, que pueden compartirse con otros contenedores dedicados a ejecutar diferentes funciones de la aplicación. Solo son desarrollados o ejecutados bins, bibliotecas y otros componentes de tiempo de ejecución por separado para cada contenedor, lo que los hace más eficientes en recursos en comparación con las máquinas virtuales.

Ventajas de los contenedores

Los contenedores son especialmente útiles para desarrollar, desplegar y probar aplicaciones y microservicios distribuidos modernos que pueden operar en entornos de ejecución aislados en las mismas máquinas anfitriona.

Con la contenedorización, los desarrolladores no necesitan escribir código de aplicación en diferentes máquinas virtuales que operan distintos componentes para recuperar recursos de cómputo, almacenamiento y red. Un componente completo de la aplicación puede ejecutarse en su totalidad dentro de su entorno aislado sin afectar a otros componentes o software de la aplicación. No se producen conflictos dentro de bibliotecas o componentes de la aplicación durante la ejecución y el contenedor de la aplicación puede moverse eficientemente entre la nube o las instancias del centro de datos.

El problema de seguridad

Por supuesto, no todo es fácil: quizá el mayor inconveniente de los contenedores están su falta de seguridad. En 2018, el 60% de las organizaciones sufrieron un incidente de seguridad específico relacionado con los contenedores, según Tripwire. Están las habituales vulnerabilidades de seguridad: errores, mala autenticación y autorización, e incluso mala configuración. Eso significa que la superficie potencial de ataque está grande.

Pero no es tan fácil integrar la seguridad en toda la pila, el ciclo de vida y la pipeline. Eso explica por qué casi la mitad de las organizaciones en esta encuesta admitieron desplegar contenedores con vulnerabilidades conocidas y/o sin pruebas de vulnerabilidades.

Aun así, a medida que los contenedores siguen creciendo exponencialmente, más equipos son involucrando DevOps y SecOps desde el principio, como Ve en tendencias a continuación.

Arquitectura: Contenedores vs máquinas virtuales

Máquinas virtuales vs contenedores
Una visualización de la diferencia arquitectónica entre máquinas virtuales y contenedores

Proposiciones clave de valor

La diferencia arquitectónica ofrece las siguientes propuestas clave de valor para el personal y las empresas de TI:

  • Integración continua, despliegue y pruebas. En organizaciones impulsadas por DevOps, las organizaciones pueden aprovechar los contenedores para facilitar procesos en la tubería CI/CD. Los contenedores funcionan como un entorno de infraestructura consistente para que los desarrolladores no tengan que realizar tareas de configuración complejas para cada sprint de SDLC mientras las cargas de trabajo migran entre los recursos físicos.
  • Portabilidad de la carga de trabajo. Las cargas de trabajo de TI pueden cambiar entre diferentes instancias de infraestructura y entornos virtuales sin cambios significativos en la configuración ni reestructuración del código de la aplicación.
  • Calidad y cumplimiento del software. La colaboración transparente entre desarrolladores y personal de pruebas en la entrega de partes operativas de la aplicación conduce a una mejor calidad del software, ciclos de desarrollo más rápidos y un mayor cumplimiento normativo.
  • Optimización de Costes. Los contenedores maximizan la utilización de recursos dentro de sus propios entornos virtualizados aislados. Esto permite a las organizaciones planificar con precisión la capacidad y el consumo de infraestructuras.
  • Independiente de la infraestructura. Los contenedores Haz que los componentes de la aplicación sean independientes de la infraestructura, permitiendo a las organizaciones mover cargas de trabajo entre servidores bare metal a entornos virtualizados y luego a infraestructura en la nube en respuesta a las necesidades cambiantes del negocio.

Tendencias de contenedores

Estas propuestas de valor justifican el creciente interés y gasto en tecnologías de contenedorización. ¡Y está ocurriendo rápido! Tan rápido que, para 2023, Gartner estima, más de dos tercios de las organizaciones globales estarán ejecutando 2+ aplicaciones contenedorizadas. En contraste con el año pasado: en 2019, esa cifra fue inferior al 20%.

En el reciente Informe sobre el Estado de la Seguridad de Contenedores y Kubernetes, de principios de 2020, Stackrox encuestó a más de 500 profesionales tecnológicos sobre las tendencias de contenedores y adopción. Aquí son algunas conclusiones clave:

  • Las aplicaciones contenedorizadas son en aumento. Las empresas que tienen más de la mitad de sus aplicaciones en contenedores pasaron del 23% al 29% en solo seis meses. Eso supone una tasa de crecimiento del 29%.
  • Los contenedores introducen DevOps y Seguridad. Una gran preocupación con los contenedores están la seguridad, por lo que los usuarios maduros de contenedores son integrando DevOps y Seguridad mucho antes en el proceso—una gran victoria para DevSecOps
  • AWS están el rey. Pero quién ocupa el #2 en despliegues en la nube está en curso: Azure sigue en una precaria segunda posición, ya que GCP ha subido su tercer puesto en siete puntos porcentuales.
  • Los usuarios de Azure tienen la menor madurez de contenedores. Solo el 20% de los usuarios de Azure han contenedizado la mitad o más de sus aplicaciones, en comparación con el 33% de todos los que no son Azure.

Cómo implementar contenedores en tu organización

Las empresas no tienen que rehuir en añadir recipientes a tus herramientas. ¿Quieres aprovecharlo? Aquí son algunas formas de Comienza trabajar con recipientes:

  • Mira tu entorno actual. Analiza tus aplicaciones, revisa qué entornos son mejores para ellas. ¿Vas refactorizar tus apps o las vas a crear completamente nuevas? Si te está interesante la refactorización, Comienza con una app independiente que no requiera interactuar con otras apps para ejecutarse.
  • Experimenta con Kubernetes. Es muy probable que tus desarrolladores ya son usando K8s. conoce más en nuestra Guía de Kubernetes en varias partes.
  • Abraza a los promotores. Alguien (o muchas personas) en tu empresa probablemente tenga una o dos ideas sobre una estrategia de contenedor. Habla con ellos, conoce de ellos y considera convertirlos en la cara de este esfuerzo.
  • Designa un proyecto. Identifica un pequeño proyecto en el que Comienza, nombra al equipo y define lo que te esperas lograr. Mide los cambios en el futuro.
  • Fomenta la educación. Las nuevas tecnologías requieren tiempo para conoce bien. Considera invertir en certificaciones de Kubernetes o, al menos, dar a tus desarrolladores tiempo dedicado para estudiar.

Para las organizaciones impulsadas por DevOps que se centran en ciclos de lanzamiento más rápidos y continuos de funciones de aplicaciones distribuidas basadas en microservicios, la contenedorización seguirá atrayendo inversiones, especialmente en áreas donde la virtualización no ha cumplido con sus resultados.

Recursos adicionales

Para más información sobre este tema, explora estos recursos:

Imagen de referencia original:

Gráfico de VM vs Contenedores

Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.

Más de ITOps y DevOps

¿Te interesa saber más de BMC?

El Brief están nuestro correo mensual sobre el mainframe y la orquestación empresarial: investigación, historias de clientes, noticias de productos, eventos.

Al registrarse para esta oferta te son confirmar que te leído y aceptado la Política de Privacidad de BMC.

Tú te has suscrito a The Brief

El Brief abarca la orquestación de mainframe y empresa—BMC AMI y Control-M—y la investigación de analistas, despliegues de clientes y eventos en ambas áreas.