Share via


Consigli per l'ottimizzazione delle attività operative

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

PE:10 Ottimizzare le attività operative. Monitorare e ridurre al minimo gli effetti del ciclo di vita dello sviluppo software e altre operazioni di routine sulle prestazioni del carico di lavoro. Queste operazioni includono analisi di virus, rotazioni dei segreti, backup, reindicizzazione di database e distribuzioni.

Questa guida descrive le raccomandazioni per l'ottimizzazione delle attività operative. L'ottimizzazione delle attività operative è il processo di riduzione al minimo degli effetti delle attività eseguite come parte delle operazioni del carico di lavoro di routing. Le attività operative usano le stesse risorse di calcolo del carico di lavoro stesso. Se non si considerano gli effetti delle attività operative, il carico di lavoro non raggiunge gli obiettivi di prestazioni. Può anche influire negativamente sulle prestazioni del carico di lavoro per i clienti.

Definizioni

Termine Definizione
Distribuzione di tipo blu-verde Una strategia di distribuzione che usa due ambienti identici e controlla la direzione del traffico verso le nuove distribuzioni (distribuzioni verdi).
Ricompilazione dell'indice del database Attività di manutenzione che elimina e ricrea un indice.
Riorganizzazione degli indici di database Attività di manutenzione che ottimizza l'indice del database corrente.
Schema del database Struttura generale di un database e delle relative relazioni con altri dati.
Slot di distribuzione Funzionalità di Servizio app di Azure che consente di distribuire app attive con i propri nomi host.
Aggiornamenti sul posto Processo di aggiornamento di un componente o di un'applicazione senza sostituirlo o eseguirne la migrazione a un nuovo ambiente.
Infrastruttura come codice (IaC) Modello descrittivo per la definizione e la distribuzione dell'infrastruttura, tra cui reti, macchine virtuali, servizi di bilanciamento del carico e topologie di connessione.

Strategie di progettazione chiave

È necessario adottare misure per ridurre gli effetti del ciclo di vita dello sviluppo software e altre operazioni di routine sulle prestazioni del carico di lavoro. L'obiettivo è garantire che le operazioni di routine, ad esempio le analisi dei virus, le rotazioni dei segreti, i backup, l'ottimizzazione degli indici (riorganizzazione o ricompilazione) e le distribuzioni, non riducono significativamente le prestazioni del carico di lavoro.

Tenere conto delle attività operative

È importante considerare le attività operative quando si impostano gli obiettivi di prestazioni. Incorporando attività routine, regolari e ad hoc in obiettivi di prestazioni, è possibile assicurarsi che il carico di lavoro funzioni in modo efficiente. Per tenere conto delle attività operative negli obiettivi di prestazioni, ecco alcuni punti chiave da considerare:

  • Identificare le attività operative. Identificare e includere le attività operative pertinenti negli obiettivi di prestazioni. Esempi di attività di routine possono includere l'analisi dei virus, la riorganizzazione degli indici del database, la ricompilazione dell'indice del database, i backup del disco o del database, le rotazioni di certificati, l'applicazione di patch a un sistema operativo, la rotazione delle password, la rotazione delle chiavi API, i test di penetrazione e le revisioni di controllo nell'ambiente di produzione.

  • Valutare gli obiettivi di prestazioni. Valutare gli obiettivi di prestazioni correnti e modificarli in base alle attività operative specifiche del carico di lavoro. In questo modo si garantisce che gli obiettivi di prestazioni siano allineati ai requisiti operativi del carico di lavoro.

Ottimizzare le distribuzioni

L'ottimizzazione delle distribuzioni si riferisce alla ridefinizione del processo di rilascio di risorse e codice per garantire prestazioni semplici e interruzioni minime. Prevede la pianificazione, la distribuzione efficace delle risorse e il test approfondito sia dell'infrastruttura come codice (IaC) che del codice dell'applicazione prima che vengano introdotti in un ambiente attivo. Le inadecimenze della distribuzione possono comportare una riduzione della velocità e dell'efficienza di un carico di lavoro, dei potenziali vincoli di risorse e di un'esperienza utente compromessa nell'impostazione operativa. Per ottimizzare le distribuzioni, prendere in considerazione queste strategie:

