Lanner

Contenedores vs virtualización: ¿cuál es superior?

La virtualización ha sido la base de muchas tecnologías modernas, y no puede faltar en la implementación de la red de próxima generación: Virtualización de funciones de red y redes definidas por software (NFV/SDN). La virtualización se ha utilizado sistemáticamente para simplificar la implementación, la gestión, la orquestación y la elasticidad de los proveedores de servicios de comunicaciones (CSP), y en la actualidad los principales CSP han virtualizado más de la mitad de sus redes. Aún así, Kubernetes, una plataforma de contenedores diseñada por google para cargas de trabajo de red, está ganando terreno en la implantación de redes y las soluciones de infraestructura virtual podrían enfrentarse pronto a una competencia feroz.

Las máquinas virtuales son hoy en día el estándar de facto para el despliegue de software, pero no es la única tecnología capaz de satisfacer este nicho. Los contenedores, una tecnología que esencialmente aísla las aplicaciones de los sistemas operativos del host (muy similar a una máquina virtual) se está convirtiendo rápidamente en una alternativa viable para muchos escenarios de implementación de software. Aunque las tecnologías comparten muchas similitudes en cuanto a la funcionalidad final, los contenedores ofrecen algunas ventajas y desventajas a las máquinas virtuales.

Contenedores y máquinas virtuales: ¿cuál es la diferencia?

Containers and virtual machine architecture comparison

Se muestra: comparación de la arquitectura de un contenedor con la de una máquina virtual que ejecuta aplicaciones X e Y.

Aunque ambas tecnologías tienen el mismo objetivo: aislar una aplicación de otros procesos y aplicaciones en el sistema host, ambas tienen enfoques bastante diferentes.

Máquinas virtuales:Como su nombre indica, este enfoque está mucho más involucrado en el alcance. Se basa en un hipervisor (por ejemplo, KVM, XEN) que emula una máquina física completa, asigna una cantidad deseada de memoria del sistema, núcleos de procesador y otros recursos como almacenamiento en disco, redes, complementos PCI, etc.

Contenedores:Las tecnologías existen desde hace mucho tiempo, aunque con diferentes nombres: jaulas, areneros, etc. Es el único hada reciente que la tecnología ha madurado lo suficiente y se ha introducido en los entornos de producción. Los contenedores aíslan esencialmente una aplicación del host a través de varias técnicas, pero utilizan el mismo núcleo de sistemas host, procesos (por ejemplo, pila de red) para ejecutar la aplicación o VNFs.

¿Qué significa esto para el rendimiento, la seguridad y la portabilidad?

Tecnologías y técnicas de Virtualización han recorrido un largo camino tanto para el software como para el hardware. La mayoría de los procesadores x86 fabricados a partir de 2013 incluyen optimizaciones específicas de virtualización (Intel VT-x, AMD-V), lo que supone una penalización de los gastos generales de virtualización en el procesador de alrededor del 2%, una compensación más que justa por la funcionalidad que aporta la virtualización. Lo mismo no puede decirse de otros recursos como la memoria del sistema y el almacenamiento. Dado que una máquina virtual ejecuta todo un sistema operativo sobre el sistema operativo del host, es inherentemente más ineficiente en términos de tamaño de aplicación y uso de la memoria del sistema. La virtualización no sólo consume más memoria del sistema, sino que requiere que se asigne una cantidad fija a la VM, incluso si la aplicación no está consumiendo esos recursos. Teniendo todo esto en cuenta, el uso de la memoria del sistema podría acabar siendo la diferencia más importante entre la virtualización y los contenedores.

Una de las verdaderas ventajas de las VM sobre los contenedores es su portabilidad. Aunque los contenedores docker ofrecen un cierto grado de portabilidad entre el sistema operativo del host al empaquetar las dependencias con la aplicación, no hay garantía de que el sistema operativo subyacente del host sea compatible con la aplicación de contenedores XYZ. Otra ventaja es la madurez de las soluciones de gestión de máquinas virtuales, aunque Kubernetes está cerrando esta brecha de manera constante.
Contenedores se consideran a menudo más eficientes que la virtualización por diseño, porque en lugar de duplicar los procesos y servicios disponibles en el sistema operativo del host dentro del sistema operativo del host, las aplicaciones se ejecutan en entornos de caja de arena dentro del sistema operativo del host, eliminando las capas de abstracción, esencialmente ejecutando aplicaciones en modo totalmente metálico. Aunque no es falso, Docker (el principal proyecto de contenedores) no llega sin sus propios éxitos de rendimiento. Por ejemplo: La traducción de acceso a la red de los Dockers introduce una sobrecarga que puede afectar al rendimiento en cargas de trabajo elevadas.

Considerando la baja sobrecarga de los hipervisores modernos, la eficiencia real en los contenedores proviene de la reducción del uso de memoria debido a la eliminación del SO huésped, la subsiguiente desduplicación de los procesos que consumen recursos adicionales y la reducción del tamaño de la aplicación debido a las reducciones mencionadas anteriormente. Combinando esto con la capacidad de gestionar recursos como la memoria del sistema sobre la marcha y de forma dinámica, se podría conseguir una opción de implementación mucho más eficiente.

Otra característica prometedora del contenedor es el tiempo de arranque. Dado que la aplicación no tiene que iniciar todo un SO huésped antes de iniciarse, se trata de una plataforma de implementación mucho más ágil que podría impulsar potencialmente la adopción en áreas como la división de redes 5G.
Cuando se trata de seguridad, ambas tecnologías pueden sufrir las mismas vulnerabilidades del sistema operativo del host, de la biblioteca o de las aplicaciones, aunque la superficie de ataque se reduce bastante para los contenedores, ya que no es necesario un sistema operativo huésped adicional. Al mismo tiempo, los hipervisores son más maduros y, como tales, ofrecen actualmente una visión más transparente de los procesos en ejecución. Sólo el tiempo dirá qué tecnología puede proporcionar el sistema más seguro.

Conclusión

Ambas tecnologías ofrecen ventajas distintas:

La virtualización viene con una plétora de herramientas probadas a lo largo del tiempo, plataformas de gestión y orquestación, sondas virtuales, soluciones de infraestructura virtual hiperconvertidas y mucho más. La portabilidad y la interoperabilidad son las características que destacan frente a los contenedores.

Los contenedores ofrecen una mayor eficiencia de recursos y agilidad de servicio. Aunque no parezca mucho, abre la puerta a un modelo de microservicios que puede escalar más rápido y de manera más eficiente. Los contenedores de papel se ajustan más a las iniciativas de NFV/SDN y la industria se ha dado cuenta de que Kubernetes es uno de los proyectos de código abierto de más rápido crecimiento hasta la fecha.

Hoy en día, los proveedores de servicios se encuentran en medio de una evolución de la red y buscan utilizar la mejor tecnología disponible, y para ello muchos están utilizando contenedores dentro de una máquina virtual para aprovechar las mejores herramientas y soluciones de gestión de infraestructura disponibles en la actualidad. Aunque esto elimina algunos de los beneficios de los contenedores, permite a los proveedores de servicios aprovechar la agilidad y eficiencia de memoria de los contenedores para mitigar las ineficiencias presentes en las máquinas virtuales y ofrece lo mejor de ambos mundos. Eventualmente, la interoperabilidad mejorada y las API estandarizadas pueden permitir que los contenedores y las máquinas virtuales trabajen juntos y creen la solución de implementación de software ideal para SDN/NFV.

Salir de la versión móvil