O que é uma máquina virtual? (Por que e quando usar)

Se você trabalha na indústria de software ou em torno dela, provavelmente já ouviu falar de máquinas virtuais. Se não, você pode estar se perguntando o que são e para que servem.

Como engenheiro de software, uso máquinas virtuais diariamente. São ferramentas potentes no desenvolvimento de software, mas também têm outros usos. Também conhecidas como VMs, muitas empresas as utilizam devido à sua flexibilidade, confiabilidade e economia; eles também evitam desastres de testes de software descontrolados.

Vamos dar uma olhada no que são as máquinas virtuais e por que elas são usadas.

O que é uma máquina virtual?

Uma máquina virtual é uma instância de um sistema operacional (SO), como Windows, Mac OS ou Linux, em execução no sistema operacional principal de um computador.

Normalmente, ele é executado em uma janela de aplicativo na área de trabalho. Uma máquina virtual tem funcionalidade completa e age como um computador ou máquina separada. Em essência, uma máquina virtual é um computador virtual executado dentro de outro computador conhecido como máquina host.

Máquina Virtual 1
Imagem 1: Máquina Virtual em execução em um laptop.

Uma máquina virtual não possui hardware (memória, disco rígido, teclado ou monitor). Ele usa hardware simulado da máquina host. Por isso, várias VMs, também chamadas de “convidados”, podem ser executadas em uma única máquina host.

Máquina Virtual 2
Imagem 2: máquina host executando várias VMs.

O host também pode executar várias VMs com diferentes sistemas operacionais, incluindo Linux, Mac OS e Windows. Esse recurso depende de um software chamado hypervisor (consulte a Imagem 1 acima). O hipervisor é executado na máquina host e permite criar, configurar, executar e gerenciar máquinas virtuais.

O hipervisor aloca espaço em disco, agenda o tempo de processamento e gerencia o uso de memória para cada VM. Isto é o que aplicativos como Oracle VirtualBox, VMware, Parallels, Xen, Microsoft Hyper-V e muitos outros o fazem: são hipervisores.

Um hipervisor pode ser executado em um laptop, PC ou servidor. Ele disponibiliza máquinas virtuais para o computador local ou usuários distribuídos em uma rede.

Diferentes tipos de máquinas virtuais e ambientes requerem diferentes tipos de hipervisores. Vamos dar uma olhada em alguns deles.

Tipos de máquinas virtuais

Máquinas Virtuais do Sistema

As VMs do sistema, às vezes chamadas de virtualização completa, são executadas por um hipervisor e fornecem a funcionalidade de um sistema de computador real. Eles usam o sistema operacional nativo do host para gerenciar e compartilhar recursos do sistema.

As máquinas virtuais do sistema geralmente exigem um host poderoso com CPUs rápidas ou múltiplas, grandes quantidades de memória e muito espaço em disco. Alguns, que são executados em computadores pessoais ou laptops, podem não exigir o poder de computação de que os servidores virtuais de grandes empresas precisam; no entanto, eles ficarão lentos se o sistema host não for adequado.

Processar Máquinas Virtuais

As Máquinas Virtuais de Processo são bem diferentes das SVMs – você pode tê-las em execução em sua máquina e nem saber disso. Eles também são conhecidos como máquinas virtuais de aplicativos ou ambientes de tempo de execução gerenciados (MREs). Essas máquinas virtuais são executadas dentro de um sistema operacional host e oferecem suporte a aplicativos ou processos do sistema.

Por que usar um PVM? Eles executam serviços sem depender de sistemas operacionais ou hardware específicos. Eles têm seu próprio pequeno sistema operacional com apenas os recursos de que precisam. O MRE está em um ambiente separado; não importa se ele roda em Windows, Mac OS, Linux ou qualquer outra máquina host.

Uma das Máquinas Virtuais de Processo mais comuns é aquela que você provavelmente já ouviu falar e pode ter visto em execução no seu computador. Ele é usado para executar aplicativos Java e é chamado de Java Virtual Machine ou JVM.

Tipos de hipervisores

A maioria das máquinas virtuais com as quais estamos preocupados usa um hipervisor porque emula um sistema de computador inteiro. Existem dois tipos diferentes de hipervisores: hipervisores Bare Metal e hipervisores hospedados. Vamos dar uma olhada rápida em ambos.

Hipervisor Bare Metal

Os BMHs também podem ser chamados de hipervisores nativos e são executados diretamente no hardware do host, em vez de serem executados no sistema operacional do host. Na verdade, eles substituem o sistema operacional do host, programando e gerenciando o uso de hardware por cada máquina virtual, eliminando assim o “intermediário” (o sistema operacional do host) no processo.

Os hipervisores nativos são normalmente usados ​​para VMs corporativas de grande escala, que as empresas usam para fornecer recursos de servidor aos funcionários. Microsoft Azure ou Amazon Web Services são VMs hospedadas nesse tipo de arquitetura. Outros exemplos são KVM, Microsoft Hyper-V e VMware vSphere.