Valutare i tempi di inattività accettabili. Se il tempo di inattività è accettabile, è possibile implementare strategie di distribuzione che assegnano priorità alla velocità e all'efficienza. Tuttavia, è importante valutare attentamente l'effetto del tempo di inattività sui requisiti aziendali prima di prendere tale decisione. D'altra parte, se il tempo di inattività non è accettabile, è necessario implementare strategie di distribuzione che garantiscono la disponibilità continua del carico di lavoro. Prendere in considerazione l'uso di tecniche come le distribuzioni blu-verde o le distribuzioni canary, in cui si implementano gradualmente nuove versioni del carico di lavoro durante il monitoraggio dei problemi. Queste strategie consentono di ridurre al minimo l'effetto del tempo di inattività e garantire un'esperienza utente senza problemi.

Distribuisci in corrispondenza del numero di istanze corrente. È anche consigliabile evitare distribuzioni che causano operazioni di scalabilità immediata. Non è consigliabile distribuire le risorse in un sistema attivo con un numero di istanze così basso che forza il sistema a eseguire immediatamente un'operazione di scalabilità. Ad esempio, il modello IaC (Infrastructure-as-Code) potrebbe non corrispondere al numero di istanze necessarie al momento della distribuzione. Potrebbe avere un numero di istanze pari a due, anche se l'ambiente distribuito corrente esegue otto istanze. La distribuzione rimuoverà sei istanze e influirà negativamente sulle prestazioni.

Usare una strategia di distribuzione blu-verde. Le distribuzioni possono causare interruzioni del servizio e tempi di inattività. Per attenuare questi problemi, selezionare una strategia di distribuzione che riduce al minimo l'impatto sulle prestazioni, ad esempio una distribuzione blu-verde. Questi approcci consentono transizioni semplici tra ambienti e riducono il rischio di interruzioni del servizio. Quando si usa l'approccio di distribuzione blu-verde, sono disponibili due ambienti distinti: gli ambienti blu e verde. Se vengono rilevati problemi o riduzione delle prestazioni nell'ambiente verde, è possibile eseguire facilmente il rollback all'ambiente blu stabile. Questa strategia consente di garantire tempi di inattività minimi e di mantenere un livello elevato di prestazioni per il carico di lavoro. Per eseguire la distribuzione usando l'approccio blu-verde, seguire questa procedura generale:

  • Distribuire il nuovo ambiente. Configurare il nuovo ambiente (verde) insieme all'ambiente esistente (blu) con la versione aggiornata dell'applicazione.

  • Convalidare il nuovo ambiente. Le distribuzioni possono introdurre latenza e aumentare i tempi di risposta. Prendere in considerazione la preavvisazione delle istanze prima del cutover. La prewarming comporta la preparazione del nuovo ambiente simulando il traffico e il carico di lavoro simili alla produzione per garantire che l'ambiente sia pronto per gestire il carico previsto. Consente di ridurre al minimo gli effetti sulla latenza e sui tempi di risposta. Testare e convalidare accuratamente il nuovo ambiente per assicurarsi che funzioni correttamente e soddisfi le aspettative di prestazioni. I test consentono di riscaldare le cache, stabilire connessioni alle banche dati e assicurarsi che l'ambiente sia pronto per gestire il carico previsto.

  • Spostare gradualmente il traffico. Dopo aver preavvisato e convalidato il nuovo ambiente, spostare gradualmente il traffico di produzione dall'ambiente precedente (blu) al nuovo ambiente (verde). Inizialmente, indirizzare una piccola percentuale di traffico verso l'ambiente verde e aumentarla gradualmente dopo aver verificato la stabilità e l'integrità prevista dell'applicazione. È possibile usare un servizio di bilanciamento del carico globale o un meccanismo di gestione del traffico. Lo spostamento controllato del traffico consente di identificare tempestivamente eventuali problemi di prestazioni ed eseguire azioni correttive prima di eseguire completamente la transizione del carico di lavoro al nuovo ambiente.

  • Monitorare e ottimizzare. Le distribuzioni potrebbero usare risorse di elaborazione condivise. Monitorare continuamente le prestazioni e l'integrità del nuovo ambiente dopo lo spostamento del traffico. Apportare eventuali ottimizzazioni o modifiche necessarie per garantire le prestazioni e l'esperienza utente desiderate.

  • Rimuovere l'ambiente precedente. Dopo aver eseguito correttamente la transizione di tutto il traffico all'ambiente verde, rimuovere l'ambiente blu dalle connessioni esistenti. Questo passaggio consente di ottimizzare il costo di gestione dell'ambiente precedente e garantisce che i nuovi ambienti siano privi di deviazione della configurazione.

  • Ripetere il processo. Per le distribuzioni future, invertire i ruoli degli ambienti blu e verde. Distribuire le modifiche nel nuovo ambiente blu, convalidarle, orchestrare la transizione del traffico e rimuovere le autorizzazioni dall'ambiente verde precedente.

