O que é virtualização

No mundo do desenvolvimento web alguns termos são recorrentes: hospedagem de sites, cloud computing, containers, virtual machines, virtual service instance, para citar algumas.

No passado o programador se preocupava apenas com a lógica da aplicação e deixava a responsabilidade com infraestrutura apenas com o time de operações. Com a popularização dos conceitos e cultura DevOps, a responsabilidade passou a ser compartilhada.

Quando alguma dessas palavra é citada no contexto de desenvolvimento de software, dificilmente faz referência a alguma infraestrutura física. Tudo é virtualizado!

Desenvolvedores medianos dificilmente se preocupam com conceitos, ou como as coisas funcionam de verdade, mas se você chegou a este blog, este não deve ser o seu caso. Além do mais, entender esses conceitos é fundamental para o sucesso na carreira com desenvolvimento de software.

Antes de qualquer coisa, quando falamos sobre virtualização entenda que estamos fazendo refência a uma camada de software chamada hypervisor.

O que é Hypervisor

Um Hypervisor é um software que é executado em um computador chamado de host e é usado para criar e gerenciar virtual machines.

Um host pode ser um servidor em um data center, um desktop ou um simples laptop. Ele possui três componentes essênciais que estão demonstrados na imagem acima: CPU, memória RAM e rede. O Hypervisor virtualiza todas as funções do host.

Um Hypervisor pode ser do tipo 1 ou bare metal e rodar diretamente sobre o hardware físico. Esse tipo de Hypervisor é mais performático, porém mais complexo.

Na maioria dos casos o Hypervisor é do tipo 2 que roda em uma camada acima do sistema operacional. O Virtual Box é um exemplo de Hypervisor do tipo 2.

Uma observação importante: sistemas de containers como o Docker não são Hypervisors. Enquanto um Hypervisor funciona na parte superior do sistema operacional, o Docker funciona no próprio kernel do host.

Caso tenha alguma dúvida ou algo a acrescentar sobre sistemas e virtualizações deixe seu comentário.