Software · Computação em Nuvem & DevOps

Computação em Nuvem no Azure: Máquinas Virtuais, App Services e Zonas de Disponibilidade

O espectro da computação no Microsoft Azure: quando escolher entre IaaS (Virtual Machines) e PaaS (App Services), arquitetura isolada com ASE, e resiliência física com Availability Sets e Availability Zones.

Ilustração arquitetural comparando IaaS com Máquinas Virtuais e PaaS com App Service distribuídos entre Zonas de Disponibilidade

A decisão arquitetural mais recorrente na modernização de sistemas corporativos reside na escolha do modelo de execução de carga computacional. No ecossistema do Microsoft Azure, o espectro de computação varia desde o controle granular de instâncias de infraestrutura como serviço (IaaS - Azure Virtual Machines) até plataformas totalmente gerenciadas de aplicação como serviço (PaaS - Azure App Services), além de computação paralela de alta escala com Azure Batch.

Contudo, nenhum modelo de computação é imune a falhas físicas de hardware, interrupções elétricas ou manutenções de rack no datacenter. Para garantir acordos de nível de serviço de até 99,99% de disponibilidade (Uptime), engenheiros devem compreender como estruturar suas aplicações sobre Availability Sets e Availability Zones.


O Espectro de Computação: IaaS vs. PaaS

A escolha entre Máquinas Virtuais e App Services representa o trade-off fundamental entre controle operacional e produtividade de engenharia:

flowchart LR
    subgraph IaaS["IaaS: Azure Virtual Machines"]
        direction TB
        VMCtrl["Controle Total do SO (Kernel, Drivers, Patching Manual)"]
        VMCost["Responsabilidade da Equipe: Antivírus, Backup e Atualizações"]
        VMFlex["Ideal para Softwares Legados com Dependências Específicas"]
    end

    subgraph PaaS["PaaS: Azure App Service"]
        direction TB
        AppProd["Deploy Direto de Código (.NET, Java, Node, Python, Containers)"]
        AppOps["SO, Patching de Segurança e TLS Gerenciados pela Microsoft"]
        AppScale["Autoescala Horizontal e Vertical com Poucos Cliques"]
    end
Dimensão Azure Virtual Machines (IaaS) Azure App Service (PaaS)
Responsabilidade de Patching A equipe gerencia atualizações do sistema operacional e segurança. A Microsoft gerencia o ciclo de vida do SO e do runtime subjacente.
Escalabilidade Requer configuração de Virtual Machine Scale Sets (VMSS) e balanceadores. Escalonamento automático (Autoscale) nativo baseado em CPU, memória ou métricas HTTP.
Velocidade de Deploy Lenta; exige provisionamento de VM, agentes e scripts de configuração. Instantânea; suporte a Git deploy, GitHub Actions, Azure DevOps e Deployment Slots.
Acesso Administrativo Acesso SSH total (Linux) ou RDP (Windows) com usuário root/Administrator. Sem acesso ao host físico; execução em sandbox gerenciado.

Azure App Service: Planos e Deployment Slots

O Azure App Service opera com base em um App Service Plan, que representa o conjunto de recursos computacionais dedicados (CPU, RAM, armazenamento) compartilhados pelas aplicações web nele hospedadas.

Deployment Slots e Deploys Sem Downtime (Zero Downtime Deploy)

Nos planos Standard, Premium e Isolated, o App Service disponibiliza Deployment Slots: ambientes paralelos ao ambiente de produção (ex.: slot staging):

sequenceDiagram
    autonumber
    actor Dev as Pipeline CI/CD
    participant S as Slot de Staging
    participant P as Slot de Produção (Tráfego Real)
    actor User as Usuários Finais

    Dev->>S: Deploy do novo release (v2.0)
    Dev->>S: Executa testes de aquecimento (Warm-up) e fumaça
    Note over S: Aplicação carrega caches em memória sem afetar usuários
    Dev->>P: Dispara operação SWAP
    Note over S,P: O Azure altera o roteador de tráfego instantaneamente
    User->>P: Recebe v2.0 com latência zero e sem erros 502/503

A operação de Swap de slots garante que o código novo já esteja totalmente compilado e com conexões aquecidas antes de receber tráfego público. Em caso de anomalia, reverter o swap é uma operação quase instantânea.

Ambientes Isolados com ASE (App Service Environment)

