Azure Compute Fleet: il nuovo standard per la scalabilità delle VM in Azure

Microsoft ha recentemente annunciato la General Availability di Azure Compute Fleet, un nuovo strumento per la gestione su larga scala delle Virtual Machine in Azure.
Permette di definire in modo dichiarativo l’approvvigionamento di grandi quantità di VM, fino a 10.000 in una singola regione, combinando Spot e On-demand, SKU differenti, Availability Zone e modelli di pricing; il tutto orchestrato tramite un’unica API.
In scenari come HPC, Batch Processing, AI Training, Rendering o analisi distribuita, consente di semplificare e automatizzare la complessità di gestire risorse su più Region e zone di disponibilità.

Entrando più nel dettaglio, Azure Compute Fleet è un servizio che permette di definire e controllare un insieme di VM distribuite su più gruppi, gestite come un’unica entità.
Il suo compito è:

  • Provisionare VM in modo dichiarativo.
  • Distribuire il carico su regioni, Availability Zone e dimensioni differenti.
  • Ottimizzare l’uso di Spot e On-demand per bilanciare costi e capacità.
  • Automatizzare fallback e strategie di allocazione.

Sostanzialmente ci permette di risolvere il problema di orchestrare manualmente più VM Scale Sets (VMSS), fornendo un piano di controllo unificato.

Concetti chiave

Il Fleet è la risorsa principale che definisce l’intera “flotta” di VM e ci permette di:

  • Specificare la targetCapacity (capacità desiderata).
  • Definire le strategie di allocazione.
  • Contenere uno o più gruppi con configurazioni personalizzate.

Ogni Fleet può avere più gruppi di VM (Fleet Groups) e questi definiscono SKU, Region, Availability Zone e priorità Spot/On-demand.

Azure Compute Fleet supporta più strategie di allocazione:

  • Lowest Price: minimizza costo scegliendo pool Spot più economici.
  • Capacity Optimized: riduce rischio di eviction scegliendo pool con maggiore capacità.
  • Balanced: combinazione personalizzabile di Spot e On-demand.

Per ogni gruppo si può specificare la quota di capacità da soddisfare con Spot e On-demand (ad es.: 80% Spot, 20% On-demand).
In caso di mancanza di Spot è possibile eseguire fallback automatico a On-demand.

Provisioning dichiarativo

Come anticipato, Azure Compute Fleet adotta un modello dichiarativo:

  • Non si gestiscono manualmente le VM o gli Scale Sets.
  • Si definisce cosa serve (capacità target, mix Spot/On-demand, preferenze di allocazione).
  • Azure si occupa del come.

Infrastructure as Code supportata tramite ARM Template, Bicep, CLI mentre il supporto per Terraform è in arrivo.

A seguire una definizione semplificata di una Compute Fleet in formato ARM:

{
  "type": "Microsoft.Compute/fleets",
  "apiVersion": "2024-04-02",
  "name": "myFleet",
  "location": "eastus",
  "properties": {
    "targetCapacity": 1000,
    "allocationStrategy": "LowestPrice",
    "groups": [
      {
        "name": "group1",
        "capacity": 600,
        "vmSku": "Standard_D2s_v5",
        "priorityMix": {
          "spot": 0.8,
          "onDemand": 0.2
        },
        "zones": ["1", "2"]
      },
      {
        "name": "group2",
        "capacity": 400,
        "vmSku": "Standard_F4s_v2",
        "priorityMix": {
          "spot": 0.5,
          "onDemand": 0.5
        }
      }
    ]
  }
}

Integrazione con VM Scale Sets

Azure Compute Fleet si basa su VMSS, ma astrae la loro gestione:

  • Ogni gruppo definito in Fleet corrisponde a un VM Scale Set.
  • Fleet gestisce il lifecycle di tutti i gruppi in modo coerente.
  • Permette un unico punto di controllo per monitorare, scalare e aggiornare centinaia o migliaia di VM.

In sintesi non serve gestire direttamente singoli VMSS, tutta la complessità di orchestrazione è gestita dal servizio.

Esempi di Use Case

High Performance Computing (HPC)
– Simulazioni scientifiche
– Analisi finanziaria complessa

Batch Processing
– Rendering video
– Pre-elaborazione big data

AI/ML
– Training di modelli su larga scala
– Inferencing elastico

Data Analytics
– Job distribuiti e scalabili

Conclusioni

Azure Compute Fleet rappresenta un salto di qualità per la gestione di workload su larga scala in Azure:

  • Permette di orchestrare migliaia di VM con un modello dichiarativo.
  • Riduce complessità operativa grazie a un piano di controllo unico.
  • Ottimizza costi e resilienza con strategie Spot/On-demand e distribuzione geografica.

Non ha costi aggiuntivi, il pricing dipende dalle VM sottostanti (Spot o On-demand).

Link utili:
Documentazione Azure Compute Fleet
Annuncio GA su Azure Tech Community
Approfondimento su ICTPower