Fundamentação Teórica: Create a Virtual Machine
1. Intuição Inicial​
Imagine que você precisa de um servidor para rodar uma aplicação. No mundo fÃsico, você compraria hardware, instalaria o sistema operacional, configuraria a rede e esperaria dias ou semanas até tudo estar pronto. No Azure, você descreve o servidor que quer (quantos núcleos de CPU, quanta memória, qual sistema operacional, qual região do mundo) e em minutos ele está disponÃvel.
Uma Virtual Machine (VM) no Azure é um computador completo rodando em hardware compartilhado da Microsoft, isolado de outros clientes por tecnologia de virtualização. Do ponto de vista do sistema operacional e das aplicações rodando nela, a VM parece um servidor fÃsico dedicado. Você tem controle total: instala softwares, configura serviços, acessa o terminal.
A diferença fundamental em relação a serviços gerenciados como App Service ou Azure Functions é que com VMs você gerencia o sistema operacional: você é responsável por patches, atualizações de segurança e configuração interna.
2. Contexto​
2.1 VMs no modelo IaaS​
Azure oferece diferentes nÃveis de abstração. VMs estão no nÃvel IaaS (Infrastructure as a Service): você gerencia a partir do sistema operacional para cima; a Microsoft gerencia o hardware fÃsico, a rede fÃsica e o hypervisor.
2.2 Casos de uso que exigem VMs​
VMs são a escolha certa quando:
- A aplicação não foi desenvolvida para nuvem e não pode ser facilmente refatorada
- Você precisa de controle total sobre o sistema operacional (patches especÃficos, configurações de kernel)
- O software requer instalação tradicional (agentes, middleware legado)
- Você está migrando workloads on-premises via lift-and-shift
- O workload requer hardware especÃfico (GPU, HPC)
3. Construção dos Conceitos​
3.1 Os recursos criados junto com a VM​
Quando você cria uma VM no Azure, o portal cria automaticamente um conjunto de recursos relacionados. Entender cada um é essencial para gerenciar VMs adequadamente:
Virtual Machine: O recurso principal. Representa a configuração de compute (CPU, memória, tamanho).
Disk (OS Disk): Todo VM tem pelo menos um disco gerenciado que contém o sistema operacional. Criado automaticamente.
Network Interface (NIC): A "placa de rede virtual" da VM. Conecta a VM à VNet. Tem um IP privado e opcionalmente um IP público.
Virtual Network (VNet) e Subnet: A rede privada onde a VM vive. Pode ser criada automaticamente ou usar uma VNet existente.
Network Security Group (NSG): Firewall virtual associado à NIC ou subnet. Controla o tráfego de entrada e saÃda.
Public IP Address (opcional): IP público para acesso direto via internet. Pode ser estático ou dinâmico.
3.2 FamÃlia e tamanho da VM​
O tamanho da VM define CPU, memória, disco temporário e capacidade de rede. Os tamanhos são organizados em séries (famÃlias), cada uma otimizada para um tipo de workload:
| FamÃlia | Prefixo | Otimizada para |
|---|---|---|
| General Purpose | B, D, Dv5, Dav5 | Workloads equilibrados (web, dev, test) |
| Compute Optimized | F, Fx | Alta relação CPU/memória (processamento de dados) |
| Memory Optimized | E, Ev5, M | Bancos de dados em memória, SAP HANA |
| Storage Optimized | Lsv3 | Bancos de dados com alto I/O de disco |
| GPU | NC, ND, NV | Machine Learning, renderização 3D |
| High Performance Compute | H | Simulações cientÃficas, CFD |
| Burstable | B | Workloads com uso variável de CPU |
A nomenclatura de tamanho segue um padrão:
Standard_D4s_v5
│ │ │
│ │ └── versão (v5 = quinta geração)
│ └───── s = suporte a Premium SSD
└─────── número de vCPUs
3.3 Imagens: o sistema operacional​
Uma imagem é o template de disco usado para criar a VM. O Azure Marketplace oferece milhares de imagens, incluindo:
Imagens de primeira parte (Microsoft):
- Windows Server 2022, 2019, 2016
- Windows 11 Enterprise (para VDI)
Imagens de terceiros (certificadas):
- Ubuntu 22.04, 20.04, 18.04
- Red Hat Enterprise Linux 8, 9
- CentOS, Debian, SUSE
- SQL Server on Windows/Linux
- Oracle Database
Imagens customizadas: Você pode criar sua própria imagem a partir de uma VM configurada (via Azure Compute Gallery).
3.4 Discos: tipos e performance​
O Azure oferece diferentes tipos de discos gerenciados com diferentes caracterÃsticas de performance e custo:
| Tipo | Uso | IOPS máx | Latência | Custo |
|---|---|---|---|---|
| Ultra Disk | Bancos de dados crÃticos | Até 400.000 | Sub-milissegundo | Mais alto |
| Premium SSD v2 | Workloads I/O intensivos | Até 80.000 | ~1ms | Alto |
| Premium SSD | Produção geral | Até 20.000 | ~1-2ms | Médio-alto |
| Standard SSD | Servidores web, dev | Até 6.000 | ~2-10ms | Médio |
| Standard HDD | Backup, arquivos | Até 2.000 | ~5-50ms | Baixo |
Temporary Disk: Além dos discos gerenciados, VMs têm um disco temporário (D: no Windows, /dev/sdb no Linux) que não persiste após desalocação ou redimensionamento. Nunca armazene dados permanentes nele.
3.5 Opções de disponibilidade​
A disponibilidade de VMs depende de como você as organiza. O Azure oferece três mecanismos:
Availability Set:
- Distribui VMs entre Fault Domains (racks fÃsicos diferentes) e Update Domains (grupos de atualização sequencial)
- Protege contra falhas de hardware e manutenções do Azure
- SLA de 99,95% para duas ou mais VMs no mesmo Availability Set
Availability Zone:
- Distribui VMs entre datacenters fisicamente separados dentro de uma região
- Protege contra falha de datacenter inteiro
- SLA de 99,99% para duas ou mais VMs em zonas diferentes
Virtual Machine Scale Sets:
- Criação e gerenciamento de múltiplas VMs idênticas (escala horizontal)
- Auto-scaling baseado em métricas
- Abordado em objetivos separados do AZ-104
VM isolada (nenhuma opção):
- SLA de 99,9% (apenas para VMs com Premium SSD)
- Adequada apenas para desenvolvimento e teste
3.6 Opções de licenciamento e custo​
Pay-as-you-go: Pague por hora de uso. Mais caro por hora, mas sem compromisso.
Reserved Instances (RI): Compromisso de 1 ou 3 anos em troca de desconto de até 72%. Para workloads previsÃveis.
Azure Hybrid Benefit: Se você tem licenças Windows Server ou SQL Server com Software Assurance ativas, pode trazer essas licenças para o Azure, economizando o custo da licença no preço da VM.
Spot VMs: Capacidade excedente do Azure a preços muito baixos (até 90% de desconto), mas a VM pode ser removida com aviso de 30 segundos quando o Azure precisar da capacidade. Adequada para workloads tolerantes a interrupção (processamento batch, rendering).
4. Visão Estrutural​
Comportamento crÃtico: Parar a VM pelo sistema operacional ("shutdown" dentro do SO) coloca a VM em estado Stopped, mas não desaloca. Você continua pagando pela alocação de compute. Para parar o billing de compute, use Deallocate pelo portal, CLI ou PowerShell.
5. Funcionamento na Prática​
5.1 Informações necessárias para criar uma VM​
Antes de criar, você precisa decidir:
| Decisão | Opções | Impacto |
|---|---|---|
| Região | eastus, westeurope, brazilsouth, etc. | Latência, conformidade de dados, disponibilidade de tamanhos |
| Sistema operacional | Windows Server, Linux (Ubuntu, RHEL, etc.) | Custo de licença, gestão |
| Tamanho (SKU) | Standard_D2s_v5, Standard_B2ms, etc. | Performance e custo |
| Autenticação | Senha ou chave SSH (Linux) | Segurança |
| VNet/Subnet | Nova ou existente | Conectividade |
| IP público | Nenhum, dinâmico ou estático | Acesso remoto |
| Disco OS | Premium SSD, Standard SSD, Standard HDD | Performance e custo |
| Disponibilidade | Zona, Availability Set, nenhuma | Resiliência |
5.2 Cloud-init e Custom Script Extension​
Para configurar a VM automaticamente durante a criação sem interação manual, o Azure suporta:
cloud-init (Linux): Script YAML ou bash executado na primeira inicialização. Ideal para instalar pacotes, configurar serviços e executar comandos.
#cloud-config
package_upgrade: true
packages:
- nginx
- docker.io
runcmd:
- systemctl enable nginx
- systemctl start nginx
Custom Script Extension (Windows e Linux): Script executado após a VM estar pronta. Pode ser PowerShell (Windows) ou bash (Linux). Pode ser referenciado de um Storage Account ou fornecido inline.
6. Formas de Implementação​
6.1 Portal Azure​
Quando usar: Criação única, aprendizado, quando exploração visual das opções é necessária.
No portal: Virtual Machines > + Create > Azure Virtual Machine
O portal guia por abas: Basics, Disks, Networking, Management, Monitoring, Advanced, Tags.
Vantagens: Visualização imediata de todos os parâmetros, validação em tempo real, opção de ver o template ARM gerado.
Limitação: Não reproduzÃvel de forma consistente; lento para múltiplas VMs.
6.2 Azure CLI​
Criação básica de VM Linux:
az vm create \
--resource-group myRG \
--name myLinuxVM \
--image Ubuntu2204 \
--size Standard_D2s_v5 \
--location eastus \
--admin-username azureuser \
--generate-ssh-keys \
--vnet-name myVNet \
--subnet mySubnet \
--public-ip-sku Standard \
--nsg-rule SSH
Criação de VM Windows:
az vm create \
--resource-group myRG \
--name myWindowsVM \
--image Win2022Datacenter \
--size Standard_D4s_v5 \
--location eastus \
--admin-username adminuser \
--admin-password "MySecureP@ss123!" \
--nsg-rule RDP \
--public-ip-sku Standard
Criação com Availability Zone:
az vm create \
--resource-group myRG \
--name myVM-Zone1 \
--image Ubuntu2204 \
--size Standard_D2s_v5 \
--zone 1 \
--admin-username azureuser \
--generate-ssh-keys
Criação com cloud-init:
az vm create \
--resource-group myRG \
--name myWebServer \
--image Ubuntu2204 \
--size Standard_D2s_v5 \
--admin-username azureuser \
--generate-ssh-keys \
--custom-data @cloud-init.yaml
Operações de ciclo de vida:
# Parar e desalocar (para billing de compute)
az vm deallocate --resource-group myRG --name myVM
# Iniciar
az vm start --resource-group myRG --name myVM
# Reiniciar
az vm restart --resource-group myRG --name myVM
# Redimensionar (mudar SKU)
az vm resize --resource-group myRG --name myVM --size Standard_D4s_v5
# Ver estado atual
az vm show --resource-group myRG --name myVM --show-details --query powerState
6.3 Azure PowerShell​
# Criar VM completa
$vmConfig = New-AzVMConfig `
-VMName "myVM" `
-VMSize "Standard_D2s_v5"
# Configurar OS
$vmConfig = Set-AzVMOperatingSystem `
-VM $vmConfig `
-Linux `
-ComputerName "myVM" `
-Credential (Get-Credential)
# Especificar imagem
$vmConfig = Set-AzVMSourceImage `
-VM $vmConfig `
-PublisherName "Canonical" `
-Offer "0001-com-ubuntu-server-jammy" `
-Skus "22_04-lts-gen2" `
-Version "latest"
# Adicionar NIC
$nic = Get-AzNetworkInterface -Name "myNIC" -ResourceGroupName "myRG"
$vmConfig = Add-AzVMNetworkInterface -VM $vmConfig -Id $nic.Id
# Criar a VM
New-AzVM `
-ResourceGroupName "myRG" `
-Location "eastus" `
-VM $vmConfig
6.4 Bicep​
// VM Linux com todos os componentes
resource vm 'Microsoft.Compute/virtualMachines@2023-07-01' = {
name: 'myLinuxVM'
location: location
properties: {
hardwareProfile: {
vmSize: 'Standard_D2s_v5'
}
storageProfile: {
imageReference: {
publisher: 'Canonical'
offer: '0001-com-ubuntu-server-jammy'
sku: '22_04-lts-gen2'
version: 'latest'
}
osDisk: {
createOption: 'FromImage'
managedDisk: {
storageAccountType: 'Premium_LRS'
}
deleteOption: 'Delete'
}
}
osProfile: {
computerName: 'myLinuxVM'
adminUsername: 'azureuser'
linuxConfiguration: {
disablePasswordAuthentication: true
ssh: {
publicKeys: [
{
path: '/home/azureuser/.ssh/authorized_keys'
keyData: sshPublicKey
}
]
}
}
}
networkProfile: {
networkInterfaces: [
{
id: nic.id
properties: {
deleteOption: 'Delete'
}
}
]
}
availabilitySet: {
id: availabilitySet.id
}
}
zones: ['1']
}
deleteOption: A propriedade
deleteOption: 'Delete'nos discos e NICs garante que quando a VM for deletada, os recursos associados também são deletados automaticamente. Sem isso, discos e NICs "órfãos" continuam existindo e sendo cobrados.
7. Controle e Segurança​
7.1 Autenticação: SSH Keys vs Senha​
Para VMs Linux: Use sempre chaves SSH em produção. Senhas são mais vulneráveis a ataques de força bruta.
# Gerar par de chaves SSH localmente
ssh-keygen -t rsa -b 4096 -f ~/.ssh/myVM_key
# A chave pública vai para a VM; a privada fica na máquina local
# Conectar via SSH
ssh -i ~/.ssh/myVM_key azureuser@<ip-publico>
Para VMs Windows: Use senhas fortes com:
- MÃnimo 12 caracteres
- Maiúsculas, minúsculas, números e sÃmbolos
- Não use senhas comuns
Azure Key Vault: Armazene chaves SSH e senhas de administrador no Azure Key Vault. Evite armazená-las em código ou repositórios.
7.2 Permissões RBAC para VMs​
| Role | Permissões | Uso |
|---|---|---|
| Virtual Machine Contributor | Gerenciar VMs mas não VNets e contas de armazenamento | Administradores de compute |
| Virtual Machine Administrator Login | Login na VM como admin via Azure AD | Acesso privilegiado |
| Virtual Machine User Login | Login na VM como usuário padrão via Azure AD | Acesso de usuário |
| Reader | Visualizar configurações | Monitoramento |
Azure AD Login para VMs: Com a extensão AADSSHLoginForLinux ou AADLoginForWindows, usuários podem fazer login na VM com suas credenciais Azure AD, sem gerenciar usuários locais.
7.3 JIT (Just-in-Time) VM Access​
Microsoft Defender for Cloud oferece JIT: portas de gerenciamento (22, 3389) ficam fechadas por padrão e são abertas temporariamente apenas quando solicitado, para o IP especÃfico do solicitante, pelo tempo determinado.
# Habilitar JIT via CLI
az security jit-policy create \
--resource-group myRG \
--vm-ids <vm-resource-id> \
--name "default" \
--ports '[{"number":22,"protocol":"TCP","allowedSourceAddressPrefix":"*","maxRequestAccessDuration":"PT3H"}]'
8. Tomada de Decisão​
8.1 Qual tamanho de VM escolher​
| Workload | FamÃlia recomendada | Exemplo |
|---|---|---|
| Servidor web, dev/test | General Purpose | Standard_D2s_v5 |
| Servidor de banco de dados | Memory Optimized | Standard_E4s_v5 |
| Processamento de dados, analytics | Compute Optimized | Standard_F4s_v2 |
| Banco de dados com alto I/O | Storage Optimized | Standard_L8s_v3 |
| Treinamento de ML | GPU | Standard_NC6s_v3 |
| Cargas variáveis (dev, CI/CD) | Burstable | Standard_B2ms |
8.2 Qual tipo de disco escolher​
| Situação | Tipo de disco | Motivo |
|---|---|---|
| Banco de dados de produção | Premium SSD v2 ou Ultra Disk | IOPS alto, latência mÃnima |
| Servidor web de produção | Premium SSD | Boa performance, SLA adequado |
| Servidor de desenvolvimento | Standard SSD | Custo reduzido, SSD |
| Backup, arquivo | Standard HDD | Menor custo |
| Disco temporário para processamento | Temporary Disk (cuidado!) | Gratuito, mas não persistente |
8.3 IP público estático vs dinâmico​
| Situação | Escolha | Motivo |
|---|---|---|
| DNS apontando para a VM | IP público estático | IP não muda após reinicialização |
| VM com Bastion (sem acesso direto) | Sem IP público | Acesso via Bastion, sem exposição |
| Ambiente de desenvolvimento temporário | IP público dinâmico | Menor custo |
| Servidor de produção com acesso externo | IP público estático + Azure Firewall ou LB | Estabilidade e proteção |
8.4 Availability Set vs Availability Zone​
| Requisito | Escolha | SLA |
|---|---|---|
| Sem requisito de HA | Nenhuma | 99,9% |
| HA dentro de datacenter único | Availability Set | 99,95% |
| HA entre datacenters da região | Availability Zone | 99,99% |
| Máxima resiliência | VMs em múltiplas regiões + Traffic Manager | > 99,99% |
9. Boas Práticas​
- Use
deleteOption: Deletepara discos e NICs ao criar VMs via IaC. Isso evita recursos órfãos quando a VM é deletada. - Nunca abra SSH/RDP diretamente da internet. Use Azure Bastion, JIT ou VPN.
- Use chaves SSH para VMs Linux em produção, nunca senhas.
- Habilite Azure AD Login para eliminar gestão de usuários locais e aproveitar MFA e Conditional Access.
- Use Managed Disks (padrão atual) em vez de discos não gerenciados (legado).
- Especifique a zona de disponibilidade para VMs de produção em regiões que suportam Availability Zones.
- Use Reserved Instances para workloads que rodarão por 1 ano ou mais.
- Habilite Azure Monitor e configure alertas de CPU, memória e disco desde o inÃcio.
- Use tags para identificar ambiente (prod, dev, test), aplicação, time responsável e centro de custo.
- Não armazene dados no disco temporário. Use data disks gerenciados para dados persistentes.
- Use o Azure Hybrid Benefit se você tem licenças Windows Server ou SQL Server ativas.
10. Erros Comuns​
| Erro | Por que acontece | Como evitar |
|---|---|---|
| VM "parada" mas ainda cobrando | Parou pelo SO, não desalocou | Usar az vm deallocate ou portal para desalocar |
| Disco e NIC órfãos após deletar VM | deleteOption não configurado | Definir deleteOption: Delete na criação ou deletar manualmente |
| Não consegue conectar via SSH/RDP | NSG bloqueando porta 22/3389 | Verificar regras de inbound do NSG |
| IP público muda após reinicialização | IP dinâmico usado onde era necessário estático | Converter para IP público estático |
| VM de tamanho errado escolhida | Não considerou os requisitos de workload | Dimensionar baseado em CPU, memória e IOPS esperados |
| Senha de admin esquecida (Windows) | Não documentada ou armazenada | Usar Azure AD Login ou resetar via Run Command |
| VM sem monitoramento configurado | Esqueceu de habilitar na criação | Habilitar Azure Monitor Agent após criação |
| Spot VM removida sem aviso suficiente | Workload não tolerante a interrupção em Spot | Usar Spot apenas para workloads tolerantes (batch, render) |
11. Operação e Manutenção​
11.1 Monitoramento de VMs​
Azure Monitor VM Insights: Coleta métricas de CPU, memória, disco e rede com visualizações prontas.
# Habilitar Azure Monitor Agent na VM
az vm extension set \
--resource-group myRG \
--vm-name myVM \
--name AzureMonitorLinuxAgent \
--publisher Microsoft.Azure.Monitor \
--version 1.0
Métricas importantes:
| Métrica | Threshold de alerta | O que indica |
|---|---|---|
| CPU Percentage | > 80% por 5 min | Necessidade de resize ou otimização |
| Available Memory Bytes | < 10% | Pressão de memória |
| OS Disk Queue Depth | > 10 | Gargalo de disco |
| Network In/Out | Pico anormal | Tráfego suspeito ou saturação |
11.2 Redimensionamento de VM​
# Listar tamanhos disponÃveis na região para redimensionamento
az vm list-vm-resize-options \
--resource-group myRG \
--name myVM \
--output table
# Redimensionar (requer parada e reinicialização)
az vm resize \
--resource-group myRG \
--name myVM \
--size Standard_D4s_v5
Redimensionamento requer reinicialização da VM (downtime). Planeje janelas de manutenção.
11.3 Run Command: executar scripts sem SSH/RDP​
Se você perdeu acesso SSH/RDP, o Run Command permite executar scripts na VM via portal ou CLI:
# Executar script bash na VM Linux
az vm run-command invoke \
--resource-group myRG \
--name myVM \
--command-id RunShellScript \
--scripts "echo 'Hello World' && systemctl status nginx"
# Resetar senha de admin (Windows)
az vm user reset-ssh \
--resource-group myRG \
--name myVM
11.4 Limites importantes​
| Recurso | Limite padrão |
|---|---|
| VMs por região por assinatura | 10.000 vCPUs (aumentável) |
| Discos de dados por VM | Depende do tamanho (D2s_v5: até 4; D64s_v5: até 32) |
| NICs por VM | Depende do tamanho |
| IPs privados por NIC | Até 30 |
| VMs em Availability Set | Até 200 |
| Fault Domains por Availability Set | 2 ou 3 (dependendo da região) |
12. Integração e Automação​
12.1 VM Extensions​
Extensions são agentes instalados na VM que executam tarefas automatizadas:
# Instalar extensão Custom Script (executar script após criação)
az vm extension set \
--resource-group myRG \
--vm-name myVM \
--name CustomScript \
--publisher Microsoft.Azure.Extensions \
--settings '{"commandToExecute":"apt-get install -y nginx"}'
# Listar extensions instaladas
az vm extension list \
--resource-group myRG \
--vm-name myVM \
--output table
Extensions comuns:
| Extension | Função |
|---|---|
| CustomScript | Executa scripts personalizados |
| AzureMonitorLinuxAgent | Coleta métricas e logs |
| DependencyAgent | Mapeia dependências de rede (VM Insights) |
| AADSSHLoginForLinux | Login com Azure AD em Linux |
| AADLoginForWindows | Login com Azure AD em Windows |
| MicrosoftAntiMalware | Proteção antimalware (Windows) |
12.2 Azure Automation com VMs​
Para desligar VMs automaticamente fora do horário de trabalho:
# Configurar auto-shutdown via CLI
az vm auto-shutdown \
--resource-group myRG \
--name myVM \
--time 2200 \
--email "admin@company.com"
Para automação mais complexa (ligar VMs antes do horário, processar múltiplas VMs), use Azure Automation Runbooks ou Azure Functions com schedule trigger.
12.3 Azure Policy para conformidade de VMs​
# Garantir que todas as VMs usem tags obrigatórias
az policy assignment create \
--name "vm-require-tags" \
--policy "96670d01-0a4d-4649-9c89-2d3abc0a5025" \
--scope "/subscriptions/<sub-id>"
# Auditar VMs sem Azure Monitor Agent
az policy assignment create \
--name "vm-require-monitoring" \
--policy "5641f9d1-f911-4988-abf4-92c8e0f2af0a" \
--scope "/subscriptions/<sub-id>"
13. Resumo Final​
Conceitos essenciais:
- Uma VM Azure é um computador virtual completo (IaaS) onde você controla o sistema operacional e tudo acima dele.
- Ao criar uma VM, o Azure cria automaticamente: disco OS, NIC, e opcionalmente IP público, NSG, VNet e subnet.
- O tamanho define CPU, memória e capacidade de disco. Escolha baseado no workload: General Purpose, Memory Optimized, Compute Optimized, GPU, etc.
- O estado Stopped ≠Deallocated: apenas Deallocated para a cobrança de compute.
Diferenças crÃticas:
- Stopped vs Deallocated: Stopped = SO desligado mas hardware ainda alocado (cobra compute). Deallocated = hardware liberado (cobra apenas storage).
- Availability Set vs Availability Zone: Set distribui entre racks no mesmo datacenter (99,95%). Zone distribui entre datacenters (99,99%).
- IP dinâmico vs estático: Dinâmico muda ao desalocar. Estático permanece. Use estático quando o DNS ou firewall depende do IP.
- Disco temporário vs data disk: Temporário não persiste após desalocação. Data disk gerenciado persiste sempre.
O que precisa ser lembrado:
- Use
deleteOption: Deletepara discos e NICs para evitar recursos órfãos. - Nunca abra portas SSH/RDP diretamente da internet. Use Bastion ou JIT.
- O disco temporário fica em
D:no Windows e/dev/sdbou/mntno Linux, e não persiste dados após desalocação. - Azure Hybrid Benefit pode reduzir significativamente o custo de VMs Windows e SQL Server.
- Use Reserved Instances para workloads que rodarão por 1 ano ou mais; a economia pode chegar a 72%.
- Spot VMs são econômicas mas podem ser removidas a qualquer momento com 30 segundos de aviso.
- O Run Command permite executar scripts na VM sem acesso SSH/RDP direto, útil para recuperação de acesso.