Ubuntu

¿Qué es la virtualización? Los basicos

¿Qué es la virtualización?  Los basicos

La virtualización juega un papel muy importante en casi todas las industrias de software de más rápido crecimiento en la actualidad. Es la base de la mayoría de la computación en la nube, la metodología de referencia para el desarrollo multiplataforma, y ​​ha llegado hasta el «borde»; el IoT del mismo nombre. Este artículo es el primero de una serie en la que explicamos qué es la virtualización y cómo funciona. Aquí, comenzamos con los trazos generales. Todo lo que vaya más allá del alcance de un artículo 101 se tratará en publicaciones de blog posteriores. Entremos en ello.

¿Qué es la virtualización?

La tecnología de virtualización crea entornos de hardware virtualizados. Utiliza software para crear una ‘capa de abstracción’ en la parte superior del hardware para dividir partes de los recursos de una soel ordenador, como procesadores, memoria, almacenamiento, etc., entre múltiples ordenadores virtuales. El resultado puede ser máquinas virtuales (VM) o contenedores. Ambos le permiten crear entornos aislados y seguros para pruebas, depuración, software heredado y para necesidades específicas que no requieren todos los recursos del hardware físico.

Hoy en día, la virtualización es una práctica estándar en arquitecturas de TI empresariales, desarrollo de software y en el perímetro. Puede virtualizar numerosas partes de una ‘pila’ de ordenadores por una miríada de razones. Puedes virtualizar:

  • Escritorios
  • Redes
  • Almacenamiento
  • Datos
  • Aplicaciones
  • Centros de datos
  • CPU
  • GPU
  • Linux
  • Nubes

Cada uno de estos escenarios permite a los proveedores atender a los usuarios o máquinas virtuales individuales, y significa que los usuarios solo necesitan los recursos computacionales exactos necesarios para una carga de trabajo determinada. Esto podría ser cualquier cosa, desde virtualizar máquinas individuales hasta configuraciones más complejas, como entornos de centros de datos virtuales completos.

¿Qué es una máquina virtual?

Una máquina virtual es un recurso que usa software para ejecutar cargas de trabajo e implementar aplicaciones. Cada VM ejecuta su propio sistema operativo (SO) (el SO invitado) y se comporta como una computadora independiente que utiliza una parte de los recursos de el ordenador subyacente (el host). Las máquinas virtuales permiten a los usuarios ejecutar numerosos sistemas operativos diferentes en una máquina, cada uno con aplicaciones y bibliotecas potencialmente diferentes en su interior. Existen numerosas herramientas y metodologías para administrar máquinas virtuales en diferentes lugares, la primera capa de administración proviene de un ‘hipervisor’ o de una ‘virtualización de aplicaciones’.

¿Qué es un hipervisor?

Un hipervisor es una capa de software que se encuentra entre las VM y el hardware para administrar la asignación de recursos, las comunicaciones generales de VM a hardware y para asegurarse de que las VM no interfieran entre sí. Hay dos tipos de hipervisores:

  • Tipo 1: hipervisores ‘bare-metal’ que interactúan directamente con el hardware subyacente y se convierten en el sistema operativo, excepto que solo interactúa realmente con ellos a través de la herramienta de virtualización. Algunos ejemplos son: VMware ESXi, Microsoft Hyper-V y Apple Boot Camp.
  • Tipo 2: hipervisores que se ejecutan como una aplicación sobre el sistema operativo existente. Algunos ejemplos son: Parallels Desktop para Mac, QEMU y VirtualBox.

Cada sistema operativo, macOS, Windows, Linux, etc., usa diferentes hipervisores para diferentes cosas. MacOS se envía con Hyperkit, Windows con Hyper-V y Linux con KVM como sus hipervisores integrados de ‘tipo 1’. Pero hay muchas organizaciones que ofrecen soluciones de tipo 1 y tipo 2. Por ejemplo, Virtual box es un hipervisor de tipo 2 que es popular tanto en Windows como en macOS. VMware se especializa en todo tipo de virtualización; servidor, escritorio, redes y almacenamiento, con diferentes ofertas de hipervisor para cada uno. Los detalles de cómo funcionan los hipervisores están más allá del alcance de este artículo.

¿Qué es la virtualización de aplicaciones?

