Condividi tramite


Migliori pratiche per l'architettura delle Funzioni di Azure

Funzioni di Azure è un servizio di calcolo serverless che è possibile usare per eseguire codice basato su eventi senza dover gestire direttamente l'infrastruttura. Azure Functions è un'offerta di funzione come servizio che astrae l'infrastruttura sottostante. Questa astrazione consente di concentrarsi sul codice. Azure Functions vengono ridimensionate automaticamente in base alla domanda e ti addebita solo per le risorse utilizzate durante il funzionamento.

Come architetto, questo articolo presuppone che tu abbia esaminato l'albero delle decisioni di calcolo e abbia scelto Funzioni di Azure come soluzione di elaborazione per il carico di lavoro. Le linee guida presenti in questo articolo forniscono raccomandazioni architettoniche che sono collegate ai principi dei pilastri del Framework Well-Architected.

Ambito della tecnologia

Questa revisione è incentrata sulle decisioni correlate per la risorsa di Azure seguente:

  • App per le funzioni

Note

Questa guida al servizio si basa sulle linee guida contenute nella guida al servizio App di Azure (App Web). Funzioni di Azure è un servizio di calcolo serverless. Le funzioni vengono distribuite nei Piani di App Service, che forniscono l'infrastruttura di calcolo sottostante per il tuo carico di lavoro. È possibile scegliere tra diversi piani di hosting.

Il piano di consumo è completamente gestito e non consente l'accesso all'istanza associata del servizio di applicazioni. I piani di hosting Dedicati e Premium consentono di configurare e gestire l'istanza del servizio app. Fare riferimento alla guida al servizio app per consigli e considerazioni quando si sceglie il piano di hosting Dedicato o Premium.

Reliability

Lo scopo del pilastro Affidabilità è fornire funzionalità continue attraverso la costruzione di una resilienza sufficiente e la capacità di recuperare rapidamente dai guasti.

I principi di progettazione dell'affidabilità forniscono una strategia di progettazione di alto livello applicata per singoli componenti, flussi di sistema e il sistema nel suo complesso.

Elenco di controllo per la progettazione del carico di lavoro

Avvia la tua strategia di progettazione basandoti sulla checklist di revisione del progetto per l'affidabilità. Determinare la rilevanza per i requisiti aziendali tenendo presenti le funzionalità e le configurazioni specifiche di Funzioni di Azure. Estendere la strategia per includere altri approcci in base alle esigenze.

  • Comprendere i trigger: Assicurarsi di comprendere appieno come vengono attivate le Funzioni di Azure. I trigger includono richieste HTTP, timer, code di messaggi e altro ancora. Scegliere i trigger che soddisfano i requisiti di affidabilità dell'applicazione.

    Ad esempio, se la funzione elabora i messaggi da una coda, assicurarsi che la coda stessa sia resiliente e che i messaggi possano essere rielaborati in caso di errore.

  • Implementare nuovi tentativi e modelli durevoli: Usare criteri di ripetizione dei tentativi predefiniti per gli errori temporanei. Per flussi di lavoro più complessi, è consigliabile usare l'estensione Durable Functions di Funzioni di Azure. Fornisce la gestione dello stato e il coordinamento tra più operazioni funzionali.

    Durable Functions è particolarmente utile per gli scenari che richiedono affidabilità nei flussi di lavoro a esecuzione prolungata. Supporta i tentativi automatici e la gestione delle attività persistenti.

  • Assicurarsi di una corretta gestione delle eccezioni: Implementare una gestione robusta delle eccezioni per garantire che le funzioni gestiscano i fallimenti in modo ordinato. Registrare gli errori e prendere in considerazione l'implementazione di meccanismi di avviso per gli errori critici.

  • Pianificare la scalabilità: Le Funzioni di Azure scalano automaticamente in base alla domanda. Assicurarsi che l'applicazione sia progettata per gestire i picchi testandone le prestazioni sotto carico.

    Prendere in considerazione l'uso di Application Insights per monitorare le prestazioni e tenere traccia della scalabilità delle funzioni in tempo reale.

  • Progettare per idempotency: Assicurarsi che le funzioni possano essere ritentate in modo sicuro senza causare effetti collaterali imprevisti. L'idempotenza è fondamentale per le funzioni che interagiscono con sistemi esterni o modificano i dati.

  • Usare Durable Functions per le operazioni a esecuzione prolungata: Per le operazioni che richiedono l'orchestrazione o i processi a esecuzione prolungata, usare Durable Functions per mantenere lo stato e garantire l'affidabilità in più passaggi.

  • Monitorare l'integrità della soluzione: Integrare la soluzione Funzioni di Azure nel sistema complessivo di monitoraggio e avviso dell'integrità del carico di lavoro.

