Vai al contenuto

Scalabilità Regolamentata per Logic App Standard: Una Guida Pratica

Scopri come implementare una scalabilità basata su regole per Logic App Standard per ottimizzare le prestazioni.

La scalabilità di Logic App Standard rappresenta una sfida interessante per molti sviluppatori e architetti del cloud. Sebbene il piano WS ASP utilizzi un approccio di scalabilità basato su target, ci sono situazioni in cui l’uso elevato di CPU o memoria non si traduce in una lunga coda di lavori, lasciando il controller di scalabilità incapace di aumentare il numero di istanze come desiderato.

Questo articolo si propone di esplorare un metodo per “simulare” una funzionalità di scalabilità basata su regole per Logic App Standard, impiegando anche servizi come le Azure Functions o altre risorse esterne.

Meccanismo di Implementazione

Per abilitare la scalabilità in base all’utilizzo di CPU e memoria, è necessario ottenere i dati metrici appropriati. Ad esempio, per calcolare l’uso medio della CPU, possiamo accedere al portale Azure e utilizzare un’API specifica per estrarre i dati. La richiesta API assume una forma simile a:

https://management.azure.com/subscriptions/[SubscriptionID]/resourceGroups/[ResourceGroup]/providers/Microsoft.Web/serverFarms/[ASP Name]/providers/microsoft.Insights/metrics?timespan=[StartTime]/[EndTime]&interval=PT1M&metricnames=CpuPercentage&aggregation=average&metricNamespace=microsoft.web%2Fserverfarms&autoadjusttimegrain=true&validatedimensions=false&api-version=2019-07-01

Una volta che abbiamo recuperato i dati sull’utilizzo di CPU, possiamo calcolare se il valore attuale supera una soglia stabilita. In tal caso, possiamo chiamare l’API di gestione per modificare il numero di istanze sempre pronte.

Logica di Implementazione

  1. Recuperare l’uso della CPU tramite API per gli ultimi due minuti e calcolare la media.
  2. Recuperare il numero attuale di istanze di backend del Logic App e impostare il conteggio target come attuale.
  3. Controllare se l’uso medio della CPU supera la soglia di scalabilità (>50% per scalare verso l’alto e <10% per scalare verso il basso).
  4. Se la soglia di scalabilità oltrepassa il limite superiore, incrementare di un’unità il conteggio target, a meno che non si raggiunga il limite massimo di 20 istanze.
  5. Se l’uso della CPU è al di sotto della soglia di scaling in, diminuire di un’unità il conteggio target, mantenendo non meno di una istanza.
  6. Confrontare il valore attuale con quello target e inviare una richiesta per modificare il numero di istanze sempre pronte, se diverso.

Un esempio pratico di questa implementazione è disponibile nel repository GitHub di Drac-Zhang. Inoltre, per utilizzare Logic App Consumption, è fondamentale abilitare l’Identità Gestita e assegnare i ruoli “Reader” e “Logic App Standard Contributor” a livello di gruppo di risorse.

Problemi Noti

  • Poiché il monitoraggio dell’utilizzo di CPU/memoria avviene a livello di ASP, una singola App può essere gestita per ASP, anche se è possibile monitorare metriche specifiche per ogni Logic App.
  • Il numero massimo di istanze per la configurazione standard attuale è di 20.
  • Ci sono circa 60 secondi di latenza nel recupero delle metriche a causa del ritardo di ingesta.