Uma máquina virtual (VM) é um computador baseado em software que fornece um ambiente isolado no hardware host. As máquinas virtuais podem executar programas e sistemas operacionais, armazenar dados, conectar-se a redes e realizar outras funções de computação. Grande parte da tecnologia que usamos atualmente, como a computação em nuvem e a inteligência artificial, está enraizada no conceito de máquina virtual, que permite a separação de sistemas operacionais e softwares de uma máquina física. Por exemplo, as VMs na computação em nuvem são usadas para virtualizar os recursos dos servidores dos provedores de serviços em nuvem, possibilitando a arquitetura de nuvem com vários locatários que permite que os clientes compartilhem recursos sem que um interfira no outro.
As máquinas virtuais usam tecnologia de virtualização para criar hardware virtual, ou uma versão virtual de um computador em uma máquina física. A máquina física em que as VMs são executadas é chamada de host, e as VMs em execução no host são chamadas de convidados.
Cada VM convidada é executada em uma partição isolada no host, completamente separada dos outros convidados. É possível hospedar várias VMs em uma única máquina host, geralmente um servidor, em execução em uma camada de software conhecida como hipervisor.
O hipervisor abstrai os recursos físicos da máquina host, como CPUs, GPUs, TPUs, memória, armazenamento ou redes, em um pool que pode ser provisionado e alocado dinamicamente para VMs convidadas, conforme necessário, proporcionando mais flexibilidade e aumentando a eficiência geral.
De modo geral, há dois tipos de máquinas virtuais: de processo e de sistema.
Uma VM de processo, também chamada de máquina virtual de aplicativo ou ambiente de execução gerenciado (MRE), cria um ambiente virtual de um SO enquanto um app ou único processo está em execução e o destrói assim que você sai. As VMs de processo permitem a criação de um ambiente independente de plataforma que permite que um aplicativo ou processo seja executado da mesma forma em qualquer plataforma. Um exemplo concreto disso é o ambiente de execução do Node.js no App Engine, que permite que um programa Node.js seja executado em um ambiente gerenciado no Google Cloud, independentemente do sistema operacional.
Uma VM de sistema (às vezes chamada de máquina virtual de hardware) simula um sistema operacional completo, permitindo que vários ambientes de SO fiquem na mesma máquina. Normalmente, esse é o tipo de VM a que as pessoas se referem quando falam sobre "máquinas virtuais". As VMs de sistema podem executar o próprio SO e aplicativos, e um hipervisor monitora e distribui os recursos físicos da máquina host entre as VMs de sistema.
Mais recentemente, você também deve ter ouvido falar de máquinas virtuais na nuvem ou de uma VM na nuvem. As máquinas virtuais na nuvem são simplesmente máquinas virtuais executadas em servidores virtuais na nuvem. Muitos provedores de serviços em nuvem permitem criar e executar máquinas virtuais na nuvem na infraestrutura deles, o que permite usar servidores potentes como máquinas host e aproveitar outros serviços definidos por software, como memória e armazenamento de rede. Essas VMs de nuvem são geralmente categorizadas pela otimização de recursos:
Embora as VMs e os contêineres sejam usados para isolar aplicativos, eles fazem isso de maneiras fundamentalmente diferentes. Uma máquina virtual virtualiza toda a pilha de hardware físico, incluindo o sistema operacional. Isso torna cada VM um ambiente isolado e independente, mas também significa que as VMs tendem a ser maiores e a consumir mais recursos.
Por outro lado, os contêineres são mais leves porque virtualizam apenas a camada do SO. Em vez de incluir um sistema operacional completo com cada aplicativo, um contêiner compartilha o kernel do SO do host. Isso permite que os contêineres usem menos recursos do que as VMs e sejam iniciados mais rapidamente, sem perder o isolamento. Isso torna os contêineres atraentes para o desenvolvimento de novos aplicativos. Como muitos dos aplicativos desenvolvidos nos últimos 10 anos foram criados para contêineres, muitas cargas de trabalho, incluindo e-commerce, back-office e IA, são nativas de contêineres.
As VMs são os elementos básicos dos recursos de computação virtualizados e têm um papel fundamental na criação de qualquer aplicativo, ferramenta ou ambiente, tanto na nuvem quanto no local.
Confira algumas das formas mais comuns de uso das máquinas virtuais:
Várias máquinas físicas podem ser reconfiguradas como uma VM e executadas em um host com outras VMs. Isso permite que as organizações reduzam a dispersão. As VMs já provaram ser capazes de executar até mesmo os aplicativos mais sensíveis ao desempenho.
Uma organização central de TI pode provisionar e gerenciar VMs para cada unidade de negócios e área funcional, acelerando o acesso aos recursos e melhorando a visibilidade corporativa.
As VMs podem servir como ambientes isolados para teste e desenvolvimento que incluem funcionalidade completa, mas não afetam a infraestrutura relacionada.
As VMs podem ser facilmente desligadas ou ligadas, migradas e adaptadas, oferecendo o máximo de flexibilidade para desenvolvimento e implantação.
A flexibilidade e a portabilidade que as VMs fornecem são essenciais para aumentar a velocidade das iniciativas de migração.
A replicação de sistemas em ambientes de nuvem usando VMs pode fornecer uma camada extra de segurança e certeza. Os ambientes de nuvem também podem ser atualizados continuamente.
As VMs fornecem a base para criar um ambiente de nuvem junto de um local, oferecendo flexibilidade sem abandonar sistemas legados.
As máquinas virtuais oferecem muitos benefícios, principalmente se você optar por uma VM na nuvem, incluindo os seguintes:
Escalabilidade
As VMs baseadas na nuvem facilitam o escalonamento dos aplicativos, aumentando a disponibilidade e o desempenho. É possível aumentar a capacidade de acordo com a demanda sem precisar investir em servidores físicos próprios.
Portabilidade
Uma máquina virtual consiste em um único pacote de software com recursos de hardware, um sistema operacional e todos os aplicativos relacionados. É fácil mover VMs de um servidor para outro ou até mesmo de hardware local para ambientes de nuvem.
Consumo e custos reduzidos
Com as VMs, você pode executar vários ambientes virtuais em uma única máquina. Isso reduz o consumo de infraestrutura física, a conta de energia e os custos de manutenção e gerenciamento.
Provisionamento mais rápido
As VMs podem ser facilmente duplicadas, o que permite que as empresas criem ambientes novos e idênticos, sem ter que configurá-los do zero.
Confiabilidade
As máquinas virtuais e os respectivos componentes existem virtualmente e permanecem isolados de outras VMs convidadas. Se a VM falhar, as outras VMs convidadas permanecerão operacionais e a máquina host física não será afetada.
Mais segurança
Com as máquinas virtuais, é possível executar vários sistemas operacionais sem afetar o sistema operacional do host. As VMs permitem criar ambientes virtuais seguros para testar aplicativos ou até mesmo estudar vulnerabilidades de segurança sem alto risco para a máquina host. As ofertas de VM modernas, como as VMs confidenciais do Google Cloud, fornecem criptografia em uso para dados que estão sendo tratados na memória por meio de um ambiente de execução confiável (TEE) baseado em hardware.
No entanto, há algumas considerações a serem feitas ao executar VMs. Um dos maiores desafios em potencial das máquinas virtuais é que executar vários sistemas operacionais e uma camada de hipervisor pode gerar custos de desempenho se a máquina host não for robusta o suficiente. Além disso, o hardware virtual pode não ser tão eficiente quanto o hardware de uma máquina física. Por fim, a maioria dos provedores de nuvem oferece máquinas virtuais com CPU e memória fixas, o que leva a um uso ineficiente dos recursos.
Muitas dessas preocupações poderão ser superadas se usarmos VMs oferecidas por um provedor de serviços de nuvem. As VMs em nuvem oferecem muitas vantagens sobre as tradicionais, porque permitem que as organizações acessem o poder computacional de todos os computadores de um data center, em vez de uma única máquina. Além disso, os tamanhos de máquinas virtuais do Google Compute Engine oferecem tipos de máquinas personalizados. Em vez de selecionar entre tipos de máquinas predefinidos que podem incluir capacidade excessiva, você pode adaptar a proporção de CPU para memória de acordo com suas cargas de trabalho, pagando apenas pelos recursos que realmente usa. Essa abordagem direcionada minimiza o desperdício e pode reduzir significativamente seus gastos com a nuvem, especialmente ao migrar do local para o Google Cloud ou de outros provedores de nuvem. O Compute Engine também oferece tipos de máquina virtuais otimizados para necessidades específicas dos clientes para cargas de trabalho corporativas, configurações de memória alta ou cargas de trabalho exigentes, como machine learning ou computação de alto desempenho.
O Google Cloud também oferece máquinas virtuais protegidas para maior segurança e integridade verificável das instâncias de VM. As máquinas virtuais protegidas do Google Cloud usam recursos e controles avançados de segurança da plataforma que protegem as cargas de trabalho da empresa contra ameaças como ataques remotos, escalonamento de privilégios e pessoas maliciosas com informações privilegiadas.
Para alguns aplicativos, os desenvolvedores podem optar por ignorar as VMs tradicionais. Modelos de implantação modernos, como orquestração de contêineres (Google Kubernetes Engine – GKE) e computação sem servidor (Cloud Run), são alternativas poderosas para casos de uso específicos, permitindo que as equipes ignorem o gerenciamento do sistema operacional da VM, melhorando a velocidade de implantação e, muitas vezes, alcançando maior economia.
Solução
Solução
Comece a criar no Google Cloud com US$ 300 em créditos e mais de 20 produtos sem gastar nada.