La virtualización basada en aplicaciones utiliza una aplicación (como Parallels RAS) para transmitir de forma eficaz aplicaciones a un entorno virtual en otro servidor o sistema host. En lugar de iniciar sesión en una computadora host, los usuarios obtienen acceso a la aplicación virtualmente, separando las aplicaciones del sistema operativo y permitiendo que el usuario ejecute casi cualquier aplicación en otro hardware. De esta manera, los usuarios no tienen que preocuparse por el almacenamiento local y se pueden ejecutar múltiples aplicaciones de esta manera sin apenas tocar el sistema host.

¿Qué son las redes virtuales?

Una parte clave de la virtualización es permitir que las máquinas virtuales se comuniquen con el resto del mundo. Las máquinas virtuales necesitan la capacidad de comunicarse con otras máquinas virtuales, internamente con el host y externamente, con cosas fuera del entorno virtual. Esto se hace con una red virtual entre las máquinas virtuales y el sistema operativo host. La red es una línea de comunicación que va entre las VM y el hardware en el entorno físico. Hay mucho más que eso, pero los detalles están más allá del alcance de este artículo en particular.

Hay muchas formas de implementar una red virtual, dos de las más comunes son la «red en puente» y la «traducción de direcciones de red» (NAT). Mediante NAT, las máquinas virtuales se representan en redes externas utilizando la dirección IP del sistema host. De esta manera, las máquinas virtuales en el entorno virtual no son visibles para el exterior, por eso las máquinas virtuales detrás de NAT se consideran protegidas. . Cuando se establece una conexión entre una dirección dentro y fuera del entorno virtual, el sistema NAT reenvía la conexión a la VM correcta.

La red en puente conecta las máquinas virtuales directamente a la red física que utiliza el host. El servidor DHCP puede entonces asignar a cada VM su propia dirección IP y es visible en la red. Una vez conectada, la VM es accesible a través de la red y puede acceder a otras máquinas en la red como si fuera una máquina física.

¿Qué son los contenedores?

Los contenedores son unidades estandarizadas de software que agrupan el código y todas sus dependencias en un paquete modular. Si bien cada VM trae su propio sistema operativo, los contenedores pueden compartir el sistema operativo de la máquina host o traer el suyo en contenedores separados. Como resultado, son más livianos, puede implementar muchos más a la vez y requieren un mantenimiento (menor) bajo, con todo lo que necesita en un solo lugar. Por lo general, recomendamos tres tipos de contenedores para diferentes casos de uso:

Contenedores de Linux

Los contenedores de Linux se centran en ser contenedores de sistema. Contenedores que crean un entorno lo más cercano posible a una máquina virtual sin la sobrecarga de ejecutar un kernel y virtualizar el hardware. Estos se consideran más robustos porque están más cerca de ser una máquina con todos los servicios en su lugar y, por lo tanto, se utilizan en muchas operaciones tradicionales. Los contenedores de Linux provienen del Proyecto de contenedores de Linux (LXC), una plataforma de contenedores de código abierto que es una interfaz de espacio de usuario para las herramientas, plantillas, bibliotecas y enlaces para permitir la creación y administración de contenedores.

Contenedores Docker

Los contenedores Docker son el tipo de contenedor más popular entre los desarrolladores para implementaciones multiplataforma en centros de datos o entornos sin servidor. Uso de contenedores Docker Motor de Docker y muchas otras tecnologías de contenedores, incluido LXC, para crear entornos amigables para los desarrolladores que son reproducibles independientemente de la infraestructura subyacente. Son paquetes ejecutables independientes que incluyen todo lo necesario para ejecutar una aplicación: código, tiempo de ejecución, herramientas del sistema, bibliotecas y configuraciones.

Snaps

Los snaps son paquetes de software en contenedores que se enfocan en ser contenedores de aplicaciones singulares. Donde LXC podría verse como un contenedor de máquina, Docker como un contenedor de proceso, los snaps pueden verse como contenedores de aplicaciones. Ajusta el código y las dependencias del paquete de forma similar a los contenedores para mantener el contenido de la aplicación aislado e inmutable. Tienen un área de escritura que está separada del resto del sistema, pero son visibles para el host a través de interfaces definidas por la aplicación del usuario y se comportan más como los paquetes apt tradicionales de Debian.

Los snaps están diseñados para cuando desee implementarlos en una sola máquina. Las aplicaciones se crean y empaquetan como instantáneas usando una herramienta llamada snapcraft que incorpora diferentes tecnologías de contenedores para crear una forma segura y fácil de actualizar para empaquetar aplicaciones para estaciones de trabajo o para flotas de dispositivos IoT. Hay algunas formas de desarrollar instantáneas. Los desarrolladores pueden configurar Snap para que se ejecute incluso sin confinamiento mientras lo ensamblan y empaquetan todo más tarde cuando lo empujan a producción. Obtenga más información sobre las diferentes formas en que se pueden realizar las instantáneas configurado en otro artículo.

