Raccomandazioni per classificare in ordine di priorità le prestazioni dei flussi critici

Si applica a questa raccomandazione per l'efficienza delle prestazioni di Azure Well-Architected Framework:

PE:09 Classificare in ordine di priorità le prestazioni dei flussi critici. L'allocazione delle risorse del carico di lavoro e delle attività di ottimizzazione delle prestazioni deve classificare in ordine di priorità i flussi che supportano i processi aziendali, gli utenti e le operazioni più importanti.

Questa guida descrive le raccomandazioni per classificare in ordine di priorità le prestazioni dei flussi critici in un carico di lavoro. I flussi critici rappresentano processi aziendali cruciali che generano ricavi o determinano operazioni con priorità elevata. Quando si assegna la priorità alle prestazioni dei flussi critici, assicurarsi che i flussi che hanno il maggior impatto ottengono le risorse necessarie prima dei flussi con priorità più bassa. In caso contrario, questa definizione di priorità può avere effetti negativi sproporzionati sulle priorità del carico di lavoro e sull'esperienza utente.

Definizioni

Termine Definizione
Flusso In un carico di lavoro la sequenza di azioni che esegue una funzione specifica. Un flusso implica lo spostamento dei dati e l'esecuzione di processi tra componenti del carico di lavoro.
Elaborazione della coda con priorità Atto di elaborazione di attività con priorità elevata prima delle attività con priorità bassa.
Limitazione della frequenza Azione di limitazione del numero di richieste che possono accedere a una risorsa.
Flusso di sistema Flusso di informazioni e processi all'interno di un sistema. Il sistema segue automaticamente questo flusso per abilitare i flussi utente o la funzionalità del carico di lavoro.
Flusso utente Sequenza che un utente segue per eseguire un'attività.

Strategie di progettazione chiave

I flussi critici fanno riferimento ai flussi utente chiave per i clienti o il sistema e i flussi di dati per le operazioni cruciali per la funzionalità del carico di lavoro. Questi flussi possono includere azioni quali registrazioni utente, accessi, acquisti di prodotti, accesso alle pagine dietro un paywall o qualsiasi altro percorso o processo chiave all'interno del carico di lavoro.

I flussi critici influiscono in modo significativo sull'esperienza utente o sulle operazioni aziendali. I flussi critici hanno obiettivi di prestazioni e contratti di servizio più elevati rispetto ai flussi non critici. Dove le risorse sono limitate, i flussi non critici devono restituire l'utilizzo delle risorse ai flussi critici. È necessario identificare, monitorare e classificare in ordine di priorità tutti i flussi prima di isolare e ottimizzare i flussi critici.

Identificare tutti i flussi

Il primo passaggio per classificare in ordine di priorità le prestazioni dei flussi critici consiste nell'identificare tutti i flussi all'interno del carico di lavoro. L'identificazione del flusso implica il mapping sistematico e la comprensione di ogni percorso utente e comunicazione dei componenti. L'obiettivo è comprendere le metriche delle prestazioni e il potenziale impatto dei flussi sulle prestazioni del carico di lavoro.

Suddividendo il carico di lavoro in flussi discreti, è possibile trovare colli di bottiglia delle prestazioni, utilizzo inefficiente delle risorse e opportunità per l'ottimizzazione delle prestazioni. Questa conoscenza espone aree di miglioramento necessarie ed è il primo passaggio per identificare i flussi critici. Per altre informazioni, vedere Identificare e valutare i flussi utente e di sistema.

Monitorare le metriche delle prestazioni del flusso

Dopo aver identificato tutti i flussi all'interno del carico di lavoro, è necessario raccogliere le metriche delle prestazioni in ogni flusso e monitorare tali metriche. Le metriche di flusso forniscono informazioni dettagliate sui tempi di risposta, sulle percentuali di errore e sulla velocità effettiva. L'obiettivo è osservare e registrare costantemente le metriche correlate alle prestazioni per perfezionare ulteriormente la comprensione dell'impatto di ogni flusso sulle prestazioni del carico di lavoro. Per monitorare le metriche dei flussi, è possibile usare gli strumenti seguenti per raccogliere dati:

  • Strumenti analitici e di rilevamento: questi strumenti forniscono informazioni dettagliate sul comportamento e sulle interazioni degli utenti all'interno dell'applicazione. Analizzando i dati utente, è possibile identificare i flussi più comuni, i colli di bottiglia o i potenziali problemi.

  • Strumenti di monitoraggio delle prestazioni delle applicazioni: usare gli strumenti APM per monitorare le prestazioni dell'applicazione e tenere traccia della modalità di esecuzione dei flussi. Questi strumenti offrono visibilità su tempi di risposta, errori e altre metriche delle prestazioni, consentendo di identificare i flussi critici e ottimizzarne le prestazioni.

  • Strumenti di registrazione e debug: usare questi strumenti per acquisire e analizzare i log e le informazioni di debug durante l'esecuzione dell'applicazione. Esaminare i log e le informazioni di debug per tracciare come vengono eseguiti i flussi e identificare i problemi o gli errori.