Para organizações com requisitos regulatórios estritos que exigem isolamento físico completo e ausência de compartilhamento de infraestrutura multitenant, o App Service Environment (ASE v3) provisiona instâncias dedicadas inseridas diretamente dentro da rede virtual privada (VNet) da empresa, sem qualquer exposição direta à internet pública.


Resiliência de Hardware: Fault Domains e Availability Sets

Em ambientes IaaS onde múltiplas VMs executam o mesmo serviço (como nós de um cluster de banco de dados), hospedá-las acidentalmente no mesmo rack do datacenter cria um ponto único de falha: se a fonte de alimentação do rack queimar, todas as VMs caem juntas.

O Availability Set (Conjunto de Disponibilidade) resolve esse problema distribuindo as instâncias entre diferentes domínios físicos:

flowchart TD
    subgraph Rack1["Rack Físico 1"]
        FD0["Fault Domain 0 (Fonte A / Switch A)"]
        UD0["Update Domain 0 (VM-1)"]
    end

    subgraph Rack2["Rack Físico 2"]
        FD1["Fault Domain 1 (Fonte B / Switch B)"]
        UD1["Update Domain 1 (VM-2)"]
    end

    subgraph Rack3["Rack Físico 3"]
        FD2["Fault Domain 2 (Fonte C / Switch C)"]
        UD2["Update Domain 2 (VM-3)"]
    end
  • Fault Domain (FD - Domínio de Falha): Representa um grupo de hardware físico que compartilha a mesma fonte de energia e o mesmo switch de rede. Ao criar um Availability Set, o Azure distribui as VMs em até 3 Fault Domains distintos.
  • Update Domain (UD - Domínio de Atualização): Garante que, durante as manutenções periódicas de hipervisor realizadas pela Microsoft, apenas um grupo de máquinas seja reiniciado por vez, preservando o quorum das réplicas ativas.

A Proteção Definitiva contra Desastres: Availability Zones

Embora os Availability Sets protejam contra a queima de um rack individual, eles não protegem contra um desastre que atinja o datacenter inteiro (como uma enchente local, incêndio ou corte maciço de energia na região).

As Zonas de Disponibilidade (Availability Zones - AZ) elevam a resiliência a um patamar superior:

flowchart LR
    subgraph Regiao["Região Azure (Ex: Brazil South / East US)"]
        direction TB
        AZ1["Zona 1<br/>Datacenter Físico Independente<br/>(Energia, Refrigeração e Rede Próprias)"]
        AZ2["Zona 2<br/>Datacenter Físico Independente<br/>(Localizado a quilômetros de distância)"]
        AZ3["Zona 3<br/>Datacenter Físico Independente<br/>(Conexão de fibra ótica de latência < 2ms)"]

        AZ1 <-->|Fibra Privada| AZ2
        AZ2 <-->|Fibra Privada| AZ3
    end

    LB["Azure Load Balancer Zonal / Global"] --> AZ1
    LB --> AZ2
    LB --> AZ3

Cada Zona de Disponibilidade é um datacenter físico isolado a quilômetros de distância dentro da mesma região geográfica, interconectado por uma rede de fibra ótica privada de altíssima velocidade e latência ultrabaixa (menos de 2 milissegundos). Distribuir réplicas entre 3 Zonas de Disponibilidade garante um SLA contratual de 99,99% de uptime.


Azure Batch: Computação Paralela de Alto Rendimento

Para cargas de trabalho não-interativas que não exigem servidores web ativos continuamente — como renderização 3D de vídeo, simulações financeiras de risco Monte Carlo ou processamento de milhares de imagens —, o Azure Batch provisiona automaticamente milhares de núcleos de CPU/GPU sob demanda, distribui as tarefas em filas paralelas, executa os binários e desliga a infraestrutura imediatamente após a conclusão dos cálculos, otimizando drasticamente os custos operacionais.


Conclusão

Projetar a camada de computação na nuvem exige alinhar os requisitos de negócio da aplicação com os modelos de resiliência corretos. Ao delegar a complexidade operacional para plataformas gerenciadas como Azure App Services quando possível, reservar Virtual Machines para sistemas com dependências estritas do sistema operacional e estruturar todas as réplicas produtivas através de Availability Zones, engenheiros constroem sistemas corporativos capazes de resistir a falhas físicas sem interrupção de serviço aos clientes.