Comprender cómo funciona la virtualización es fundamental para aprovechar al máximo Compute Engine, el servicio de infraestructura como servicio (IaaS) de Google Cloud. Desde la asignación lógica de recursos hasta la personalización de máquinas virtuales, este servicio ofrece flexibilidad, portabilidad y eficiencia que transforman la forma en que desplegamos aplicaciones.
¿Qué es la virtualización y por qué cambió la forma de trabajar?
La virtualización es la creación de recursos de cómputo —sistemas operativos, redes, almacenamiento— que están disponibles para los usuarios sin estar vinculados directamente a un hardware físico específico [0:12]. Detrás siempre existe hardware, pero los recursos se asignan de manera lógica, individualizada y aislada para cada usuario.
Antes de la virtualización, se trabajaba con el modelo conocido como bare metal: una máquina física con procesador, memoria y sistema operativo donde se montaban las aplicaciones con todas sus dependencias [0:48]. Este enfoque tenía dos problemas principales:
- Desperdicio de recursos: el hardware comprado no siempre se aprovechaba al cien por ciento.
- Alta carga administrativa: ensamblar, mantener y portar servidores físicos consumía tiempo y esfuerzo.
Con las máquinas virtuales se genera una capa de abstracción que permite dividir un servidor físico entre múltiples usuarios [1:17]. Cada uno recibe una cantidad asignada de RAM, procesamiento y sistema operativo, sin ocupar la totalidad del servidor.
¿Por qué la virtualización se volvió tan popular?
Las ventajas que impulsaron su adopción masiva son cuatro [1:56]:
- Escalamiento: agregar o reducir recursos según la demanda.
- Agilidad en el aprovisionamiento: crear máquinas en minutos, no en días.
- Optimización de recursos: mejor uso del hardware disponible.
- Portabilidad: mover máquinas virtuales entre entornos sin depender de un servidor físico específico.
Un ejemplo concreto: una aplicación en producción estuvo fuera de servicio aproximadamente doce horas porque un servidor físico fue trasladado entre ciudades [2:17]. Hoy, los negocios no pueden permitirse ese tipo de interrupciones.
¿Cómo funciona Compute Engine y qué opciones de máquinas ofrece?
En Compute Engine, Google administra la capa de hardware, el sistema operativo huésped y el hipervisor KVM [2:40]. Los usuarios despliegan sus sistemas operativos elegidos —Windows, Linux e incluso FreeBSD— y construyen sus aplicaciones sobre ellos. FreeBSD, sin embargo, solo puede lanzarse desde la línea de comandos o mediante la API [2:56].
¿Qué tipos de máquinas virtuales puedo elegir?
Existen varias modalidades según las necesidades:
- Máquinas estándar: configuraciones predefinidas con una relación establecida de memoria y CPUs [3:36].
- Máquinas personalizadas: permiten ajustar la cantidad exacta de RAM y CPUs que se necesitan [3:44].
- Máquinas preemptible: pueden ser destruidas por Google en cualquier momento, pero son significativamente más baratas. Son ideales para ambientes de pruebas, tareas en batch o clústeres distribuidos que toleran la pérdida de nodos [3:09].
- Máquinas sole tenant: garantizan que en el hardware físico subyacente solo existan máquinas virtuales de tu organización, un requisito de entidades reguladoras en ciertos países para el control de datos [4:17].
El modelo de cobro considera la cantidad de RAM, el número de CPUs, el tipo de sistema operativo (Windows o distribuciones comerciales como Red Hat o SUSE Enterprise tienen costo adicional), el tipo y cantidad de almacenamiento, y el tiempo que las máquinas permanecieron encendidas durante el mes [4:40]. Google ofrece una calculadora pública para estimar costos antes de aprovisionar recursos [5:12].
¿Para qué sirven los metadatos y los scripts de inicio y apagado?
Los metadatos de las máquinas virtuales son valores descriptivos accesibles desde la propia máquina [5:22]. Ya existen valores predeterminados como el nombre de la máquina o datos del proyecto, pero se pueden personalizar. Dos de los más útiles son los startup scripts y los shutdown scripts.
Los startup scripts ejecutan tareas automáticamente una vez que la máquina termina de arrancar [5:50]. Pueden contener shell scripting, código Python, ejecutables Java o cualquier lenguaje que el sistema operativo soporte.
Los shutdown scripts se ejecutan cuando una máquina se apaga o va a ser destruida [6:24]. En máquinas preemptible, el periodo de gracia es de aproximadamente treinta segundos; en máquinas regulares, puede extenderse hasta noventa segundos. Ese tiempo permite, por ejemplo, sincronizar registros, enviar datos a un backup o preparar la reanudación del procesamiento.
Ambos scripts se configuran de forma sencilla pasando las instrucciones mediante un comando específico, lo que abre posibilidades de automatización desde el primer momento en que una máquina cobra vida.
¿Ya has trabajado con máquinas virtuales en Google Cloud o estás por crear tu primera instancia? Comparte tu experiencia en los comentarios.