Hipervisor hospedado

Os hipervisores hospedados são executados em sistemas operacionais padrão, assim como qualquer outro aplicativo que executamos em nossas máquinas. Eles usam o sistema operacional do host para gerenciar e distribuir recursos. Esse tipo de hipervisor é mais adequado para usuários individuais que precisam executar vários sistemas operacionais em suas máquinas.

Isso inclui aplicativos como Oracle VirtualBox, VMware Workstations, VMware Fusion, Parallels Desktop e muitos outros. Você pode encontrar informações mais detalhadas sobre hipervisores hospedados em nosso artigo, Melhor software de máquina virtual.

Por que usar máquinas virtuais?

Agora que você tem uma compreensão básica do que é uma máquina virtual, provavelmente pode pensar em alguns aplicativos excelentes. Aqui estão algumas das principais razões pelas quais as pessoas usam máquinas virtuais.

1. Económicamente viáveis

As máquinas virtuais são econômicas em várias situações. Um dos mais proeminentes está no mundo corporativo. Usar servidores físicos para fornecer recursos para funcionários pode ser muito caro. O hardware não é barato e a manutenção é ainda mais cara.

O uso de máquinas virtuais como servidores corporativos agora se tornou a norma. Com VMs de um provedor como o MS Azure, não há compras iniciais de hardware nem taxas de manutenção. Essas VMs podem ser configuradas, configuradas e usadas por apenas alguns centavos por hora. Eles também podem ser desligados quando não estão sendo usados ​​e não incorrem em nenhum custo.

Usar uma VM em sua máquina também pode ser uma grande economia de dinheiro. Se você precisar trabalhar em vários sistemas operacionais ou configurações de hardware diferentes, você pode
use várias máquinas virtuais em um host – não há necessidade de sair e comprar um computador separado para cada tarefa.

2. Escalável e Flexível

Sejam servidores corporativos ou VMs em execução em seu laptop, as máquinas virtuais são escaláveis. É fácil ajustar os recursos para atender às suas necessidades. Se você precisar de mais memória ou espaço em disco rígido, basta entrar no hipervisor e reconfigurar a VM para ter mais. Não há necessidade de adquirir novo hardware e o processo pode ser concluído rapidamente.

3. Configuração rápida

Uma nova VM pode ser configurada rapidamente. Tive casos em que precisei de uma nova configuração de VM, liguei para meu colega de trabalho que os gerencia e os deixei prontos para uso em menos de uma hora.

4. Recuperação de desastres

Se você está tentando evitar a perda de dados e se preparar para a recuperação de desastres, as VMs podem ser uma ferramenta excelente. Eles são fáceis de fazer backup e podem ser distribuídos em diferentes locais, se necessário. Se um terceiro, como a Microsoft ou a Amazon, hospedar as máquinas virtuais, eles estarão fora do local, o que significa que seus dados estarão seguros se seu escritório queimar.

5. Fácil de reproduzir

A maioria dos hipervisores permite que você faça uma cópia ou imagem de uma VM. A criação de imagens permite criar facilmente reproduções exatas da mesma VM base para qualquer situação.

No ambiente em que trabalho, damos a cada desenvolvedor uma VM para usar para desenvolvimento e teste. Este processo permite-nos ter uma imagem configurada com todas as ferramentas e software necessários. Quando temos um novo desenvolvedor integrado, tudo o que precisamos fazer é fazer uma cópia dessa imagem, e eles têm o que precisam para começar a trabalhar.

6. Perfeito para desenvolvimento/teste

Uma das melhores vantagens de usar máquinas virtuais é que elas são uma ferramenta perfeita para desenvolvimento e teste de software. As VMs permitem que os desenvolvedores desenvolvam em várias plataformas e ambientes em uma máquina. Se essa VM for corrompida ou destruída, uma nova poderá ser criada rapidamente.

Eles permitem que um testador tenha um novo ambiente limpo para cada ciclo de teste. Trabalhei em projetos em que configuramos scripts de teste automatizados que criam uma nova VM, instalam a versão mais recente do software, executam todos os testes necessários e excluem a VM após a conclusão dos testes.

As VMs funcionam esplendidamente para testes e análises de produtos como as que fazemos aqui no TechFewer.com. Posso instalar aplicativos em uma VM em execução na minha máquina e testá-los sem sobrecarregar meu ambiente principal.

Quando terminar de testar, sempre posso excluir a máquina virtual e criar uma nova quando precisar. Esse processo também me permite testar em várias plataformas, embora eu tenha apenas uma máquina Windows.

Palavras finais

Como você pode ver, as máquinas virtuais são uma ferramenta versátil e econômica que pode ser usada para muitos aplicativos. Não precisamos mais comprar, configurar e manter hardware caro para fornecer acesso ao servidor para testadores, desenvolvedores e outros. As VMs nos dão a flexibilidade de criar com facilidade e rapidez os sistemas operacionais, hardware e ambientes de que precisamos, a qualquer momento.