Consigli sulla configurazione

Recommendation Benefit
Configurare i tentativi automatici per gli errori temporanei. Scopri di più sulla gestione degli errori e sui retry di Azure Functions. Migliora l'affidabilità ritentando automaticamente le esecuzioni non riuscite, riducendo la probabilità di perdita o interruzione dei dati.
Usare Durable Functions per orchestrare flussi di lavoro complessi e processi a esecuzione prolungata. Per saperne di più su Durable Functions. Fornisce un funzionamento affidabile dei flussi di lavoro a lunga durata, con la gestione dello stato integrata e i tentativi automatici.
Implementare il monitoraggio e la registrazione centralizzata usando Application Insights. Configurare Application Insights. Migliora il monitoraggio e la risoluzione dei problemi fornendo informazioni dettagliate sulle operazioni e sulle dipendenze delle funzioni.
Scalare automaticamente in base al piano di hosting delle Funzioni, al tipo di trigger e alla domanda. Altre informazioni sul ridimensionamento. Garantisce che l'applicazione possa gestire gli aumenti del traffico senza intervento manuale, migliorando l'affidabilità e le prestazioni.

Security

Lo scopo del pilastro Sicurezza è fornire garanzie di riservatezza, integrità e disponibilità al carico di lavoro.

I principi di progettazione della sicurezza forniscono una strategia di progettazione di alto livello per raggiungere questi obiettivi applicando approcci alla progettazione tecnica di Funzioni di Azure.

Elenco di controllo per la progettazione del carico di lavoro

Avvia la tua strategia di progettazione in base alla checklist di revisione della progettazione per la sicurezza e identifica vulnerabilità e controlli per migliorare il profilo di sicurezza. Estendere la strategia per includere altri approcci in base alle esigenze.

  • Usare le identità gestite:Abilitare le identità gestite per le app per le funzioni per accedere in modo sicuro ad altri servizi di Azure senza dover gestire le credenziali.

  • Proteggere l'app per le funzioni con Microsoft Entra ID: Limitare l'accesso alle funzioni configurando Funzioni di Azure per richiedere l'autenticazione di Microsoft Entra ID.

  • Applicare i controlli di sicurezza di rete: Comprendere le opzioni di rete di Funzioni di Azure disponibili per il modello di hosting per proteggere la configurazione di rete di Funzioni di Azure. Proteggere la rete per soddisfare i requisiti.

Consigli sulla configurazione

Recommendation Benefit
Abilitare le identità gestite per l'accesso sicuro alle risorse di Azure. Abilitare le identità gestite Semplifica la gestione delle credenziali eliminando la necessità di archiviare e ruotare i segreti. Questo approccio migliora la sicurezza.
Usare di Azure Key Vault per la gestione dei segreti e la rotazione regolare. Integrare Key Vault con Funzioni di Azure. Consente di proteggere le informazioni riservate, ad esempio le chiavi API e le stringhe di connessione, archiviandola in modo sicuro e automatizzando la rotazione dei segreti quando non è possibile usare un'identità gestita.
integra con una rete virtuale e usa endpoint privati . Protegge le app per le funzioni limitando l'accesso alla rete interna e impedendo l'esposizione a Internet pubblico.

L'integrazione della rete virtuale e gli endpoint privati non sono disponibili nel piano di hosting a consumo.

Ottimizzazione dei costi

L'ottimizzazione dei costi è incentrata su rilevare modelli di spesa, assegnare priorità agli investimenti in aree critiche e ottimizzare in altri per soddisfare il budget dell'organizzazione rispettando i requisiti aziendali.

I principi di progettazione di Ottimizzazione costi forniscono una strategia di progettazione di alto livello per raggiungere tali obiettivi e fare compromessi in base alle esigenze nella progettazione tecnica relativa a Funzioni di Azure e al relativo ambiente.

