Curso
Até pouco tempo, as salas de servidores seguiam uma regra simples: uma máquina para cada função. O e-mail rodava em um servidor próprio. O compartilhamento de arquivos tinha um dedicado. O banco de dados vivia em outro. Cada sistema tinha seu próprio ciclo de patches, consumo de energia e falhas de hardware, multiplicados em uma sala cheia de máquinas subutilizadas.
Muitas dessas máquinas eram compradas pensando no pior dia do ano e passavam o resto do tempo esperando. A virtualização virou esse jogo. Em vez de dedicar um servidor para cada serviço, as equipes começaram a agrupar várias cargas de trabalho em um número menor de hosts mais robustos. Cada workload ainda roda no seu próprio ambiente, mas a pegada física encolhe: menos servidores para comprar, cabeamento, energia, refrigeração e, no fim, aposentar.
Este guia cobre as partes que importam na prática: o que faz o hypervisor, onde entram os Tipos 1 e 2, como funciona a alocação de recursos e como VMs, containers e serviços em nuvem se relacionam. A ideia é ajudar você a escolher a ferramenta certa e entender as limitações que aparecem depois da primeira definição.

Imagem por wirestock no Freepik.
Como a virtualização funciona
A virtualização permite que um único host físico execute várias “máquinas” ao mesmo tempo — cada uma com seu próprio sistema operacional, processos e filesystem. O componente que torna isso viável é o hypervisor: a camada de controle que divide CPU, memória, armazenamento e rede entre os guests e reforça os limites entre eles.
A camada de hypervisor
O hypervisor é o “controlador de tráfego”. Os guests pedem tempo de CPU, páginas de RAM, I/O de disco e acesso à rede; o hypervisor agenda esses pedidos para que uma VM não deixe as outras na seca nem tome conta do host.
CPUs modernas incluem extensões de virtualização (Intel VT-x, AMD AMD-V) que reduzem a sobrecarga de tradução que deixava a virtualização em desktops lenta. Essas extensões são um dos grandes motivos de a virtualização em desktops ter deixado de parecer um experimento. Com hardware moderno, rodar algumas VMs em um notebook de desenvolvimento costuma ser entediante — no bom sentido.
Atribuição de recursos é o que você mais ajusta no dia a dia:
- CPU: quantos núcleos virtuais o guest enxerga
- Memória: quanta RAM pode usar antes de começar a trocar para disco ou travar
- Armazenamento: um disco virtual que, do ponto de vista do guest, se comporta como um drive físico
- Rede: NICs virtuais que se conectam por switches virtuais à rede real
Dentro do guest, tudo parece normal: o SO inicializa, pacotes são instalados, arquivos são gravados, sockets abrem. O que você não vê de dentro da VM é a arbitragem por baixo — quem pega CPU em seguida, cujas gravações em disco entram na fila e quando o host está saturando.
Hypervisors Tipo 1 vs. Tipo 2
A maioria dos hypervisors cai em dois grupos, e a diferença principal é onde o hypervisor vive.
- Tipo 1 (bare metal) roda direto no hardware do host e é o padrão em produção porque desperdiça menos capacidade com “a camada de baixo”. ESXi e Hyper-V em servidores entram aqui, e KVM é comumente usado como camada de virtualização em stacks baseadas em Linux.
- Tipo 2 (hosted) roda como um aplicativo no seu SO existente. Você mantém Windows/macOS/Linux como host e instala o VirtualBox ou o VMware Workstation por cima. É a forma mais simples de montar um lab pequeno em uma máquina pessoal, e geralmente é por onde as pessoas começam.
|
Tipo 1 |
Tipo 2 |
|
|
O que há por baixo |
Somente hardware |
Sistema operacional completo |
|
Velocidade |
Melhor, menos overhead |
Pequena perda de desempenho |
|
Onde aparece |
Provedores de nuvem, data centers corporativos |
Notebooks de desenvolvedores, labs caseiros |
|
Exemplos comuns |
ESXi, Hyper-V, KVM |
VirtualBox, Workstation, Parallels |
Alocação de recursos
Ao criar uma VM, você faz uma aposta: “esta carga precisa mais ou menos de tanta CPU, memória e disco”. Os hypervisors dão flexibilidade em como esses recursos são representados e reservados.
O provisionamento de armazenamento é o lugar mais fácil de ver o trade-off:
- Thick provisioning reserva todo o tamanho do disco virtual de cara. Crie um disco de 100GB e o host separa esse espaço imediatamente, use a VM ou não. É simples e previsível, mas você paga o custo de armazenamento antecipado — mesmo quando a VM está quase vazia.
- Thin provisioning adia o custo. O guest ainda vê um disco de 100GB, mas o host só consome espaço conforme os blocos são gravados. Isso melhora a utilização e permite over-allocation, mas também cria um modo de falha: se o host ficar sem disco real, as VMs podem começar a apresentar erros difíceis de reverter rapidamente.
CPU e memória costumam ser tratadas com a mesma mentalidade “probabilística” por meio de overcommitment. Você pode alocar mais CPU virtual total do que tem fisicamente porque espera que as cargas não piquem ao mesmo tempo. Isso funciona bem para workloads variados, mas pode gerar disputa se tudo ficar ocupado de uma vez. Overcommitment não é “errado” — só significa que você precisa ter visibilidade dos pontos de pressão do host.
Snapshots e live migration
Duas funções merecem destaque porque mudam a operação do dia a dia, não só o diagrama de arquitetura.
- Snapshots dão um ponto de retorno. Tire um antes de um patch ou mudança de configuração arriscada e você consegue desfazer rápido se a VM parar de inicializar ou se o app se comportar mal. Por isso snapshots são comuns em teste/homologação e durante janelas de manutenção.
- Live migration permite mover uma VM em execução para outro host com pouca interrupção. Na prática, é como a manutenção acontece em escala: esvazia um host, aplica patch ou troca hardware, reequilibra cargas e mantém serviços ao cliente no ar.
Tipos de virtualização que importam
Existem formas especializadas de virtualização (de rede, armazenamento, dados), mas a maioria das equipes esbarra repetidamente em três categorias.
Virtualização de servidores
A virtualização de servidores é o padrão de batalha: um host físico roda muitas instâncias de servidor, cada uma como uma VM com seu próprio SO e aplicativos.
É aqui que os ganhos aparecem rápido. Pense na típica “frota pequena” de uma empresa: um web app leve, um banco de dados, dashboards internos, um scheduler, um serviço de arquivos, monitoramento, talvez um broker de mensagens. Separados, todos parecem merecer um servidor. Na realidade, a maior parte passa longos períodos fazendo quase nada. A virtualização transforma esse tempo ocioso em capacidade compartilhada.
Um exemplo concreto que muitas organizações vivenciam:
10 servidores físicos → 2 hosts de virtualização
O que muda após a consolidação não é só custo. O provisionamento fica mais rápido. A capacidade vira um pool, não ilhas isoladas. Quando uma carga precisa de mais recursos, você ajusta as alocações ou move a VM, em vez de comprar hardware novo.
O lado negativo é o destino compartilhado: quando um host falha, várias VMs somem de uma vez. Por isso ambientes de produção são construídos com redundância, monitoramento e margens de capacidade conservadoras.
Virtualização de desktops (VDI)
VDI executa ambientes de desktop como VMs em um data center (ou nuvem). Os usuários se conectam pela rede; computação e armazenamento ficam centralizados, não no endpoint.
VDI aparece quando as organizações querem:
- desktops que acompanham o usuário em vários dispositivos
- atualizações, patches e políticas centralizados
- menor risco de dados ficarem em endpoints que podem ser perdidos ou roubados
Uma comparação rápida ajuda a desfazer uma confusão comum:
- Remote Desktop: você acessa uma máquina existente em outro lugar.
- VDI: a organização provisiona VMs de desktop (geralmente por usuário ou por sessão) em infraestrutura compartilhada.
As telas podem parecer iguais, mas o modelo operacional não é. Latência é uma preocupação central, trabalhos pesados de GPU aumentam custos rápido e operar um grande pool de desktops exige planejamento de capacidade de verdade.
Virtualização de aplicações e containers
Containers resolvem um problema diferente das VMs. Em vez de virtualizar hardware para rodar sistemas operacionais completos, containers isolam aplicações compartilhando o kernel do host. Você tem separação nos níveis de processo/filesystem/rede sem inicializar outro sistema operacional.
O Docker tornou esse modelo acessível: empacote o app com suas dependências em uma imagem e rode o mesmo artefato no desenvolvimento, CI e produção. Essa repetibilidade explica a adoção rápida — menos surpresas específicas de ambiente, menos “instale primeiro estes dez itens” na documentação.
Containers também ganham na ergonomia prática:
- Inicializam em segundos, não minutos
- Têm pegada muitas vezes em megabytes, não gigabytes
- Rodar muitos serviços pequenos localmente é viável
VMs e containers resolvem problemas sobrepostos, mas distintos:
|
Requisito |
Abordagem recomendada |
Justificativa |
|
Rodar sistemas operacionais diferentes |
VMs |
Containers compartilham o kernel do host |
|
Deploy de microsserviços |
Containers |
Leves e rápidos para escalar |
|
Limites fortes de isolamento |
VMs |
Kernels e instâncias de SO separados |
|
Execução de pipeline CI/CD |
Containers |
Velocidade + consistência são prioridade |
|
Suporte a aplicações legadas |
VMs |
Compatibilidade total com o SO ajuda |
Um padrão comum em produção é “containers em VMs”. A fronteira da VM é usada para isolamento de infraestrutura e gestão da frota; containers cuidam do deploy e da escala na camada de aplicação. Nosso Introduction to Docker cobre o básico de containers. Nossa trilha Containerization and Virtualization with Docker and Kubernetes aprofunda padrões de orquestração.
VMs vs. containers vs. nuvem: qual é a diferença?
As pessoas juntam esses termos porque eles costumam aparecer na mesma stack. Ajuda separá-los pelo que você realmente está obtendo: um sistema operacional isolado (VM), um runtime de aplicação isolado (container) ou uma plataforma gerenciada que provisiona ambos (nuvem).
Máquinas virtuais
Uma máquina virtual empacota um sistema operacional completo mais hardware virtual e aplicações. Cada VM tem seu próprio kernel, o que oferece isolamento forte entre workloads no mesmo host.
O custo é o peso: instâncias completas de SO consomem mais memória, demoram mais para inicializar e geram imagens maiores. Esse overhead costuma ser aceitável em produção porque isolamento e compatibilidade valem o investimento.
Containers
Containers compartilham o kernel do SO do host enquanto isolam o runtime da aplicação. Esse kernel compartilhado é o que mantém containers leves e rápidos. Imagens tendem a ser menores e fáceis de mover, por isso containers se encaixam bem em fluxos modernos de deploy.
O isolamento de containers é real, mas não é o mesmo limite que “kernels separados”. Containers ainda dependem do kernel do host, por isso a sensibilidade da carga e a postura de segurança influenciam se times rodam containers direto no host ou dentro de VMs.
Computação em nuvem
Plataformas de nuvem se apoiam em virtualização (e muitas vezes em containers) e empacotam tudo em um plano de controle gerenciado: APIs, provisionamento, cobrança, rede e serviços que você não opera (bancos, filas, armazenamento de objetos, monitoramento).
Quando você lança uma instância EC2, está basicamente alugando uma VM da frota da AWS. Outros produtos — funções serverless, serviços gerenciados de containers — usam mecanismos mais leves de isolamento, mas a lógica é a mesma: a nuvem expõe recursos sob demanda e esconde muito do trabalho de infraestrutura atrás de uma API.
Um guia de decisão simples:
- Use VMs quando a separação de SO ou compatibilidade direcionar o design.
- Use containers quando quiser inicialização rápida e um artefato de deploy repetível.
- Use serviços de nuvem quando elasticidade e operação gerenciada importarem mais do que controlar os hosts subjacentes.
Na prática, a versão “empilhada” é comum: VMs na nuvem hospedam clusters Kubernetes, que escalam containers, que rodam aplicações. Para aprofundar em arquitetura de nuvem, confira nosso curso Understanding Cloud Computing e nosso curso Understanding Microsoft Azure Architecture and Services para serviços específicos do Azure.
Por que a virtualização importa
A virtualização persiste porque resolve problemas práticos em desenvolvimento, operações e trabalho com dados.
Desenvolvimento e testes
A virtualização torna barato criar ambientes controlados. Precisa testar um pipeline em duas versões de SO? Crie duas VMs, rode os mesmos passos e compare o comportamento. Quer tentar uma atualização arriscada? Faça um snapshot, siga em frente e, se precisar, volte atrás.
Ela também reduz o atrito de checagens multiplataforma. Um desenvolvedor no macOS pode validar o comportamento no Windows sem manter várias máquinas físicas em rotação.
Para dados, reprodutibilidade é o tema recorrente. Resultados frequentemente dependem de uma mistura específica de pacotes, bibliotecas de sistema e configuração. Ambientes virtualizados ajudam a manter essas dependências estáveis e portáteis.
Custo e eficiência
Agrupar recursos é a vantagem básica: você para de pagar por dez máquinas ociosas e passa a usar o mesmo hardware de forma mais consistente.
As economias aparecem em lugares prosaicos e mensuráveis: menos servidores para comprar, menos espaço em rack, menor exigência de refrigeração, menos contratos de manutenção e um estoque menor de hardware que mais tarde precisa ser substituído. Consolidação não elimina o trabalho operacional, mas muda seu formato.
Flexibilidade e escala
Provisionar vira uma tarefa de software. Em vez de comprar hardware, esperar entrega, montar em rack e fazer a imagem do SO, os times clonam um template, definem alocações e fazem o deploy.
A escala também fica menos rígida. Se a demanda sobe, você adiciona VMs ou redimensiona as existentes. Se a demanda cai, você recupera capacidade, em vez de deixar um servidor físico subutilizado por meses.
Recuperação de desastres não vira automática, mas a virtualização muda as ferramentas. Quando o “servidor” é uma imagem de VM gerenciada mais os dados, estratégias de replicação e recuperação ficam mais fáceis de padronizar do que eram na era de “um app por caixa”.
Desafios comuns e como lidar
A virtualização remove um conjunto de dores de cabeça e introduz outro. A maioria dos problemas não é misteriosa: são limites de recursos, disputa ou higiene operacional.
Problemas de desempenho
A queixa de desempenho mais comum é a contenção: várias VMs brigando pelo mesmo tempo de CPU, largura de banda de memória ou I/O de armazenamento. Tudo parece bem até que várias cargas piquem juntas; então a latência sobe e a vazão cai.
O que ajuda na prática:
- Monitore as métricas do host, não só do guest (CPU ready time, pressão de memória, latência de disco/I/O wait).
- Reveja o dimensionamento com frequência. Os dois extremos doem: superalocar desperdiça capacidade; subalocar causa swap e thrash.
- Trate uso alto sustentado como sinal de capacidade e planeje, em vez de perseguir sintomas VM por VM.
Uma minoria de workloads ainda pertence ao bare metal: sensibilidade extrema à latência, acoplamento a hardware especializado ou restrições de tempo real em que até pequenos desvios de agendamento são inaceitáveis.
Considerações de segurança
O isolamento de VMs é forte, mas não é um campo de força. Hosts são compartilhados, hypervisors são infraestrutura crítica e vulnerabilidades — embora não cotidianas — existem.
Uma postura prática de segurança inclui:
- Aplicar patches a hypervisors e hosts rapidamente
- Segmentar redes para que “mesmo host” não signifique “mesma zona de confiança”
- Separar workloads altamente sensíveis quando o perfil de risco exigir
Containers adicionam outra decisão: rodar containers direto no host ou dentro de VMs depende das suas exigências de isolamento e do modelo operacional.
Crescimento descontrolado de VMs
Virtualização facilita a criação, então os ambientes crescem rápido. Sem controles, você acaba com VMs órfãs, donos desconhecidos e máquinas que existem “por via das dúvidas”.
Um modelo de prevenção eficiente:
- Exigir tags de responsável e finalidade
- Atribuir datas de expiração para VMs de dev/teste
- Revisar a utilização com regularidade (e excluir o que estiver realmente ocioso)
- Automatizar limpeza em ambientes não produtivos
Auditorias costumam encontrar uma fração surpreendentemente alta de VMs fazendo pouco trabalho por muito tempo. A correção raramente é complexa; é principalmente disciplina e gestão de ciclo de vida.
Virtualização no mundo real
A virtualização aparece em lugares que muitas equipes usam diariamente, mesmo que não a nomeiem assim.
Desenvolvimento e ciência de dados
Sistemas de CI/CD costumam executar jobs em VMs ou containers efêmeros para que cada execução de pipeline comece limpa. Isso evita deriva de dependências e torna falhas mais fáceis de reproduzir.
O isolamento também evita que projetos se choquem. Um fluxo pode precisar de bibliotecas CUDA mais antigas; outro pode exigir versões mais novas. Ambientes separados impedem que esses requisitos virem um cabo de guerra de dependências.
Notebooks hospedados são outro caso em que a virtualização importa. Quando você roda Jupyter em plataformas como o Colab, o notebook está executando dentro de uma infraestrutura gerenciada por terceiros. Entender esse contexto torna limites de recurso, reinicializações e o comportamento do filesystem menos misteriosos.
Empresas e nuvem
Provedores de nuvem rodam virtualização em escala massiva. O negócio deles depende de empacotar com eficiência workloads diversos de clientes em frotas compartilhadas mantendo limites de isolamento intactos.
Empresas usam a mesma cartilha para consolidação e compatibilidade de legados. Virtualizar um aplicativo antigo pode mantê-lo rodando em hardware moderno muito depois de o servidor original ter chegado ao fim da vida útil.
Para setups híbridos, serviços como AWS Outposts existem porque organizações ainda querem modelos “estilo nuvem” enquanto rodam algumas cargas mais perto de suas instalações.
Aprendizado e experimentação
A virtualização continua sendo um dos ambientes mais seguros para aprender. Você pode rodar uma VM Linux, experimentar à vontade, quebrar, reverter um snapshot ou apagar tudo sem tocar no seu sistema principal.
Também é útil para simular sistemas com vários serviços em uma única máquina: uma camada web, uma camada de aplicação e um banco de dados se comunicando por redes virtuais — realismo suficiente para aprender os conceitos sem gerar conta na nuvem.
Para onde a virtualização está indo
Várias tendências estão moldando como as equipes vão usar virtualização nos próximos anos.
Edge computing leva mais cargas para perto de onde os dados são gerados. VMs leves e containers ajudam a padronizar deploy em locais distribuídos, mas gerenciar frotas na borda traz sua própria complexidade.
Gestão de recursos mais inteligente continua amadurecendo. As plataformas automatizam cada vez mais o right-sizing, reequilibram cargas com mais agressividade e expõem desperdícios mais rápido — especialmente onde o ajuste manual não escala.
Por fim, stacks híbridas viraram o padrão. O Kubernetes domina a orquestração de containers em muitos ambientes, e “containers dentro de VMs” segue comum em produção: isolamento de VM na camada de infraestrutura, flexibilidade de containers na camada de aplicação. Nosso Introduction to Kubernetes cobre os fundamentos.
Conclusão
A virtualização torna a infraestrutura moderna viável em escala: ela divide um host físico em ambientes isolados que podem ser criados, redimensionados, movidos e aposentados sem tocar no rack.
Para nós, profissionais de dados, isso não é detalhe de bastidor. Aparece em ambientes reproduzíveis, conflitos de dependências entre projetos e naqueles pequenos “por que este notebook reiniciou?” que fazem mais sentido quando lembramos que há um runtime gerenciado por baixo.
A forma mais rápida de fixar os conceitos é montar um mini-lab. Instale um hypervisor Tipo 2, crie uma VM Linux, faça um snapshot, quebre algo de propósito e reverta. Depois rode uma carga parecida em um container e compare o que muda: tempo de inicialização, pegada de recursos e o que “isolamento” realmente significa em cada caso.
Temos bons recursos para você continuar aprendendo:
- Containerization and Virtualization Concepts (fundamentos práticos)
- Introduction to Docker (containers na prática)
- Containerization and Virtualization with Docker and Kubernetes (trilha, fundamentos → orquestração)
Josep é cientista de dados e gerente de projetos no Conselho de Turismo da Catalunha, usando dados para melhorar a experiência dos turistas na Catalunha. Sua experiência inclui o gerenciamento de armazenamento e processamento de dados, juntamente com análises avançadas e a comunicação eficaz de insights de dados.
Ele também é um educador dedicado, lecionando no programa de mestrado em Big Data da Universidade de Navarra e contribuindo regularmente com artigos perspicazes sobre ciência de dados para o Medium e o KDNuggets.
Ele é bacharel em Engenharia Física pela Universidade Politécnica da Catalunha e mestre em Sistemas Interativos Inteligentes pela Universidade Pompeu Fabra.
Atualmente, ele está empenhado em tornar as tecnologias relacionadas a dados mais acessíveis a um público mais amplo por meio da publicação ForCode'Sake no Medium.
FAQs
Qual a diferença entre hypervisors Tipo 1 e Tipo 2?
Tipo 1 vai direto no hardware, sem nada por baixo. Tipo 2 precisa do Windows ou Mac por baixo primeiro. Servidores rodam Tipo 1. Seu notebook provavelmente usa Tipo 2 se você estiver com VirtualBox.
Quando devo usar uma VM em vez de um container?
Depende mesmo. Precisa de Windows e Linux na mesma máquina? VM. Construindo microsserviços? Containers fazem mais sentido. Preocupado com isolamento de segurança? Volte para VMs.
Preciso de hardware caro?
Um notebook com 16GB dá conta de algumas VMs. VirtualBox é gratuito.
Virtualização é o mesmo que computação em nuvem?
A nuvem usa virtualização, mas adiciona muito mais em cima, como sistemas de cobrança, APIs de provisionamento, bancos de dados gerenciados e rede. Virtualização é uma camada desse stack.



