Condividi tramite


Strategie di architettura 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 guidano operazioni ad alta priorità. Quando si assegna la priorità alle prestazioni dei flussi critici, assicurarsi che i flussi con maggiore impatto ottengano le risorse necessarie prima dei flussi con priorità più bassa. Se non si esegue questa definizione di priorità, è possibile che si verifichino effetti negativi sproporzionati sulle priorità del carico di lavoro e sull'esperienza utente.

Definizioni

Termine Definition
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 i componenti del carico di lavoro.
Elaborazione della coda con priorità Atto di elaborazione delle attività con priorità alta prima delle attività con priorità bassa.
Limitazione della velocità 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 le funzionalità del carico di lavoro.
Flusso dell'utente Sequenza che un utente segue per eseguire un'attività.

I flussi critici fanno riferimento ai flussi utente chiave per i clienti o i flussi di dati e di sistema 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 significativamente sull'esperienza utente o sulle operazioni aziendali. I flussi critici hanno obiettivi di prestazioni più elevati e contratti di servizio rispetto ai flussi non critici. Dove le risorse sono limitate, i flussi non critici devono produrre 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 tutti i percorsi utente e la comunicazione dei componenti. L'obiettivo è comprendere le metriche delle prestazioni e il potenziale impatto dei flussi sulle prestazioni del carico di lavoro.

Esaminando il carico di lavoro in flussi discreti, è possibile trovare colli di bottiglia delle prestazioni, un 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 dei flussi forniscono informazioni dettagliate sui tempi di risposta, le percentuali di errore e la velocità effettiva. L'obiettivo è osservare e registrare in modo coerente 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 degli utenti e sulle interazioni 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 l'esecuzione dei 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. Una priorità efficace del flusso 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, seguire questa procedura:

  • 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 sostenere diversi processi. In questi casi, le prestazioni di questo flusso influisce 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 di rilievo che possono fornire informazioni dettagliate sull'efficienza e sull'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 classificazioni di criticità di alta, media e bassa. 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
Distinzione tra tempo Non sensibile al tempo
Produzione Preproduzione
Elaborazione in tempo reale Elaborazione in batch
Sensibile alla latenza Non sensibile alla latenza
Utente con 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 consiste nel fornire risorse o capacità dedicate per supportare i flussi critici. Si vogliono allocare risorse e attenzione a quei flussi essenziali per un'esperienza utente ottimale o risultati aziendali significativi. L'obiettivo è garantire che i flussi critici ricevano potenza di calcolo sufficiente, 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 le raccomandazioni 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. In questo modo 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 o limiti delle risorse usando le piattaforme di orchestrazione. Allocando in modo esplicito le risorse ai flussi critici, si impedisce la contesa delle risorse e si assegna la 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 alcune risorse sottoutilizzate. 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 consiste nel classificare in ordine di priorità i flussi critici nell'accesso alla capacità disponibile. L'ottimizzazione dell'allocazione della capacità riguarda la distribuzione strategica della capacità disponibile in diversi flussi 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 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 il funzionamento efficiente del flusso. Per ogni flusso, identificare le richieste di risorse, ad esempio l'utilizzo della CPU, i requisiti di memoria e la larghezza di banda di rete.

  • Classificare in ordine di priorità le allocazioni: associare la capacità delle risorse disponibili ai requisiti delle risorse dei flussi. Allocare le risorse in base alle priorità del flusso, assicurandosi che i flussi con priorità più alta ricevano le risorse necessarie per soddisfare i requisiti. Comprendere dove sono i vincoli più stretti e ottimizzare le allocazioni di capacità dove 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à d'uso: per garantire che i flussi critici possano utilizzare le risorse necessarie per soddisfare i propri obiettivi 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à più bassa e gli utenti possono effettuare per le risorse vincolate. Ad esempio, è possibile limitare le richieste di nonpriorità a un'API. Per altre informazioni, vedere modello di limitazione della frequenza e limitazione della frequenza di un gestore HTTP in .NET.

  • Usare l'elaborazione della coda con priorità: l'elaborazione della coda con priorità dà priorità elevata a determinate richieste. Le code hanno in genere una struttura FIFO (First Out), ma è possibile aggiornare l'applicazione per assegnare una priorità ai messaggi aggiunti alla coda. Usare questa funzionalità per classificare in ordine di priorità i flussi critici e gli utenti. Per altre informazioni, vedere Modello di coda priorità.

Rischio: può essere una sfida bilanciare le esigenze dei flussi critici con le prestazioni complessive di un carico di lavoro. Anche se è consigliabile classificare in ordine di priorità i flussi critici, non è consigliabile trascurare 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 interessano tutti gli utenti. Troppo rumore da oggetti non essenziali ruba l'attenzione da 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 diverse soluzioni che consentono di monitorare le prestazioni dei flussi critici nel carico di lavoro. Monitoraggio di Azure, log di Monitoraggio di Azure e Azure Application 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 Gestione API di Azure, forniscono criteri predefiniti per la limitazione della frequenza. Azure fornisce indicazioni dettagliate e un'implementazione di esempio del modello di progettazione Limitazione della frequenza.

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

Elenco di controllo per l'efficienza delle prestazioni

Fare riferimento al set completo di raccomandazioni.