Decidere se l'elaborazione serverless è adatta alle esigenze aziendali

Completato

Per stabilire se l'elaborazione serverless è adatta alle proprie esigenze, è prima di tutto necessario determinare in che cosa consista.

Che cos'è l'elaborazione serverless?

Il calcolo serverless può essere considerato come una funzione come servizio (FaaS) o un microservizio ospitato in una piattaforma cloud. La logica di business viene eseguita come funzioni e non è necessario eseguire manualmente il provisioning o ridimensionare l'infrastruttura. Il provider del cloud gestisce l'infrastruttura. L'app viene automaticamente ridimensionata o ridotta a seconda del carico. Azure offre diversi modi per compilare questo tipo di architettura. I due approcci più comuni sono App per la logica di Azure e Funzioni di Azure, che è il punto focale di questo modulo.

Che cos'è Funzioni di Azure?

Funzioni di Azure è una piattaforma applicativa serverless, che consente agli sviluppatori di ospitare la logica di business che potrà essere eseguita senza occuparsi del provisioning dell'infrastruttura. Funzioni di Azure offre scalabilità intrinseca e prevede l'addebito dei costi solo per le risorse usate. È possibile scrivere il codice della funzione nel linguaggio preferito, tra cui C#, Java, JavaScript, Python e PowerShell. È incluso anche il supporto per strumenti di gestione pacchetti come NuGet e npm, in modo che sia possibile usare librerie comuni nella logica di business.

Vantaggi di una soluzione di calcolo serverless

L'elaborazione serverless è una valida opzione per ospitare nel cloud il codice per la logica di business. Con le offerte serverless, come Funzioni di Azure, è possibile scrivere la logica di business nel linguaggio di propria scelta. Si ottiene un ridimensionamento automatico, non ci sono server da gestire e la fatturazione è basata su ciò che viene utilizzato, non sul tempo riservato. Di seguito sono riportate alcune altre caratteristiche di una soluzione serverless da valutare.

Evita la sovrassegnazione dell'infrastruttura

Si supponga di aver effettuato il provisioning di server delle macchine virtuali e di averli configurati con risorse sufficienti a gestire i picchi del carico. Quando il carico diminuisce, l'utente paga potenzialmente per un'infrastruttura che non usa. Grazie al ridimensionamento automatico, l'elaborazione serverless contribuisce a risolvere il problema dell'assegnazione. Vengono così addebitate solo le funzioni in esecuzione.

Logica senza stato

Le funzioni senza stato sono particolarmente adatte all'elaborazione senza server, in quanto le istanze della funzione vengono create ed eliminate su richiesta. Se lo stato è necessario, può essere archiviato in un servizio di archiviazione associato.

Basate su eventi

Le funzioni sono guidate dagli eventi. Vengono eseguiti solo in risposta a un evento (denominato "trigger"), ad esempio la ricezione di una richiesta HTTP o l'aggiunta di un messaggio a una coda. Il trigger viene configurato come parte della definizione di funzione. Questo approccio semplifica notevolmente il codice consentendo di dichiarare la provenienza dei dati (associazione di trigger/input) e la loro destinazione (associazione di output). Non è necessario scrivere codice per osservare code, BLOB, hub e così via. e l'utente può concentrarsi esclusivamente sulla logica di business.

Le funzioni possono essere usate negli ambienti di calcolo tradizionale

Le funzioni sono un componente fondamentale dell'elaborazione serverless, ma sono anche una piattaforma di calcolo generale per l'esecuzione di qualsiasi tipo di codice. Se le esigenze dell'app cambiano, è possibile eseguire il progetto e distribuirlo in un ambiente non serverless. Quello offre flessibilità di gestire il ridimensionamento, di operare su reti virtuali e persino di isolare completamente le funzioni.

Svantaggi di una soluzione di calcolo serverless

Il calcolo serverless, come fornito da Funzioni di Azure nel piano di consumo, non è sempre la soluzione appropriata per ospitare la logica di business. Di seguito vengono illustrate alcune caratteristiche di funzioni che possono influenzare la decisione di ospitare i servizi usando l'elaborazione serverless.

Tempo di esecuzione

Per impostazione predefinita, le funzioni hanno un timeout di cinque (5) minuti. configurabile fino a un massimo di 10 minuti. Se l'esecuzione della funzione richiede più di 10 minuti, è possibile ospitarla su una macchina virtuale. Se, inoltre, il servizio viene avviato da una richiesta HTTP e si prevede tale valore come risposta HTTP, il timeout viene ulteriormente ridotto a 2,5 minuti. Esiste tuttavia anche un'opzione denominata Durable Functions che consente di orchestrare le esecuzioni di più funzioni senza alcun timeout.

Frequenza di esecuzione

Altro aspetto da valutare è la frequenza di esecuzione. Se si prevede che la funzione venga eseguita in modo continuo dai clienti, è opportuno stimarne l'utilizzo e calcolare il costo che deriva dall'uso delle funzioni. Ospitare il servizio in una macchina virtuale potrebbe essere più conveniente.

Quando la funzione viene ridimensionata, è possibile creare solo un'istanza dell'app per le funzioni ogni 10 secondi, per un massimo di 200 istanze totali. Tenere presente che ogni istanza può prevedere più esecuzioni simultanee, quindi non esiste alcun limite per quanto riguarda il traffico che una singola istanza può gestire. Poiché tipi di trigger diversi presentano requisiti di ridimensionamento diversi, è consigliabile valutare la scelta di trigger disponibili e analizzarne i limiti.