Elenco di controllo per la progettazione del carico di lavoro

Avvia la tua strategia di progettazione basata sulla checklist di revisione del design per l'ottimizzazione dei costi negli investimenti. Ottimizzare la progettazione in modo che il carico di lavoro sia allineato al budget allocato per esso. La progettazione deve usare le funzionalità di Azure appropriate, monitorare gli investimenti e trovare opportunità per ottimizzare nel tempo.

  • Scegliere il piano tariffario appropriato: Funzioni di Azure include più piani tariffari, tra cui il piano a consumo, il piano Premium e il piano dedicato (servizio app). Scegliere un piano tariffario in linea con il carico di lavoro e le considerazioni sui costi.

    Il piano a consumo è ideale per carichi di lavoro imprevedibili che hanno operazioni poco frequenti perché si paga solo per il tempo operativo e le risorse utilizzate. Quando l'app è inattiva, non ti viene addebitato nulla.

  • Ottimizzare il tempo dell'operazione: Ridurre il tempo dell'operazione ottimizzando il codice della funzione. Ridurre al minimo l'uso delle dipendenze esterne e ottimizzare la logica del codice per ridurre la durata di ogni operazione.

  • Monitorare e analizzare i costi: Monitorare regolarmente l'utilizzo e i costi delle app per le funzioni usando Gestione costi Microsoft e configurare avvisi per rilevare le anomalie dei costi.

Consigli sulla configurazione

Recommendation Benefit
Usare il piano a consumo per i carichi di lavoro con traffico non prevedibile. Informazioni sul piano a consumo. Riduce i costi caricando solo le risorse usate quando vengono eseguite le funzioni, evitando così i costi associati alle risorse inattive.
Riservare capacità per piani Elastic Premium o piani di servizio app dedicati se il carico di lavoro è prevedibile. Riduce i costi tramite i prezzi scontati per i carichi di lavoro prevedibili con modelli di utilizzo costanti.
Monitorare regolarmente i costi e configurare avvisi per le anomalie. Monitorare i costi con gli avvisi. Consente di identificare in anticipo i picchi di costo, che consentono la gestione e l'ottimizzazione proattive.

Eccellenza operativa

L'eccellenza operativa si concentra principalmente sulle procedure per le pratiche di sviluppo , l'osservabilità e la gestione dei rilasci.

I principi di progettazione dell'eccellenza operativa forniscono una strategia di progettazione di alto livello per raggiungere tali obiettivi per i requisiti operativi del carico di lavoro.

Elenco di controllo per la progettazione del carico di lavoro

Avvia la strategia di progettazione in base all'elenco di controllo di revisione della progettazione per l'eccellenza operativa per definire i processi per l'osservabilità, i test e la distribuzione correlati alle Funzioni di Azure.

  • Automatizzare le distribuzioni: Usare pipeline di integrazione continua e recapito continuo (CI/CD) per automatizzare la distribuzione delle app per le funzioni. Eseguire l'integrazione con Azure DevOps o GitHub Actions per flussi di lavoro di distribuzione senza problemi.

  • Implementare il monitoraggio dell'integrità: Usare Monitoraggio di Azure e Application Insights per tenere traccia dell'integrità e delle prestazioni delle funzioni. Configurare gli avvisi per le metriche critiche e usare dashboard personalizzati per informazioni dettagliate in tempo reale. Per altre informazioni, vedere Monitorare Funzioni di Azure.

  • Distribuire la soluzione in modo sicuro: Comprendere i modelli di distribuzione disponibili per Funzioni di Azure e adottare il modello più adatto alle procedure di distribuzione sicure.

  • Pianificare il ripristino di emergenza:Implementare strategie di ripristino di emergenza usando zone di ripristino di emergenza e disponibilità tra aree per le funzioni critiche.

Consigli sulla configurazione

