Introducción a la Virtualización
Antes de la virtualización, la configuración de servidores era un proceso mucho más rígido y costoso. Cada aplicación requería un servidor físico dedicado. Esto significaba que para ejecutar múltiples aplicaciones (como un servidor web, un servidor de correo electrónico, un servidor de base de datos, etc.), se necesitaban múltiples servidores físicos.
1. Servidores antes de la Virtualización:
- Configuración típica: Un servidor físico alojaba el sistema operativo (OS), las aplicaciones (Apps) y los componentes de hardware subyacentes (CPU, RAM, almacenamiento, NIC).
- Ineficiencia: Si una empresa necesitaba ejecutar un servidor web, uno de correo electrónico y uno de base de datos, se requerían tres servidores físicos separados.
- Problemas asociados:
- Subutilización: La mayoría de los servidores físicos estaban infrautilizados, operando muy por debajo de su capacidad.
- Costo elevado: Cada servidor físico implicaba costos de hardware, espacio, energía y mantenimiento.
- Complejidad de la red: La gestión de múltiples interfaces de red (NIC) en un entorno no virtualizado podía ser engorrosa.
✨ La virtualización surge como una solución fundamental para abordar estas ineficiencias, permitiendo una mejor utilización de los recursos y una mayor flexibilidad.
2. Virtualización
La virtualización es la tecnología que permite dividir los recursos de hardware de un único servidor físico en múltiples servidores virtuales, llamados Máquinas Virtuales (VM). Cada VM ejecuta su propio sistema operativo y aplicaciones de forma independiente.
Beneficios de la Virtualización:
- Particionamiento: Permite ejecutar múltiples sistemas operativos en una sola máquina física. Se dividen los recursos del servidor entre las máquinas virtuales.
- Aislamiento: Proporciona tolerancia a fallos y seguridad a nivel de hardware. Si una VM falla, no afecta a las demás. Preserva el rendimiento con recursos de hardware avanzados.
- Encapsulación: Guarda el estado completo de una máquina virtual en un archivo. Esto facilita la migración y copia de máquinas virtuales entre diferentes servidores físicos.
- Independencia de hardware: Provisiona o migra cualquier máquina virtual a cualquier servidor físico compatible, lo que reduce la dependencia de hardware específico.
Beneficios generales de la virtualización:
- Reducción de capital y costos operativos: Menos hardware físico significa menos gastos iniciales y de funcionamiento.
- Minimización o eliminación del tiempo de inactividad: La facilidad para mover VMs entre servidores permite un mantenimiento sin interrupciones y una rápida recuperación de desastres.
- Mayor productividad, eficiencia, agilidad y capacidad de respuesta: Se pueden provisionar nuevos servidores virtuales rápidamente para satisfacer las demandas cambiantes.
- Implementación más rápida de aplicaciones y recursos: El despliegue de software se acelera al no depender de la configuración física.
- Mayor continuidad del negocio y recuperación de desastres: La capacidad de replicar y migrar VMs facilita la implementación de estrategias de respaldo y recuperación.
- Centros de datos simplificados: La consolidación de servidores reduce la huella física y la complejidad de la gestión del centro de datos.
- Disponibilidad de una infraestructura de centro de datos definida por software (SDDC): La virtualización es el pilar de los SDDC, donde toda la infraestructura se gestiona por software.
3. Tipos de Hipervisores
El corazón de la virtualización es el hipervisor, también conocido como Monitor de Máquina Virtual (VMM). Es un software que gestiona y asigna los recursos de hardware subyacentes a cada máquina virtual.
- Hipervisor Tipo 1 (Bare-Metal):
- Definición: Este tipo de hipervisor se ejecuta directamente sobre el hardware físico del servidor, sin necesidad de un sistema operativo intermedio.
- Características:
- Cada VM se ejecuta en su propio sistema operativo.
- Un hipervisor se utiliza para gestionar y asignar los recursos de hardware a cada VM.
- Ejemplos: VMware ESXi, Microsoft Hyper-V, Citrix XenServer.
- Considerado “bare-metal” porque reside directamente en el hardware. También se le llama hipervisor nativo.
- Uso: Este es el tipo de hipervisor utilizado en entornos de centros de datos debido a su rendimiento y seguridad superiores.
- Hipervisor Tipo 2 (Hosted):
- Definición: Este tipo de hipervisor se ejecuta como una aplicación sobre un sistema operativo ya existente (el sistema operativo anfitrión o Host OS).
- Características:
- El sistema operativo anfitrión se ejecuta directamente en el hardware.
- Las VMs se ejecutan como “invitados” (Guest OS) sobre el hipervisor, que a su vez es una aplicación del Host OS.
- Ejemplos: VMware Workstation, Oracle VirtualBox, Parallels Desktop.
- Comúnmente utilizado en entornos personales o de laboratorio (como Windows o macOS), donde no se requiere un alto rendimiento o escala empresarial.
4. Máquinas Virtuales (VMs)
Las VMs son emulaciones de sistemas informáticos que pueden ejecutar un sistema operativo y aplicaciones como si fueran un ordenador físico independiente.
- Las VMs utilizan un hipervisor para asignar recursos de hardware.
- Cada VM tiene su propio sistema operativo, que puede ser diferente para cada VM.
- Son fáciles de crear, eliminar, mover y replicar entre servidores físicos.
- Cada VM arranca su propio sistema operativo, lo que puede llevar más tiempo (minutos).
- Las VMs suelen requerir más espacio en disco (gigabytes) y recursos de CPU/RAM, ya que cada una ejecuta un sistema operativo completo.
- Son menos portátiles que los contenedores, ya que incluyen un sistema operativo completo.
- Las VMs están más aisladas entre sí; si una falla, no afecta a las demás.
4.1 Conectando VMs a la Red
Para que las VMs puedan comunicarse entre sí y con redes externas, se requiere una configuración de red específica dentro del entorno virtualizado.
- Las VMs se conectan entre sí y a la red externa a través de un vSwitch (virtual switch) en el hipervisor.
- Un vSwitch es como un conmutador de red físico, pero implementado en software.
- Las vNIC (virtual NICs) de las VMs se conectan al vSwitch.
- El vSwitch se conecta a las NIC físicas del servidor (también llamadas “uplinks”) para comunicarse con la red externa.
- Se pueden usar VLANs (Virtual Local Area Networks) para segmentar el tráfico a nivel de Capa 2, permitiendo que VMs en diferentes VLANs se comuniquen de manera controlada.
4.2 Contenedores
Mientras que las VMs virtualizan el hardware, los contenedores virtualizan el sistema operativo.
- Definición: Los contenedores son paquetes de software que contienen una aplicación y todas sus dependencias (binarios, librerías, etc.) para ejecutarse de manera consistente en cualquier entorno.
- Funcionamiento: Múltiples aplicaciones pueden ejecutarse en un solo contenedor, pero lo más común es una aplicación por contenedor.
- Motor de Contenedores: Los contenedores se ejecutan sobre un Motor de Contenedores (como Docker) que, a su vez, se ejecuta sobre un sistema operativo host.
- Características:
- Son livianos (pequeño tamaño en MB) e incluyen solo lo necesario para ejecutar la aplicación específica.
- Arrancan en milisegundos.
- Consumen menos espacio en disco y recursos de CPU/RAM que las VMs, ya que comparten el kernel del sistema operativo del host.
- Son muy portátiles y pueden moverse fácilmente entre diferentes sistemas.
- Están menos aislados que las VMs, ya que comparten el mismo kernel del sistema operativo host.
- Orquestación de Contenedores: Kubernetes (originalmente de Google) es la plataforma más popular para la orquestación de contenedores, automatizando el despliegue, escalado y gestión. Docker Swarm es otra herramienta de orquestación.
- Microservicios: La arquitectura de microservicios, donde una aplicación se divide en servicios más pequeños e independientes, es ideal para contenedores.
VMs vs. Contenedores
| Característica | Máquinas Virtuales (VMs) | Contenedores |
|---|---|---|
| Tiempo de arranque | Minutos (cada VM arranca su propio sistema operativo) | Milisegundos (comparten el kernel del sistema operativo del host) |
| Espacio en disco | Mayor (gigabytes) | Menor (megabytes) |
| Uso de CPU/RAM | Mayor (cada VM ejecuta su propio sistema operativo) | Menor (comparten el kernel del host) |
| Portabilidad | Relativamente menos portátil | Muy portátil entre entornos |
| Aislamiento | Mayor aislamiento (fallo de una VM no afecta a otras) | Menor aislamiento (comparten el kernel del host) |
| Componentes incluidos | Aplicaciones, librerías, binarios y sistema operativo | Aplicaciones, librerías y binarios (comparten el kernel del host) |
| Tecnología subyacente | Hipervisor (por ejemplo: VMware, Hyper-V, KVM) | Motor de contenedores (por ejemplo: Docker, containerd, Podman) |
La elección entre VMs y contenedores a menudo depende de los requisitos específicos de la aplicación y del entorno. Las VMs son ideales para un aislamiento robusto y cuando se necesita ejecutar diferentes sistemas operativos. Los contenedores son excelentes para la agilidad, la eficiencia de recursos y los microservicios. En la actualidad, es común ver una combinación de ambos, con contenedores ejecutándose dentro de VMs, especialmente en entornos de nube.
La transición hacia la virtualización, la automatización y DevOps ha impulsado un cambio significativo en la forma en que las empresas desarrollan y operan software.
5. Cloud Services (Servicios en la Nube)
La virtualización es la base sobre la que se construyen los servicios en la nube. Antes de la nube, las infraestructuras de TI tradicionales se basaban en:
- On-Premises: Todos los servidores, dispositivos de red y otra infraestructura se ubicaban en las instalaciones de la empresa. La empresa era responsable de la compra, propiedad, alimentación y refrigeración.
- Colocación: Los centros de datos alquilaban espacio a los clientes para ubicar su infraestructura (servidores, equipos de red). El centro de datos proporcionaba energía, espacio, refrigeración y conectividad, pero la propiedad y gestión del hardware seguían siendo del cliente.
🧐 El NIST (National Institute of Standards and Technology) define el Cloud Computing como un modelo para habilitar el acceso a la red, bajo demanda y de autoservicio, a un pool compartido de recursos computacionales configurables (por ejemplo, redes, servidores, almacenamiento, aplicaciones y servicios) que pueden ser rápidamente provisionados y liberados con un mínimo esfuerzo de gestión o interacción con el proveedor.
5.1 Las Cinco Características Esenciales del Cloud Computing
-
On-Demand Self-Service (Autoservicio Bajo Demanda):
- Un consumidor puede aprovisionar unilateralmente capacidades de computación (servidor, almacenamiento, red) según sea necesario, automáticamente y sin la intervención humana del proveedor.
- El cliente puede usar o detener el servicio (a través de un portal web) libremente y en cualquier momento, sin necesidad de interactuar con el proveedor de servicios.
-
Broad Network Access (Amplio Acceso a la Red):
- Las capacidades están disponibles a través de la red y son accesibles mediante mecanismos estándar que promueven el uso por plataformas heterogéneas (teléfonos móviles, laptops, tablets, estaciones de trabajo).
- El servicio es accesible a través de conexiones de red estándar (Internet o conexiones WAN) y desde una variedad de dispositivos.
-
Resource Pooling (Agrupación de Recursos):
- Los recursos de computación del proveedor (CPU, RAM, almacenamiento, ancho de banda de red) se agrupan para atender a múltiples consumidores en un modelo multi-tenencia.
- Hay una sensación de independencia de la ubicación, lo que significa que el cliente no tiene control o conocimiento sobre la ubicación exacta de los recursos físicos, pero puede especificar la ubicación a un nivel más alto de abstracción (por ejemplo, país, estado, centro de datos).
- Cuando un cliente solicita un recurso (por ejemplo, crea una VM), los recursos se asignan desde este pool compartido.
-
Rapid Elasticity (Rápida Elasticidad):
- Las capacidades pueden ser elásticamente provisionadas y liberadas, en algunos casos automáticamente, para escalar rápidamente hacia afuera y hacia adentro.
- Las capacidades disponibles para el aprovisionamiento parecen ilimitadas y se pueden adquirir en cualquier cantidad en cualquier momento.
- Los clientes pueden expandir rápidamente los servicios que utilizan en la nube (por ejemplo, añadir nuevas VMs, expandir el almacenamiento) desde un pool de recursos que parece infinito.
-
Measured Service (Servicio Medido):
- Los sistemas de nube controlan y optimizan automáticamente el uso de recursos aprovechando una capacidad de medición a un cierto nivel de abstracción apropiado para el tipo de servicio (por ejemplo, almacenamiento, procesamiento, ancho de banda y cuentas de usuario).
- El uso de recursos se puede monitorear, controlar y reportar, proporcionando transparencia tanto al proveedor como al consumidor del servicio utilizado.
- El proveedor de servicios de nube mide el uso de los recursos por parte del cliente. Los clientes pagan por los recursos consumidos (por ejemplo, X dólares por gigabyte de almacenamiento por día).
5.2 Los Tres Modelos de Servicio del Cloud Computing
En el cloud computing, todo se proporciona como un ‘servicio’. Los proveedores de la nube ofrecen diferentes capas de servicios:
-
Software as a Service (SaaS):
- Definición: El proveedor proporciona aplicaciones de software completas y listas para usar que el consumidor puede acceder a través de una interfaz de cliente ligero (por ejemplo, un navegador web) o una interfaz de programa.
- Características: El consumidor no gestiona ni controla la infraestructura de la nube subyacente (red, servidores, sistemas operativos, almacenamiento), con la posible excepción de configuraciones de aplicación de usuario limitadas.
- Ejemplos: Microsoft Office 365, Gmail, Salesforce.
-
Platform as a Service (PaaS):
- Definición: El proveedor proporciona la capacidad de desplegar aplicaciones creadas o adquiridas por el consumidor utilizando lenguajes de programación, librerías, servicios y herramientas soportadas por el proveedor.
- Características: El consumidor no gestiona ni controla la infraestructura de la nube subyacente (red, servidores, sistemas operativos, almacenamiento), pero tiene control sobre las aplicaciones desplegadas y posiblemente las configuraciones del entorno de alojamiento.
- Ejemplos: AWS Lambda, Google App Engine, Heroku.
-
Infrastructure as a Service (IaaS):
- Definición: El proveedor proporciona capacidades fundamentales de computación (procesamiento, almacenamiento, redes y otros recursos informáticos fundamentales) donde el consumidor puede desplegar y ejecutar software arbitrario, que puede incluir sistemas operativos y aplicaciones.
- Características: El consumidor no gestiona ni controla la infraestructura de la nube subyacente, pero tiene control sobre los sistemas operativos, el almacenamiento, las aplicaciones desplegadas y posiblemente un control limitado de los componentes de red selectos (por ejemplo, firewalls de host).
- Ejemplos: Amazon EC2, Google Compute Engine, Microsoft Azure Virtual Machines.
5.3 Los Cuatro Modelos de Despliegue del Cloud
La mayoría de la gente asocia la ’nube’ con proveedores de nube públicos como AWS, Azure y GCP, pero existen otros modelos de despliegue:
-
Private Cloud (Nube Privada):
- Definición: La infraestructura de la nube está provisionada para uso exclusivo de una única organización que comprende múltiples consumidores (por ejemplo, unidades de negocio).
- Características: Puede ser propiedad, gestionada y operada por la organización, un tercero o una combinación de ellos, y puede existir en las instalaciones (on-premise) o fuera de ellas.
- Ejemplos: AWS ofrece nubes privadas para organizaciones como el Departamento de Defensa de EE. UU.
- Las nubes privadas son generalmente utilizadas por grandes empresas.
- Los mismos tipos de servicios ofrecidos en la nube pública (SaaS, PaaS, IaaS) también se pueden implementar en una nube privada.
-
Community Cloud (Nube Comunitaria):
- Definición: La infraestructura de la nube está provisionada para uso exclusivo por una comunidad específica de consumidores de organizaciones que tienen preocupaciones compartidas (por ejemplo, misión, requisitos de seguridad, política y consideraciones de cumplimiento).
- Características: Puede ser propiedad, gestionada y operada por una o más de las organizaciones de la comunidad, un tercero o una combinación de ellos, y puede existir en las instalaciones o fuera de ellas.
- Este es el modelo de despliegue menos común.
- Similar a una nube privada, pero la infraestructura se comparte para un grupo específico de organizaciones.
-
Public Cloud (Nube Pública):
- Definición: La infraestructura de la nube está provisionada para uso abierto por el público en general.
- Características: Puede ser propiedad, gestionada y operada por una empresa, académica o una organización gubernamental, o alguna combinación de ellos. Existe en las instalaciones del proveedor de la nube.
- Este es el modelo de despliegue más común.
- Ejemplos: AWS (Amazon Web Services), Microsoft Azure, GCP (Google Cloud Platform), OCI (Oracle Cloud Infrastructure), IBM Cloud, Alibaba Cloud.
-
Hybrid Cloud (Nube Híbrida):
- Definición: La infraestructura de la nube es una composición de dos o más infraestructuras de nube distintas (privada, comunitaria o pública) que permanecen como entidades únicas, pero están unidas por tecnología estandarizada o propietaria que permite la portabilidad de datos y aplicaciones (por ejemplo, el equilibrio de carga entre nubes).
- Características: Es básicamente cualquier combinación de los tipos de despliegue anteriores.
- Uso: Una empresa puede usar una nube privada para datos sensibles y una nube pública para cargas de trabajo que pueden desbordarse o para aplicaciones menos críticas.
Beneficios del Cloud Computing
- Costo (CapEx eliminado): Se reducen o eliminan los gastos de capital (CapEx) de comprar hardware y software, configurar centros de datos, etc.
- Escala Global (Glocal Scale): Los servicios en la nube pueden escalar globalmente a un ritmo rápido. Los servicios se pueden configurar y ofrecer a clientes de una ubicación geográfica cercana.
- Velocidad/Agilidad: Los servicios se proporcionan bajo demanda, y grandes cantidades de recursos pueden aprovisionarse en minutos.
- Productividad: Los servicios en la nube eliminan la necesidad de muchas tareas que consumen tiempo, como la adquisición de servidores físicos, el cableado, la instalación y actualización de sistemas operativos, etc.
- Fiabilidad: Los backups en la nube son muy fáciles de realizar. Los datos pueden replicarse en múltiples sitios en diferentes ubicaciones geográficas para soportar la recuperación de desastres.
Conectando a los Recursos de la Nube
Para acceder a los recursos de la nube, las empresas suelen utilizar diferentes métodos de conectividad:
- Internet: El acceso más básico, adecuado para aplicaciones menos sensibles.
- VPN (Virtual Private Network): Una conexión segura (como un túnel IPsec VPN) sobre Internet para proteger los datos en tránsito entre la red empresarial y los recursos de la nube.
- WAN privada (Private WAN): Conexiones dedicadas y privadas proporcionadas por proveedores de servicios de WAN, ofreciendo mayor rendimiento, fiabilidad y seguridad que Internet.
Para profundizar en este tipo de conexiones consultar Arquitecturas WAN
👉 La virtualización y el cloud computing han revolucionado la forma en que las empresas gestionan y despliegan sus recursos de TI. Desde la consolidación de servidores con hipervisores hasta la agilidad de los contenedores y la flexibilidad de los servicios en la nube (SaaS, PaaS, IaaS), estas tecnologías ofrecen eficiencias, escalabilidad y una reducción significativa de costos. Comprender estos conceptos es fundamental para cualquiera que trabaje en el ámbito de las TI modernas.