O Que É uma Máquina Virtual? Computadores Emulados na Nuvem
Uma máquina virtual (VM) é um computador emulado por software: ela roda seu próprio sistema operacional completo sobre um hypervisor que compartilha uma máquina física entre muitas VMs isoladas.
Uma VM permite que um servidor físico finja ser muitos. Um hypervisor aloca CPU, memória e disco para cada VM, e cada uma roda um guest OS completo como se fosse dona do hardware. VMs são a base do compute em nuvem (instâncias EC2, VMs do Compute Engine) e de muitos runners de CI.
Como funciona a virtualização
Um hypervisor fica entre o hardware e os sistemas operacionais guest, dando a cada VM um conjunto virtual de CPU, memória, disco e rede. O guest OS roda normalmente, sem saber que está virtualizado, enquanto o hypervisor impõe o isolamento entre VMs no mesmo host.
VMs vs containers
Uma VM virtualiza o hardware e roda um SO completo com seu próprio kernel, então é mais pesada e inicializa mais devagar, mas isola fortemente. Um container compartilha o kernel do host, então é mais leve e inicia em milissegundos. Muitos sistemas rodam containers dentro de VMs para combinar isolamento com densidade.
Para que as VMs são boas
- Rodar software legado ou específico de um SO.
- Isolamento forte entre tenants ou workloads.
- Lift-and-shift de servidores existentes para a nuvem.
- Controle total sobre o sistema operacional.
VMs na nuvem
Os provedores de nuvem alugam VMs por segundo ou por hora: EC2 na AWS, Compute Engine no GCP, Virtual Machines no Azure. Você escolhe um tipo de máquina (CPU, memória) e uma imagem, e o provedor cuida do hardware físico e do hypervisor.
Papel no CI/CD
Runners de CI são muito frequentemente VMs: cada job roda em uma VM nova que é destruída depois, dando um ambiente limpo e isolado toda vez. Plataformas de runner gerenciado como a Latchkey provisionam runners baseados em VM sob demanda para que os jobs iniciem em uma máquina limpa e liberem a VM quando terminam.
Principais conclusões
- Uma VM é um computador emulado por software que roda um SO completo por meio de um hypervisor.
- VMs isolam mais fortemente que containers, mas são mais pesadas e mais lentas para iniciar.
- Runners de CI muitas vezes são VMs novas, por job, para um ambiente limpo e isolado.