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 queste opzioni di hosting per il codice della funzione:
| Opzione Hosting | Servizio | Disponibilità | Supporto dei contenitori |
|---|---|---|---|
| Piano a consumo | Funzioni di Azure | Disponibile a livello generale (GA) | Nessuna |
| Piano a consumo flessibile | Funzioni di Azure | GA | Nessuna |
| Piano Premium | Funzioni di Azure | GA | Contenitori Linux |
| Piano Dedicato | Funzioni di Azure | GA | Contenitori Linux |
| App contenitore | App contenitore di Azure | GA | Contenitori 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 contenitori Linux.
Il piano scelto influisce anche sui costi per l'esecuzione del codice della funzione.
Informazioni generali sui 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. Pagare le risorse di calcolo solo quando le funzioni sono in esecuzione (con pagamento in base al consumo) con scalabilità automatica. Nel piano a consumo, Le istanze dell'host di Funzioni vengono aggiunte e rimosse in modo dinamico in base al numero di eventi in ingresso.
Piano a consumo flessibile
Ottenere scalabilità elevata con scelte di calcolo, rete virtuale e fatturazione con pagamento in base al consumo. Nel piano Consumo Flessibile le istanze dell'host di Funzioni vengono aggiunte e rimosse in modo dinamico 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
Consente di dimensionare automaticamente in base alla domanda usando ruoli di lavoro preriscaldati che eseguono le applicazioni senza ritardi dopo l'inattività, di usare istanze più potenti per l'esecuzione e di connettersi alle reti virtuali.
Prendere in considerazione il piano Premium di Funzioni di Azure nelle situazioni seguenti:
- Le app per le funzioni vengono eseguite continuamente o quasi continuamente.
- 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
Consente di eseguire le funzioni all'interno di un piano di servizio app alle normali tariffe del piano di servizio app. 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 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 dell'app per le funzioni
La functionTimeout proprietà nel file di progetto host.json specifica la durata di 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 di timeout.
La tabella seguente mostra i valori predefiniti e massimi (in minuti) per piani specifici:
| Piano | Predefinito | Massimo1 |
|---|---|---|
| Piano di consumo flessibile | 30 | Senza vincoli2 |
| Piano Premium | 304 | Senza vincoli2 |
| Piano dedicato | 304 | Senza vincoli3 |
| App contenitore | 30 | Senza limiti5 |
| Piano A consumo | 5 | 10 |
- Indipendentemente dall'impostazione di timeout dell'app per le funzioni, 230 secondi è la quantità massima di tempo che una funzione attivata tramite HTTP può richiedere per rispondere a una richiesta. Ciò è dovuto al timeout di inattività predefinito di Azure Load Balancer. Per tempi di elaborazione più lunghi, prendere in considerazione l'uso del modello asincrono di Durable Functions o rinviare il lavoro effettivo e restituire una risposta immediata.
- Non è applicata alcuna durata massima di timeout di esecuzione. Tuttavia, il periodo di tolleranza assegnato a un'esecuzione di funzione è di 60 minuti durante la scalabilità per i piani Flex Consumption e Premium e viene assegnato un periodo di tolleranza di 10 minuti durante gli aggiornamenti della piattaforma.
- Richiede che il piano di servizio app sia impostato su Always On. È previsto un periodo di tolleranza di 10 minuti durante gli aggiornamenti della piattaforma.
- Il timeout predefinito per la versione 1.x del runtime di Funzioni è senza limiti.
- Quando il numero minimo di repliche è impostato su zero, il timeout predefinito dipende dai trigger specifici usati nell'app.