Máquinas virtuales vs contenedores

Si debe usar una máquina virtual o un contenedor depende de su caso de uso. Ambas son excelentes tecnologías por razones distintas, no necesariamente competidoras. Las máquinas virtuales permiten a los usuarios ejecutar varios sistemas operativos en el mismo hardware y los contenedores permiten a los usuarios implementar varias aplicaciones en el mismo sistema operativo, en una sola máquina.

Pros y contras de las máquinas virtuales

Los beneficios de usar una máquina virtual incluyen, entre otros:

  • Los equipos son más eficientes con los recursos computacionales.
  • Soporte para aplicaciones más grandes y complejas que necesitan la funcionalidad completa del sistema operativo en un solo servidor.
  • La capacidad de convertir un servidor en muchos
  • El trabajo potencialmente riesgoso puede aislarse del entorno anfitrión.
  • Ejecución de varias versiones del mismo entorno de SO en la misma máquina.
  • Las máquinas virtuales admiten y ejecutan aplicaciones heredadas que solo funcionan en sistemas operativos obsoletos.
  • Las máquinas virtuales pueden proporcionar funciones de recuperación ante desastres que extraen datos importantes de los problemas en el host.

Y, por supuesto, hay varias advertencias que incluyen, pero no se limitan a:

  • La ejecución de varias máquinas virtuales en un solo host puede provocar un rendimiento inestable y sobrecargar los recursos del host si no hay restricciones.
  • De algunos proveedores, especialmente a gran escala, es posible que deba soportar los costos de licencia para cada máquina virtual.
  • La virtualización tiene diferencias de rendimiento inherentes simplemente como resultado de la abstracción del hardware y puede plantear problemas para solucionar problemas dependientes o basados ​​en el tiempo.
  • Los hosts sin extensiones de hardware en la CPU pueden no permitir el acceso a recursos específicos. Esto se conoce como paravirtualización, pero está más allá del alcance de este artículo.

Pros y contras de los contenedores

Los beneficios de los contenedores incluyen, entre otros:

  • Seguridad; Los contenedores predeterminados de dy limitan lo que está expuesto al sistema host e Internet, además, con la capa adicional proporcionada por el contenedor, el nivel de seguridad aumenta.
  • Escalabilidad; Las aplicaciones y los servicios de gran tamaño se pueden dividir para ejecutarse en contenedores aislados que se pueden distribuir en varios recursos.
  • Manejabilidad; cuando las aplicaciones se dividen en contenedores, los desarrolladores pueden centrarse en las características y los aspectos individuales de la aplicación en lugar de preocuparse por todo.
  • Portabilidad; Los contenedores se ejecutan en cualquier arquitectura y se pueden usar en cualquier lugar de la pila, por lo que el mismo entorno de contenedores se puede usar desde el desarrollo hasta la producción.

Y, por supuesto, hay varias advertencias que incluyen, pero no se limitan a:

  • La configuración y la organización pueden ser difíciles porque los usuarios necesitan desarrollar una estrategia sobre cómo quieren operar su entorno particular.
  • El enfoque compartimentado de los contenedores puede generar problemas en los que los cambios en un contenedor tienen un impacto negativo en el resto de la aplicación.
  • El soporte y mantenimiento de aplicaciones, o partes de aplicaciones, dentro de contenedores se vuelve más difícil cuanto más aplicaciones se desglosan.
  • Dado que los contenedores pueden compartir el mismo sistema operativo, también comparten todas las amenazas y vulnerabilidades de seguridad de ese sistema operativo.

Conclusión

La virtualización puede existir en cualquier lugar donde la computación sea importante. Se utiliza para aislar todo lo que se está haciendo de el ordenador host y utilizar recursos específicos de manera más eficiente. Hay dos tipos principales de virtualización: máquinas virtuales y contenedores. Cada uno tiene sus pros y sus contras y se pueden utilizar de forma independiente o conjunta, pero ambos tienen el objetivo de proporcionar flexibilidad y eficiencia en la implementación y gestión de aplicaciones. En nuestro próximo artículo hablaremos con más detalle sobre algunos de los temas tratados aquí.

Leave a Comment

You may also like