
La virtualización juega un papel muy importante en casi todas las industrias de software de más rápido crecimiento en la presente. Es la almohadilla de la mayoría de la computación en la cúmulo, la metodología de narración para el ampliación 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 radio 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 idealización’ en la parte superior del hardware para dividir partes de los capital de una sola computadora, como procesadores, memoria, almacenamiento, etc., entre múltiples computadoras virtuales. El resultado puede ser máquinas virtuales (VM) o contenedores. Entreambos le permiten crear entornos aislados y seguros para pruebas, depuración, software heredado y para deyección específicas que no requieren todos los capital del hardware físico.
Hoy en día, la virtualización es una habilidad típico en arquitecturas de TI empresariales, ampliación de software y en el perímetro. Puede virtualizar numerosas partes de una ‘pila’ de computadoras 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 capital 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 posible?
Una máquina posible es un apelación que usa software para ejecutar cargas de trabajo e implementar aplicaciones. Cada VM ejecuta su propio sistema activo (SO) (el SO invitado) y se comporta como una computadora independiente que utiliza una parte de los capital de la computadora 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 llevar la batuta máquinas virtuales en diferentes lugares, la primera capa de sucursal 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 llevar la batuta la asignación de capital, las comunicaciones generales de VM a hardware y para comprobar 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 activo, excepto que solo interactúa positivamente con ellos a través de la aparejo 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 activo existente. Algunos ejemplos son: Parallels Desktop para Mac, QEMU y VirtualBox.
Cada sistema activo, 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, Supuesto 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 radio 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 posible en otro servidor o sistema host. En división de iniciar sesión en una computadora host, los usuarios obtienen entrada a la aplicación virtualmente, separando las aplicaciones del sistema activo y permitiendo que el usufructuario ejecute casi cualquier aplicación en otro hardware. De esta forma, los usuarios no tienen que preocuparse por el almacenamiento lugar y se pueden ejecutar múltiples aplicaciones de esta forma sin tan pronto como tocar el sistema host.
¿Qué son las redes virtuales?
Una parte esencia 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 posible. Esto se hace con una red posible entre las máquinas virtuales y el sistema activo host. La red es una partidura 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 radio de este artículo en particular.
Hay muchas formas de implementar una red posible, 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 forma, las máquinas virtuales en el entorno posible no son visibles para el exógeno, por eso las máquinas virtuales detrás de NAT se consideran protegidas. . Cuando se establece una conexión entre una dirección interiormente y fuera del entorno posible, 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 penetrar 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 aceptablemente cada VM trae su propio sistema activo, los contenedores pueden compartir el sistema activo 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 (último) bajo, con todo lo que necesita en un solo división. Por lo universal, 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 posible 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 división y, por lo tanto, se utilizan en muchas operaciones tradicionales. Los contenedores de Linux provienen del tesina de contenedores de Linux (LXC), una plataforma de contenedores de código extenso que es una interfaz de espacio de usufructuario para las herramientas, plantillas, bibliotecas y enlaces para permitir la creación y sucursal 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. Los contenedores Docker utilizan Docker Engine y muchas otras tecnologías de contenedores, incluido LXC, para crear entornos amigables para el desarrollador 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 encontrarse como un contenedor de máquina, Docker como un contenedor de proceso, los snaps pueden encontrarse como contenedores de aplicaciones. Ajusta el código y las dependencias del paquete de forma similar a los contenedores para apoyar el contenido de la aplicación retirado e inmutable. Tienen un ámbito 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 usufructuario 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 utilizando una aparejo indicación snapcraft que incorpora diferentes tecnologías de contenedores para crear una forma segura y casquivana de renovar para empaquetar aplicaciones para estaciones de trabajo o 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. Lea más sobre las diferentes formas en que se pueden configurar las instantáneas en otro artículo.
Máquinas virtuales vs contenedores
Si debe usar una máquina posible 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 activo, en una sola máquina.
Pros y contras de las máquinas virtuales
Los beneficios de usar una máquina posible incluyen, entre otros:
- Los equipos son más eficientes con los capital computacionales.
- Soporte para aplicaciones más grandes y complejas que necesitan la funcionalidad completa del sistema activo en un solo servidor.
- La capacidad de convertir un servidor en muchos
- El trabajo potencialmente riesgoso puede aislarse del entorno hospedador.
- 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 delante 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 capital del host si no hay restricciones.
- De algunos proveedores, especialmente a gran escalera, es posible que deba soportar los costos de abuso para cada máquina posible.
- La virtualización tiene diferencias de rendimiento inherentes simplemente como resultado de la idealización del hardware y puede desarrollar problemas para solucionar problemas dependientes o basados en el tiempo.
- Los hosts sin extensiones de hardware en la CPU pueden no permitir el entrada a capital específicos. Esto se conoce como paravirtualización, pero está más allá del radio 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, por otra parte, 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 capital.
- 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 división de preocuparse por todo.
- Portabilidad; Los contenedores se ejecutan en cualquier edificación y se pueden usar en cualquier división de la pila, por lo que el mismo entorno de contenedores se puede usar desde el ampliación hasta la producción.
Y, por supuesto, hay varias advertencias que incluyen, pero no se limitan a:
- La configuración y la estructura pueden ser difíciles porque los usuarios necesitan desarrollar una logística sobre cómo quieren especular su entorno particular.
- El enfoque compartimentado de los contenedores puede crear problemas en los que los cambios en un contenedor tienen un impacto placa en el resto de la aplicación.
- El soporte y mantenimiento de aplicaciones, o partes de aplicaciones, interiormente de contenedores se vuelve más difícil cuanto más aplicaciones se desglosan.
- Hexaedro que los contenedores pueden compartir el mismo sistema activo, incluso comparten todas las amenazas y vulnerabilidades de seguridad de ese sistema activo.
Conclusión
La virtualización puede existir en cualquier división donde la computación sea importante. Se utiliza para aislar todo lo que se está haciendo de la computadora host y utilizar capital específicos de forma más válido. 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 los dos tienen el objetivo de proporcionar flexibilidad y eficiencia en la implementación y administración de aplicaciones. En nuestro próximo artículo hablaremos con más detalle sobre algunos de los temas tratados aquí.