Confrontare le opzioni di hosting di Funzioni di Azure
Quando si crea un'app per le funzioni in Azure, è necessario scegliere un piano di hosting per l'app. Azure offre le opzioni di hosting seguenti per il codice della funzione:
Opzione Hosting | Service | Disponibilità | Supporto dei contenitori |
---|---|---|---|
Piano a consumo | Funzioni di Azure | Disponibilità Generale | None |
Piano A consumo Flex | Funzioni di Azure | Anteprima | None |
Piano Premium | Funzioni di Azure | Disponibilità generale | Linux |
Piano dedicato | Funzioni di Azure | Disponibilità generale | Linux |
App contenitore | App contenitore di Azure | Disponibilità generale | Linux |
L'infrastruttura del servizio app di Azure facilita l'hosting di Funzioni di Azure su macchine virtuali Linux e Windows. L'opzione di hosting scelta determina i comportamenti seguenti:
- Come viene ridimensionata l'app per le funzioni.
- Le risorse disponibili per ogni istanza dell'app per le funzioni.
- Il supporto per funzionalità avanzate, ad esempio la connettività della rete virtuale di Azure.
- Supporto per i contenitori Linux.
Il piano scelto influisce anche sui costi per l'esecuzione del codice della funzione.
Panoramica dei piani
Di seguito è riportato un riepilogo dei vantaggi delle varie opzioni di hosting:
Piano a consumo
Il piano a consumo è il piano di hosting predefinito. Pagamento delle risorse di calcolo solo quando le funzioni sono in esecuzione (con pagamento in base al consumo) con scalabilità automatica. Quando si usa un piano a consumo, le istanze dell'host di Funzioni di Azure vengono aggiunte e rimosse in modo dinamico in base al numero di eventi in ingresso.
Piano A consumo Flex
Ottenere scalabilità elevata con scelte di calcolo, rete virtuale e fatturazione con pagamento in base al consumo. Nel piano A consumo Flex, le istanze dell'host Funzioni vengono aggiunte e rimosse dinamicamente in base alla concorrenza configurata per istanza e al numero di eventi in ingresso.
È possibile ridurre gli avvii a freddo specificando il numero di istanze con provisioning (sempre pronte). Ridimensiona automaticamente in base alla richiesta.
Piano Premium
Ridimensionamento automatico in base alla domanda usando ruoli di lavoro preriscaldati senza ritardo dopo l’inattività, esecuzione su istanze più potenti e connessioni alle reti virtuali.
Prendere in considerazione il piano Premium di Funzioni di Azure nelle situazioni seguenti:
- Le app per le funzioni vengono eseguite in modo continuo o quasi continuo.
- Si vuole un maggiore controllo delle istanze e si vogliono distribuire più app per le funzioni nello stesso piano con ridimensionamento guidato dagli eventi.
- Si disponde di un numero elevato di piccole esecuzioni e una fattura di esecuzione elevata, ma pochi GB/secondo nel piano a consumo.
- Sono necessarie più opzioni di CPU o memoria rispetto a quelle fornite dai piani a consumo.
- Il codice deve essere eseguito più a lungo del tempo massimo di esecuzione consentito nel piano a consumo.
- È necessaria la connettività di rete virtuale.
- Si vuole fornire un'immagine Linux personalizzata in cui eseguire le funzioni.
Piano dedicato
Eseguire le funzioni all'interno di un piano di servizio app a tariffe del piano di servizio app regolari. Ideale per gli scenari a esecuzione prolungata in cui non si può usare Durable Functions.
Prendere in considerazione un piano di servizio app nelle situazioni seguenti:
- È necessaria la fatturazione con costi prevedibili o è necessario ridimensionare manualmente le istanze.
- Si vogliono eseguire più app Web e app per le funzioni nello stesso piano
- È necessario accedere a scelte di dimensioni di calcolo maggiori.
- Isolamento dell'ambiente di calcolo completo e accesso di rete sicuro fornito da un ambiente del servizio app (ASE).
- Utilizzo elevato della memoria e scalabilità elevata (ASE).
App contenitore
Creare e distribuire app per le funzioni in contenitori in un ambiente completamente gestito ospitato da App contenitore di Azure.
Usare il modello di programmazione di Funzioni di Azure per creare app per le funzioni native del cloud, serverless e basate su eventi. Eseguire le proprie funzioni insieme ad altri microservizi, API, siti Web e flussi di lavoro come programmi ospitati in contenitori.
Prendere in considerazione l'hosting delle funzioni in App contenitore nelle situazioni seguenti:
- Si vogliono creare pacchetti di librerie personalizzate con il codice della funzione per supportare le app line-of-business.
- È necessario eseguire la migrazione dell'esecuzione del codice dalle app locali o legacy ai microservizi nativi del cloud in esecuzione nei contenitori.
- Si vuole evitare il sovraccarico e la complessità della gestione dei cluster Kubernetes e del calcolo dedicato.
- È necessaria la potenza di elaborazione di fascia alta fornita dalle risorse di calcolo della CPU dedicate per le funzioni.
Durata del timeout di un'app per le funzioni
La proprietà functionTimeout
nel file di progettohost.json specifica la durata del timeout per le funzioni in un'app per le funzioni. Questa proprietà si applica in modo specifico alle esecuzioni di funzioni. Dopo l'avvio dell'esecuzione della funzione, la funzione deve restituire/rispondere entro la durata del timeout.
La tabella seguente mostra i valori predefiniti e massimi (in minuti) per piani specifici:
Piano | Default | Massimo1 |
---|---|---|
Piano a consumo | 5 | 10 |
Piano a consumo flex | 30 | Illimitati3 |
Piano Premium | 302 | Illimitati3 |
Piano dedicato | 302 | Illimitati3 |
App contenitore | 305 | Illimitati3 |
- Indipendentemente dall'impostazione di timeout dell'app per le funzioni, 230 secondi è la quantità di tempo massima che una funzione attivata da HTTP può impiegare per rispondere a una richiesta.
- Il timeout predefinito per la versione 1.x del runtime di Funzioni è illimitato.
- Garantito per un massimo di 60 minuti. L'applicazione di patch del sistema operativo e al runtime, l'applicazione di patch alle vulnerabilità e il ridimensionamento dei comportamenti possono comunque annullare le esecuzioni delle funzioni.
- In un piano A consumo Flex l'host non applica un limite di tempo di esecuzione. Tuttavia, al momento non esistono garanzie perché la piattaforma potrebbe dover terminare le istanze durante la riduzione, le distribuzioni o l'applicazione di aggiornamenti.
- Quando il numero minimo di repliche è impostato su zero, il timeout predefinito dipende dai trigger specifici usati nell'app.