Usare più compilazioni. Diversi tipi di compilazioni consentono di ottimizzare i tempi di compilazione e garantire la qualità delle distribuzioni. Ad esempio, è possibile avere compilazioni di integrazione continua (CI) che vengono attivate con ogni commit del codice. È possibile che siano disponibili compilazioni notturne che eseguono regolarmente test automatizzati e build di rilascio usate per la distribuzione nell'ambiente di produzione. Ogni tipo di compilazione deve avere uno scopo specifico, ad esempio l'integrazione continua, i test automatizzati o la distribuzione di produzione. I test e la convalida del carico di lavoro prima della distribuzione consentono di identificare e risolvere i problemi o i bug nelle prime fasi del processo di sviluppo.

Prendere in considerazione i flag di funzionalità. I flag di funzionalità vengono usati nello sviluppo software per controllare la visibilità e il comportamento di determinate funzionalità in un'applicazione. Usando i flag di funzionalità, gli sviluppatori possono abilitare o disabilitare funzionalità specifiche senza dover ridistribuire l'applicazione. I flag di funzionalità funzionano introducendo la logica condizionale nel codice che determina se una funzionalità deve essere abilitata o disabilitata. Questa logica può essere basata su diversi fattori, ad esempio ruoli utente, preferenze utente o condizioni specifiche definite dal team di sviluppo. Usando i flag di funzionalità, gli sviluppatori possono implementare gradualmente nuove funzionalità in un subset di utenti o abilitare funzionalità per gruppi specifici per il test (test canary).

Ottimizzare gli aggiornamenti

Un aggiornamento sul posto è un aggiornamento a una risorsa o a un'applicazione esistente. Gli aggiornamenti sul posto possono rallentare temporaneamente o interrompere un carico di lavoro. È importante assicurarsi che gli aggiornamenti siano compatibili con il carico di lavoro. Prima di applicare un aggiornamento, è consigliabile testarlo in un ambiente separato per identificare eventuali problemi potenziali. Fornire un piano di rollback in caso di problemi durante il processo di aggiornamento. È fondamentale eseguire un backup completo di dati e configurazioni critici prima di applicare l'aggiornamento. Monitorare attentamente il sistema aggiornato dopo l'aggiornamento per assicurarsi che tutto funzioni come previsto. Il backup consente di ripristinare uno stato valido se necessario. È consigliabile assegnare priorità alla pianificazione dell'aggiornamento durante le ore di minore attività per ridurre al minimo l'effetto sugli utenti e sulle prestazioni del carico di lavoro. Notificare agli utenti in anticipo l'aggiornamento pianificato, inclusi i tempi di inattività previsti e le azioni necessarie da intraprendere.

Compromesso: l'attesa di eseguire attività operative durante le ore di minore attività può influire sull'efficienza operativa. Potrebbe essere meno conveniente avere il personale con la giusta competenza impostata durante le ore di minore attività.

Ottimizzare gli strumenti

Gli strumenti essenziali per il monitoraggio dell'integrità dei file, l'analisi dei virus, il rilevamento delle intrusioni e altre attività operative possono influire sulle prestazioni del carico di lavoro. Usano risorse di calcolo e possono aggiungere latenza e sovraccarico delle prestazioni. È necessario testare e comprendere gli effetti che gli strumenti hanno sulle prestazioni del carico di lavoro. In base ai risultati del test, è consigliabile ottimizzare le configurazioni degli strumenti, regolare la frequenza di analisi e riallocare le risorse di calcolo. Per l'analisi dei virus, è possibile creare un elenco di esclusione pertinente per ridurre al minimo la durata delle analisi.

Ottimizzare le operazioni di database

L'ottimizzazione delle operazioni di database si riferisce al processo di affinamento e ottimizzazione delle attività del database per garantire la massima efficienza e l'utilizzo minimo delle risorse. Queste operazioni includono attività come backup, modifiche dello schema, ottimizzazione delle prestazioni e monitoraggio. Le operazioni di database efficienti portano a risposte di query più veloci, a un sovraccarico del sistema ridotto e a un'esperienza utente complessivamente più fluida.

Le modifiche dello schema comportano la modifica della struttura di un database, ad esempio l'aggiunta o la modifica di tabelle, colonne o indici. Queste modifiche potrebbero richiedere un'elaborazione aggiuntiva e un utilizzo delle risorse durante il processo di distribuzione, potenzialmente che influiscono sulle prestazioni complessive del carico di lavoro. Le modifiche dello schema possono compromettere le prestazioni per query, indici o transazioni attive o causare la mancata disponibilità dei dati.