Identificare i flussi critici

Con i dati sulle prestazioni disponibili, è possibile iniziare a classificare tutti i flussi e identificare i flussi critici. L'identificazione dei flussi critici comporta la valutazione dell'impatto sulle prestazioni e della criticità di ogni flusso. La definizione delle priorità dei flussi efficaci garantisce che i flussi più importanti ricevano le risorse necessarie prima di flussi meno critici. Per classificare in ordine di priorità i flussi nell'applicazione, attenersi alla procedura seguente:

  • Identificare l'impatto aziendale: iniziare valutando l'importanza di ogni flusso all'interno delle operazioni. Concentrarsi sul modo in cui ogni flusso è allineato agli obiettivi aziendali, al suo impatto sugli utenti e ai potenziali effetti negativi delle prestazioni scarse. Ad esempio, mentre un livello di servizio gratuito potrebbe attirare più utenti, un livello a pagamento potrebbe essere più essenziale per gli obiettivi aziendali.

    Considerare inoltre gli effetti sulle prestazioni di un flusso tra uno o più processi aziendali. Più flussi possono supportare un singolo processo aziendale, ma spesso un flusso ha un effetto significativo sulle prestazioni di tale processo. Si vogliono identificare i flussi che hanno un impatto maggiore sulle prestazioni. Al contrario, un singolo flusso potrebbe supportare diversi processi. In questi casi, le prestazioni di questo flusso influiscono direttamente sull'efficacia di tutti i processi correlati ed è probabilmente un flusso critico.

  • Analizzare i dati sulle prestazioni: analizzare le metriche delle prestazioni associate a ogni flusso. Cercare modelli, anomalie o metriche in grado di fornire informazioni dettagliate sull'efficienza e l'importanza del flusso. Ad esempio, i flussi di sistema con un utilizzo significativo sono probabilmente flussi importanti.

  • Assegnare la classificazione di criticità: in base agli indicatori di impatto aziendale e prestazioni, è necessario classificare in ordine di priorità i flussi. Usare le classificazioni di criticità di alto, medio e basso. I flussi con un impatto aziendale significativo o una domanda di prestazioni elevata devono ricevere una classificazione di criticità "Elevata". Questi flussi sono i flussi critici. Concentrarsi sui flussi con traffico utente elevato o avere un effetto diretto sulla generazione dei ricavi. La tabella seguente fornisce le caratteristiche dei flussi critici (alti) e non critici (da medio a basso).

Flussi critici Flussi non critici
Utilizzo elevato Basso utilizzo
Business critical Non business critical
Operazioni costose Operazioni di piccole dimensioni
Tempo sensibile al tempo Non sensibile al tempo
Produzione Preproduzione
Elaborazione in tempo reale Elaborazione batch
Sensibile alla latenza Non sensibile alla latenza
Utente a pagamento Utente senza pagamento
Livello Premium Livello Basic
Attività importanti Attività non essenziali
Account con ricavi elevati Account a basso reddito

Isolare i flussi critici

Il processo di isolamento dei flussi critici riguarda la fornitura di risorse o capacità dedicate per supportare i flussi critici. Si desidera allocare risorse e attenzione a tali flussi essenziali per un'esperienza utente ottimale o a risultati aziendali significativi. L'obiettivo è garantire che i flussi critici ricevano sufficienti potenza di calcolo, larghezza di banda di rete e risorse per operare in modo efficiente ed efficace. Isolando i flussi critici, è possibile gestire più facilmente le risorse che supportano i flussi critici. Ecco i consigli per isolare i flussi critici:

  • Segmentazione delle risorse: creare risorse separate per i flussi critici, consentendo loro di operare in modo indipendente senza interferenze da altri processi. Ad esempio, è possibile isolare i flussi critici nei segmenti di rete dedicati o usando server dedicati per gestire le esigenze di elaborazione di questi flussi. Questo approccio consente di ridurre al minimo il modo in cui i flussi non critici possono influire negativamente sui flussi critici.

  • Segmentazione logica: usare strumenti di virtualizzazione e containerizzazione come Docker o Kubernetes per isolare i flussi a livello di software. È possibile separare i flussi critici nelle macchine virtuali. A tale scopo, si crea un ambiente isolato, riducendo le dipendenze e potenziali interferenze da altri flussi.

  • Allocazione della capacità: per i flussi critici allocare in modo esplicito un set fisso di capacità, ad esempio CPU, memoria e I/O su disco. Questa allocazione garantisce che i flussi critici abbiano sempre risorse sufficienti per funzionare in modo efficiente. Impostare quote di risorse o limiti usando le piattaforme di orchestrazione. Assegnando in modo esplicito le risorse ai flussi critici, si impedisce la contesa delle risorse e si assegna priorità alla modalità di esecuzione.

Compromesso: la segmentazione delle risorse influisce sui costi. Quando si dedicano risorse a un flusso, spesso si aumenta il costo e si lasciano sottoutilizzate alcune risorse. Per giustificare i miglioramenti delle prestazioni ai flussi critici, l'aumento dell'impatto aziendale deve superare l'aumento dei costi.

