Ventajas y desventajas de las máquinas virtuales

Ventajas y desventajas de las máquinas virtuales. Para muchas personas alrededor de nuestro mundo tecnológico las máquinas virtuales están pasadas de moda, hacen parte de las herramientas heredadas que sirvieron en su momento pero en el presente tienen menos aplicaciones y usos. Son respetables puntos de vista a considerar; no obstante tienen enormes beneficios que nos encargaremos de mostrar en las siguientes líneas.

¿Qué es una máquina virtual?

Virtual Machine es una instalación de sistema operativo individual completamente separada en su sistema operativo habitual. Se implementa mediante emulación de software y virtualización de hardware.

La máquina virtual es una implementación de software de una máquina física (web server) que funciona y se ejecuta de forma analógica. Las máquinas virtuales se dividen en dos categorías en función de su uso y correspondencia con la máquina real: máquinas virtuales de sistema y máquinas virtuales de proceso. La primera categoría proporciona una plataforma de sistema completa que ejecuta el sistema operativo completo, la segunda ejecutará un solo programa.

Con frecuencia, se utilizan múltiples máquinas virtuales con sus propios sistemas operativos en la consolidación del servidor, donde se ejecutan diferentes servicios en entornos virtuales separados, pero en la misma máquina física.

Las desventajas

Vamos a empezar por las posibles limitaciones de una máquina virtual (veo una sonrisa gigante en los detractores del sistema; tranquilos, hay para todos).

Para explicar por qué, permítanme resumir primero las razones por las que las máquinas virtuales pueden no ser una opción ideal, en comparación con las tecnologías de alojamiento alternativas.

Las razones más comunes para evitar las máquinas virtuales y, en cambio, elegir algo como contenedores para alojar su aplicación, son las siguientes:

  • Gastos generales : las máquinas virtuales consumen más recursos que un contenedor.
  • Velocidad : en algunos aspectos, las máquinas virtuales son más lentas. Tardan más en comenzar (posiblemente uno o dos minutos, en comparación con segundos para un contenedor). Las aplicaciones que alojan también pueden no ejecutarse tan rápido debido al hecho de que algunos de los recursos del sistema host están vinculados por el hipervisor de virtualización, dejando menos disponibles para que la aplicación los use.
  • Redundancia : las máquinas virtuales se diseñaron asumiendo que cada máquina residiría en un único servidor. Si bien es posible crear redundancia para las máquinas virtuales al distribuirlas en un grupo de servidores, hacerlo requiere más esfuerzo, y es un proceso más complicado, que distribuir una aplicación en un grupo utilizando contenedores.
  • Imágenes voluminosas : una imagen de máquina virtual que contiene un sistema operativo host (como la mayoría lo hace) generalmente consumirá al menos varios gigabytes de espacio, y posiblemente mucho más. En comparación, una imagen de contenedor podría tener solo unos pocos megabytes, ya que una imagen de contenedor no tiene que empaquetar un sistema operativo completo.
  • Nativo de la nube : las máquinas virtuales son una tecnología que se generalizó hace décadas, mucho antes de la era de la nube. Debido a eso, hay una especie de sesgo cultural contra ellos, estimulado por la noción de que, a diferencia de los contenedores y los servidores sin servidor, las máquinas virtuales simplemente no son una tecnología nativa de la nube .
    Todos estos puntos son verdaderos y válidos. Para muchas implementaciones de aplicaciones modernas, las máquinas virtuales no son la mejor opción.
  • Cuando varias máquinas virtuales se ejecutan simultáneamente en una computadora host, cada máquina virtual puede presentar un rendimiento inestable, que depende de la carga de trabajo en el sistema por parte de otras máquinas virtuales en ejecución;
  • La máquina virtual no es tan eficiente como una real cuando se accede al hardware.

Los beneficios y ventajas

Sin embargo, todavía hay muchos casos de uso en los que las máquinas virtuales se destacan de la competencia de manera positiva. Considere las siguientes razones por las que puede querer mantener sus máquinas virtuales y evitar la tentación de subirse al carro en contenedores, nativo de la nube.

Flexibilidad

Quizás el mayor punto de venta para las máquinas virtuales es que, al final del día, continúan ofreciendo la mayor adaptabilidad de implementación. Una máquina virtual se puede implementar en casi cualquier lugar, independientemente del sistema operativo o la configuración de su host. Un sistema Windows puede alojar una máquina virtual basada en Linux, y viceversa.

Los contenedores ofrecen cierto nivel de flexibilidad. A una aplicación Linux en contenedor no le importa qué distribución de Linux la aloje. Pero aún no puede ejecutar un contenedor de Linux o Windows, o un contenedor de Windows en Linux, a menos que use una máquina virtual para crear la abstracción adicional necesaria.

Seguridad y aislamiento

La seguridad de los contenedores ha mejorado enormemente desde el debut de Docker en 2013. Pero aún deja algo de preocupación; de hecho, las preocupaciones de seguridad son una de las principales razones por las que algunos equipos optan por no usar contenedores.

Algunas de esas preocupaciones pueden mitigarse a medida que las plataformas de contenedores continúen madurando y más herramientas de seguridad las admitan por completo. Sin embargo, es poco probable que los contenedores coincidan totalmente con las máquinas virtuales desde una perspectiva de seguridad, debido al simple hecho de que las aplicaciones en contenedores nunca pueden aislarse entre sí en la misma medida que las máquinas virtuales. Las máquinas virtuales no comparten el núcleo del otro u otros recursos esenciales del sistema en la forma en que lo hacen los contenedores.

Administración

Si bien es cierto que los contenedores son más naturales en muchos aspectos para los entornos de host distribuidos, esta característica también puede dificultar su administración. Cuando tiene cientos de contenedores repartidos en docenas de servidores, las cosas se vuelven difíciles de controlar rápidamente. Es por eso que utiliza un orquestador como Kubernetes , por supuesto, que automatiza gran parte de la gestión. Sin embargo, el propio orquestador agrega otra capa de complejidad que debe configurar, administrar y proteger.

Las implementaciones de máquinas virtuales a gran escala también requieren soluciones de orquestación. Pero rara vez son tan complejos de administrar como una implementación de contenedor. Con las máquinas virtuales, simplemente hay menos partes móviles y menos capas superpuestas de infraestructura.

Las máquinas virtuales son la nube original

Finalmente, abordemos el sesgo cultural (los prejuicios que están en todas partes) contra las máquinas virtuales. Las Vm (Virtual machines) pueden ser anteriores a la nube, pero eso no significa que sean ajenas a ella. Los servicios de IaaS basados ​​en máquinas virtuales fueron el primer gran servicio de computación en la nube implementado por proveedores de la nube pública como AWS a mediados de la década de 2000. Y siguen siendo una parte clave de las ofertas de esos proveedores.

Los contenedores y otras llamadas soluciones nativas de la nube pueden estar más calientes en estos días. Pero no cometa el error de suponer que las máquinas virtuales de alguna manera no son también una tecnología nativa de la nube. Sin máquinas virtuales, la nube nunca se habría convertido en algo importante en primer lugar.

Otros recursos útiles de HostDime al respecto: Ventajas y desventajas del servidor virtual; La mejor guía de contenedores: Docker, Kubernetes y más; Qué es la virtualización de servidores; Contenedor vs. Hipervisor: ¿Cuál es la diferencia?