Per ridurre al minimo questi effetti, è necessario pianificare e testare le modifiche dello schema in un ambiente non di produzione. È possibile usare varie tecniche di distribuzione per implementare gli aggiornamenti dello schema. È anche consigliabile usare gli strumenti disponibili per la modifica dello schema per ottimizzare il processo. L'archiviazione dei dati e il partizionamento consentono di ridurre gli effetti delle modifiche dello schema.

Ottimizzare i backup

I backup usano risorse del carico di lavoro come potenza di elaborazione, larghezza di banda di rete e I/O del disco. È necessario testare e selezionare una strategia di backup che riduce al minimo questi effetti. È consigliabile eseguire backup durante le ore di minore attività quando è possibile. La strategia deve includere backup incrementali anziché backup completi ogni volta. Gli snapshot possono richiedere meno risorse rispetto ai backup. È consigliabile prendere in considerazione le funzionalità predefinite di backup e ripristino della piattaforma anziché creare una soluzione personalizzata. È necessario testare queste opzioni e usare una combinazione che offre le migliori prestazioni per il carico di lavoro.

Ottimizzare il monitoraggio e il debug

La registrazione, i dati di telemetria, la strumentazione e l'acquisizione e la raccolta di traccia distribuiti eccessivi o non correttamente implementati possono influire sulle prestazioni. Analogamente, anche le funzionalità di praticità come il debug remoto possono influire sulle prestazioni. È necessario misurare e conoscere gli effetti delle prestazioni sull'ambiente. Non si vuole che questi processi degradino le prestazioni. È consigliabile configurare o disabilitare tutti i processi i cui effetti sulle prestazioni superano i vantaggi.

Facilitazione di Azure

Contabilità delle attività operative: Azure DevOps è un set di strumenti e servizi di sviluppo che consentono ai team di pianificare, sviluppare, testare e distribuire software in modo efficiente. Include funzionalità come il controllo della versione, l'integrazione continua e il recapito, la gestione dei progetti e altro ancora.

Azure offre l'integrazione da servizio a servizio che riduce al minimo gli effetti di molte attività operative. Ad esempio, i servizi che si integrano con Azure Key Vault spesso supportano la rotazione uniforme dei certificati o la rotazione dei segreti che riduce al minimo gli effetti sulle prestazioni.

Ottimizzazione delle distribuzioni: servizio app fornisce slot di distribuzione. È possibile usare gli slot di distribuzione per distribuire il codice in un ambiente non di produzione. È possibile scambiare il contenuto dell'app e gli elementi di configurazione tra due slot di distribuzione. Ad esempio, è possibile cambiare il contenuto dell'app da uno slot non di produzione allo slot di produzione.

Frontdoor di Azure e Gestione traffico di Azure consentono di implementare una strategia di distribuzione blu-verde. Alcuni servizi di calcolo di Azure supportano anche strategie di distribuzione avanzate come le distribuzioni blu-verde. È possibile combinare questi servizi con la strategia di riscaldamento del traffico o dello spostamento delle istanze per attenuare gli effetti delle prestazioni della distribuzione.

Ottimizzazione delle operazioni del database: Azure SQL database esegue automaticamente backup completi, backup differenziali e backup del log delle transazioni. Azure Cosmos DB esegue automaticamente i backup dei dati a intervalli regolari. I backup automatici vengono eseguiti senza influire sulle prestazioni o sulla disponibilità delle operazioni del database. Azure Cosmos DB archivia i backup in un servizio di archiviazione separato.

Ottimizzazione dei backup: alcuni servizi dati di Azure supportano un impatto ridotto sulle prestazioni per il ripristino temporizzato e l'indicizzazione. Backup di Azure è una soluzione di backup affidabile e scalabile basata sul cloud che consente di proteggere i dati e le applicazioni. Offre funzionalità come backup incrementali, compressione e crittografia per ridurre al minimo gli effetti sulle prestazioni durante le operazioni di backup. Azure Site Recovery consente di proteggere le applicazioni replicandole in una posizione secondaria. Offre funzionalità di replica continua e failover automatizzato per ridurre al minimo i tempi di inattività e le prestazioni durante le operazioni di backup e ripristino di emergenza.

Elenco di controllo dell'efficienza delle prestazioni

Fare riferimento al set completo di raccomandazioni.