Ottimizzare l'allocazione della capacità

Quando non è possibile isolare i flussi critici, l'opzione migliore successiva consiste nel definire la priorità dei flussi critici nell'accesso alla capacità disponibile. L'ottimizzazione dell'allocazione della capacità riguarda la distribuzione strategica della capacità disponibile in flussi diversi in base alla loro criticità. La capacità include CPU, memoria, archiviazione e larghezza di banda di rete. L'obiettivo è garantire che i flussi più critici (priorità più alta) ricevano la capacità necessaria per operare in modo efficace. Per decidere come allocare la capacità, prendere in considerazione queste strategie:

  • Valutare la capacità delle risorse: valutare la quantità di capacità delle risorse allocata ai flussi. La capacità può includere risorse come CPU, memoria, archiviazione e larghezza di banda di rete. Comprendere le limitazioni e i vincoli dell'infrastruttura o dell'ambiente.

  • Analizzare i requisiti del flusso: analizzare i requisiti delle risorse di ogni flusso. Comprendere le risorse necessarie per operare in modo efficiente. Per ogni flusso, identificare le esigenze delle risorse, ad esempio l'utilizzo della CPU, i requisiti di memoria e la larghezza di banda di rete.

  • Priorità delle allocazioni: corrisponde alla capacità delle risorse disponibile ai requisiti delle risorse dei flussi. Allocare le risorse in base alle priorità del flusso, garantendo che i flussi con priorità superiore ricevano le risorse necessarie per soddisfare i requisiti. Comprendere dove sono i vincoli più stretti e ottimizzare le allocazioni di capacità in cui sono necessarie. Ad esempio, le code possono elaborare solo alcuni messaggi al minuto, ma alcuni limiti di archiviazione sono difficili da raggiungere.

  • Limitazione della velocità: per garantire che i flussi critici possano utilizzare le risorse necessarie per soddisfare le proprie destinazioni di prestazioni, applicare limiti di frequenza ai flussi e alle attività non critici. I limiti di frequenza limitano il numero di richieste di flussi con priorità inferiore e gli utenti possono effettuare per le risorse vincolate. Ad esempio, è possibile limitare le richieste di nonpriorità a un'API. Per altre informazioni, vedere il modello di limitazione della frequenza e la limitazione della frequenza di un gestore HTTP in .NET.

  • Usare l'elaborazione della coda con priorità: l'elaborazione della coda prioritaria offre priorità elevata a determinate richieste. Le code in genere hanno una struttura FIFO (First Out), ma è possibile aggiornare l'applicazione per assegnare una priorità ai messaggi aggiunti alla coda. Usare questa funzionalità per assegnare priorità ai flussi critici e agli utenti. Per ulteriori informazioni, vedere il modello della coda di priorità.

Rischio: può essere una sfida per bilanciare le esigenze dei flussi critici con le prestazioni complessive di un carico di lavoro. Anche se è consigliabile assegnare priorità ai flussi critici, non è consigliabile ignorare i flussi non critici. L'efficienza complessiva delle prestazioni di un carico di lavoro dipende da tutti i flussi. I flussi non critici trascurati potrebbero creare problemi che influiscono su tutti gli utenti. Troppo rumore dagli elementi nonessentiali ruba attenzione agli elementi critici. Ma troppo poco rumore potrebbe danneggiare l'intero carico di lavoro. La quantità di dati e il numero di avvisi devono riflettere queste priorità bilanciate.

Facilitazione di Azure

Identificazione e monitoraggio dei flussi: Azure offre soluzioni diverse per monitorare le prestazioni dei flussi critici nel carico di lavoro. Monitoraggio di Azure, log di Monitoraggio di Azure e applicazione Azure Insights sono alcuni dei servizi che offrono funzionalità di monitoraggio complete per diversi tipi di applicazioni e carichi di lavoro.

Ottimizzazione delle allocazioni di capacità: alcuni servizi di Azure supportano la segmentazione delle risorse, la segmentazione logica e le tecniche di allocazione della capacità per allocare capacità e risorse ai flussi critici. È possibile isolare i flussi critici tramite tecniche come la creazione di risorse separate, l'aumento della densità, l'uso della virtualizzazione e la containerizzazione e l'allocazione esplicita delle risorse ai flussi critici.

Alcuni servizi di Azure, ad esempio azure Gestione API, forniscono criteri predefiniti per la limitazione della velocità. Azure fornisce indicazioni dettagliate e un'implementazione di esempio del modello di progettazione Limitazione frequenza.

Azure supporta l'elaborazione della coda prioritaria. Funzioni di Azure fornisce funzioni basate su eventi che è possibile attivare in vari modi, tra cui un nuovo messaggio in una coda o in un argomento. Combinare Funzioni di Azure con Archiviazione code di Azure o bus di servizio di Azure per elaborare i messaggi in base alla priorità.

Elenco di controllo dell'efficienza delle prestazioni

Fare riferimento al set completo di raccomandazioni.