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.