Recommendation Benefit
Automatizzare le distribuzioni con pipeline CI/CD usando Azure DevOps o GitHub Actions. Configurare CI/CD. Migliora la coerenza della distribuzione, riduce gli errori manuali e accelera il time-to-market per le nuove funzionalità.
Usare gli slot di implementazione per le modifiche di staging prima del rilascio di produzione. Riduce il rischio di introdurre errori nell'ambiente di produzione e abilita i rollback sicuri se vengono rilevati problemi.
Implementare il monitoraggio centralizzato usando Application Insights e Monitoraggio di Azure usando le metriche disponibili. Migliora la visibilità delle prestazioni delle funzioni, che consente di identificare e risolvere rapidamente i problemi.

Efficienza delle prestazioni

L'efficienza delle prestazioni riguarda mantenere l'esperienza utente anche quando si verifica un aumento del carico gestendo la capacità. La strategia include il ridimensionamento delle risorse, l'identificazione dei potenziali colli di bottiglia e la loro risoluzione, e l'ottimizzazione per prestazioni di picco.

I principi di progettazione dell'efficienza delle prestazioni forniscono una strategia di progettazione di alto livello per raggiungere tali obiettivi di capacità rispetto all'utilizzo previsto.

Elenco di controllo per la progettazione del carico di lavoro

Inizia la tua strategia di progettazione basandoti sull'elenco di controllo per la revisione della progettazione per l'Efficienza delle Prestazioni. Definire una baseline basata su indicatori di prestazioni chiave per Funzioni di Azure.

  • Ottimizzare l'avvio a freddo: Ridurre al minimo gli effetti degli avvii a freddo usando piani Premium Flex che forniscono istanze preavvise o assicurarsi che le funzioni rimangano calde usando strategie come il trigger di riscaldamento di Funzioni di Azure.

  • Ottimizzare il codice della funzione: Scrivere codice efficiente per ridurre il tempo operativo e il consumo di risorse. Evitare operazioni a esecuzione prolungata e ottimizzare le chiamate al servizio esterno.

  • Abilitare la scalabilità automatica: Sfruttare le funzionalità di scalabilità automatica di Azure Functions per adattare automaticamente le applicazioni in base alla richiesta. Assicurarsi che le regole di ridimensionamento siano ben definite e testate.

  • Monitorare le metriche delle prestazioni: Usare Application Insights per monitorare le metriche delle prestazioni chiave, ad esempio il tempo operativo, la CPU e l'utilizzo della memoria. Configurare gli avvisi per la riduzione delle prestazioni.

Consigli sulla configurazione

Recommendation Benefit
Usare il piano Elastic Premium con un'istanza pre-riscaldata per ridurre al minimo la latenza di avvio a freddo. Comprendere l'avvio a freddo. Riduce la latenza associata agli avvii a freddo, migliorando i tempi di risposta per le applicazioni sensibili al tempo.
Ottimizzare il codice della funzione per ridurre il tempo dell'operazione. Comprendere le procedure consigliate per Funzioni di Azure. Migliora le prestazioni riducendo il tempo e le risorse necessarie per l'esecuzione di ogni funzione.
Abilitare la scalabilità automatica per regolare automaticamente la capacità in base alla domanda. Configurare la scalabilità automatica. Assicura che le app per le funzioni possano gestire carichi variabili senza intervento manuale. Questo approccio consente di mantenere le prestazioni sotto pressione.

Criteri di Azure

Azure offre un set completo di criteri predefiniti correlati a Funzioni di Azure e alle relative dipendenze. Un set di criteri di Azure può controllare alcune delle raccomandazioni precedenti. Ad esempio, è possibile verificare se:

  • Tutte le app per le funzioni hanno identità gestite abilitate.
  • Le app per le funzioni usano solo endpoint privati per la sicurezza di rete.
  • La registrazione diagnostica è abilitata per tutte le applicazioni funzionali.

Per una governance completa, esamina le definizioni integrate dei criteri di Azure, contrassegnate come e, e altri criteri che potrebbero influire sulla sicurezza del livello di rete.

Raccomandazioni di Azure Advisor

Azure Advisor è un consulente cloud personalizzato che consente di seguire le procedure consigliate per ottimizzare le distribuzioni di Azure.

Per altre informazioni, vedere Azure Advisor.

Architettura di esempio

Architettura di base che illustra le raccomandazioni principali: progettazione dell'architettura delle applicazioni Web.

Passaggi successivi

Considerare le risorse seguenti per esplorare ulteriormente le raccomandazioni evidenziate in questo documento: