Affidabilità in Azure

Negli ambienti cloud gli errori sono inevitabili. Possono verificarsi errori hardware, difetti software, errori di configurazione, picchi di traffico, interruzioni del data center e persino interruzioni a livello di area. L'affidabilità è la capacità di un carico di lavoro di mantenere le aspettative aziendali, anche in caso di errori o interruzioni. Con l'architettura e le operazioni corrette, gli errori non devono comportare tempi di inattività.

Il tempo di inattività non pianificato può avere un impatto enorme. Comporta costi finanziari e danni al cliente e alla fiducia degli utenti. Oltre a questi effetti immediati, la scarsa affidabilità influisce sugli obblighi di conformità e sul posizionamento competitivo. I team dedicano più tempo alla lotta contro il fuoco e meno tempo a fornire valore. Potrebbe anche attivare sanzioni contrattuali a livello di servizio.

Azure offre un'infrastruttura resiliente e servizi gestiti, ma l'affidabilità del carico di lavoro dipende dalla progettazione e dalle decisioni operative prese: come progettare l'architettura, configurare i servizi, gestire le dipendenze, automatizzare le risposte ai problemi e testare software e processi. La progettazione per l'affidabilità consente di ridurre al minimo gli errori e garantisce che, quando si verificano, il carico di lavoro si degrada in modi prevedibili e controllati in linea con le priorità aziendali.

Un carico di lavoro affidabile ha due proprietà essenziali:

  • È resiliente, ovvero può assorbire gli errori e le modifiche nell'ambiente continuando a operare a un livello di servizio accettabile.
  • È anche recuperabile, ovvero quando si verifica un'interruzione, il carico di lavoro può ripristinare le normali operazioni entro limiti di tempo e perdita di dati definiti.

Sono necessarie entrambe le proprietà per soddisfare le aspettative di disponibilità reali e mantenere la continuità aziendale.

L'affidabilità in Azure funziona su tre livelli interconnessi:

  • L'applicazione: scelte architetturali, procedure e processi, tra cui gestione delle dipendenze, runbook, automazione e test
  • Funzionalità di affidabilità, tra cui:
    • Servizi e configurazione del carico di lavoro: come configurare i servizi Azure che eseguono il carico di lavoro e le funzionalità di affidabilità configurate all'interno di tali servizi
    • Azure servizi della piattaforma: Azure servizi che supportano in modo specifico l'affidabilità del carico di lavoro, ad esempio bilanciamento del carico, DNS, routing del traffico e monitoraggio
  • Basi per l'affidabilità: resilienza predefinita di Azure, ad esempio zone di disponibilità, aree e procedure di distribuzione sicure

Questi livelli interagiscono per determinare l'affidabilità complessiva del carico di lavoro. Comprenderli consente di distinguere tra le Azure fornite per impostazione predefinita e le funzionalità necessarie per progettare, configurare e operare.

Questo modello consente di sfruttare ciò che Azure fornisce mentre si assume la responsabilità di ciò che è possibile progettare. Questo articolo è incentrato su ciò che Azure fornisce in questi livelli. Per indicazioni complete sul livello di progettazione e operazioni del carico di lavoro (progettazione di soluzioni resilienti e modelli architetturali), vedere il framework di Azure Well-Architected e in particolare il pilastro dell'affidabilità.

Responsabilità condivisa per l'affidabilità

L'affidabilità in Azure segue un modello di responsabilità condivisa. Microsoft fornisce la piattaforma resiliente tramite Azure. Si progetta il carico di lavoro resiliente.

Diagramma che mostra i livelli di affidabilità in Azure.

  • Microsoft possiede le basi della piattaforma e i servizi di affidabilità della piattaforma. Questa proprietà include l'infrastruttura resiliente (ridondanza fisica, isolamento degli errori e correzione), zone di disponibilità, distribuzione a livello di area, procedure di distribuzione sicure e servizi a livello di piattaforma, ad esempio bilanciamento del carico, routing del traffico e monitoraggio. Microsoft è responsabile dell'affidabilità della piattaforma Azure e dell'affidabilità dei servizi, come definito dal contratto di servizio pubblicato e dalla documentazione di ogni servizio, ad esempio la guida all'affidabilità.

  • Si è proprietari della progettazione e delle operazioni del carico di lavoro. L'utente è responsabile della conversione delle funzionalità di Azure in un comportamento affidabile del carico di lavoro tramite decisioni di architettura, scelte di configurazione, procedure operative e test.

    Azure non è in grado di conoscere gli obiettivi di disponibilità, i compromessi accettabili, il contesto aziendale o i requisiti specifici dell'applicazione. Solo è possibile definire tali requisiti e progettare di conseguenza. Azure offre funzionalità, mentre vengono selezionate e configurate. Ad esempio, si configura il comportamento di failover per i servizi come i database e si definiscono probe di integrità del servizio di bilanciamento del carico che rappresentano accuratamente l'integrità dell'applicazione in modo che le decisioni relative al routing del traffico siano corrette, anche durante gli errori.

    Importante

    La piattaforma offre blocchi predefiniti, non garanzie end-to-end. Le scelte operative e di progettazione determinano se tali funzionalità si traducono in un carico di lavoro affidabile. Per una suddivisione completa del modello di responsabilità condivisa, vedere Responsabilità condivisa nel cloud.

I contratti di servizio definiscono gli impegni e le aspettative di affidabilità nei servizi Azure. La comprensione dei contratti di servizio è essenziale quando si valutano i servizi e si progettano per destinazioni di disponibilità specifiche. Azure servizi pubblicano impegni del contratto di servizio che possono variare in base alla configurazione e al livello di ridondanza. Anche altri servizi usati da altri provider potrebbero pubblicare contratti di servizio. Per indicazioni complete sul funzionamento dei contratti di servizio e sulla correlazione con le aspettative di disponibilità del carico di lavoro, vedere Contratti di servizio.

Basi resilienti in Azure

Azure è progettato con più livelli di resilienza integrati nella piattaforma stessa. Queste basi offrono le funzionalità di base su cui vengono compilati carichi di lavoro affidabili:

  • Resilienza dell'infrastruttura fisica: Azure data center sono progettati con un'infrastruttura ridondante, ad esempio alimentazione, raffreddamento e connettività di rete. Il controller di infrastruttura Azure isola e gestisce automaticamente gli errori hardware. Rileva errori e orchestra la migrazione del carico di lavoro a hardware integro senza l'intervento del cliente.

  • Regioni: Azure opera in oltre 70 aree in tutto il mondo. Questa distribuzione geografica consente ai carichi di lavoro di resistere a interruzioni e interruzioni a livello di area tramite funzionalità di failover pianificate, rispettando i requisiti di residenza dei dati. Per altre informazioni, vedere panoramica delle aree Azure.

  • Zone di disponibilità: Molte aree Azure includono data center fisicamente separati all'interno della stessa area. Queste zone di disponibilità sono connesse da reti a bassa latenza e ad alta velocità. Ogni zona ha potenza, raffreddamento e rete indipendenti per proteggersi da errori a livello di data center, mantenendo al tempo le funzionalità di replica sincrone per molti servizi di Azure. Per altre informazioni, vedere Che cosa sono le zone di disponibilità?

  • Distribuzioni sicure: Azure implementa processi di distribuzione controllati e sfalsati per gli aggiornamenti della piattaforma e le modifiche del servizio per ridurre al minimo il rischio di un'interruzione diffusa del servizio. La piattaforma implementa gradualmente gli aggiornamenti, ad esempio tra domini di errore, zone di disponibilità e aree, con funzionalità di rollback automatizzato quando rileva problemi. Questo approccio garantisce che le modifiche della piattaforma non introducono rischi di affidabilità per i carichi di lavoro dei clienti.

Azure fornisce automaticamente queste basi a livello di piattaforma. Formano il livello di base su cui si creano carichi di lavoro affidabili. Tuttavia, è comunque necessario configurare correttamente i servizi e combinare queste funzionalità in modi che soddisfano i requisiti aziendali specifici.

Azure servizi che supportano l'affidabilità

Azure offre funzionalità della piattaforma che convertono i concetti di affidabilità in blocchi predefiniti interattivi per l'architettura. Queste funzionalità interagiscono per abilitare architetture resilienti e molti servizi Azure includono implementazioni predefinite di questi modelli:

Capability Description
Ottimizzazione dell'affidabilità basata su intelligenza artificiale Ottimizzazione dell'affidabilità basata sull'intelligenza artificiale Usa le funzionalità basate sull'intelligenza artificiale per valutare e migliorare l'affidabilità. Queste funzionalità analizzano i modelli di carico di lavoro, identificano i potenziali rischi e forniscono raccomandazioni che aiutano i team a passare dalla risoluzione dei problemi reattiva alla gestione proattiva dell'affidabilità. Queste funzionalità offrono segnali di affidabilità e li traducono in raccomandazioni utili che consentono ai team di classificare in ordine di priorità e migliorare l'affidabilità nel tempo.

Azure offre diversi servizi di affidabilità basati sull'intelligenza artificiale, tra cui:
- funzionalità di resilienza Azure
- Funzionalità di resilienza negli agenti (anteprima) in Azure Copilot
- agente SRE Azure

Questi servizi analizzano i modelli di carico di lavoro e suggeriscono miglioramenti per ottimizzare il comportamento di affidabilità a livello di scheda.
Bilanciamento del carico e gestione del traffico Bilanciamento del carico e gestione del traffico Abilita l'affidabilità instradando il traffico tra istanze ridondanti e gestendo automaticamente il failover. Questa funzionalità è essenziale per mantenere la disponibilità del servizio quando i singoli componenti hanno esito negativo.

Azure offre il bilanciamento del carico a più livelli, tra cui:
- Azure Load Balancer per la distribuzione del traffico TCP/UDP di livello 4
- gateway applicazione di Azure per il routing HTTP di livello 7 con controlli di integrità con riconoscimento delle applicazioni
- Frontdoor di Azure per il bilanciamento del carico HTTP globale con failover rapido
- Gestione traffico di Azure per la distribuzione di endpoint globali basata su DNS

Per informazioni su quale servizio di bilanciamento del carico usare per lo scenario, vedere Opzioni di bilanciamento del carico.
Backup e protezione dei dati e protezione dei dati Protegge dalla perdita e dal danneggiamento dei dati e consente il ripristino dopo che si verifica un problema.

Azure offre diverse funzionalità di backup e ripristino, tra cui:
- Backup di Azure per il backup centralizzato con conservazione configurabile per macchine virtuali, contenitori BLOB, file e alcuni database
- Funzionalità di backup e ripristino native in molti servizi di Azure, inclusa la maggior parte dei servizi di database
- Bicep e altre infrastrutture come strumenti di codice per il backup della configurazione, la protezione dalla deriva e la ricreazione rapida dell'ambiente

Esaminare ogni guida all'affidabilità del servizio Azure per comprendere gli approcci di backup supportati dal servizio.
Replica geografica e failover geografico Replica geografica e failover Consente il ripristino da errori a livello di area tramite la replica dei dati tra aree e le funzionalità di failover automatizzate.

Azure Site Recovery orchestra il ripristino di emergenza per i carichi di lavoro delle macchine virtuali con la replica automatizzata e la sequenziazione di failover. Molti servizi di Azure offrono anche funzionalità di replica geografica predefinite, tra cui:
- Azure Cosmos DB con funzionalità di replica e failover dei dati tra aree native
- Gestione API di Azure con funzionalità di failover tra aree native

Le guide all'affidabilità del servizio illustrano in dettaglio le opzioni di replica geografica disponibili per ogni servizio.
Monitoraggio e osservabilità Offre visibilità completa sul comportamento di affidabilità e consente una risposta proattiva ai problemi.

Azure offre più servizi di osservabilità, tra cui:
- Monitoraggio di Azure e Application Insights per il monitoraggio, gli avvisi e il rilevamento delle dipendenze in tempo reale
- Modelli di integrità in Monitoraggio di Azure per monitorare l'integrità di un intero carico di lavoro
- integrità dei servizi di Azure per avvisi personalizzati e linee guida per i problemi del servizio Azure che possono influire sui carichi di lavoro

Insieme, queste funzionalità consentono di capire se si soddisfano i requisiti di affidabilità e rispondere rapidamente quando si verificano problemi.
Test e convalida dell'affidabilità test e convalida dell'affidabilità Aiuta a verificare che i carichi di lavoro si comportino come previsto in condizioni di errore e che la soluzione soddisfi i requisiti di affidabilità prima che i problemi influiscano sugli utenti.

Azure fornisce servizi di test di affidabilità, tra cui:
- Azure Chaos Studio per esperimenti di inserimento degli errori controllati per convalidare il comportamento di riparazione automatica e la resilienza agli errori reali
- Test app di Azure per i test funzionali e delle prestazioni per comprendere il comportamento delle applicazioni, tra cui sotto stress

Abilitare l'affidabilità nei servizi Azure

La piattaforma offre funzionalità di affidabilità a livello di servizio attraverso decine di servizi Azure, ognuno con punti di forza e casi d'uso specifici. La guida all'affidabilità di ogni servizio fornisce informazioni dettagliate su come il servizio può rimanere disponibile durante diversi scenari, ad esempio:

  • Errori temporanei, che sono brevi errori intermittenti. Le guide al servizio forniscono raccomandazioni per le procedure consigliate per ridurre al minimo l'impatto, ad esempio la ripetizione dei tentativi e l'uso degli SDK forniti Microsoft.
  • Errori della zona di disponibilità, in modo che il servizio possa reindirizzare automaticamente le richieste per mantenere la disponibilità elevata.
  • Errori a livello di area, in modo che il servizio possa eseguire il failover in un'area secondaria e continuare a funzionare durante un'interruzione dell'area.

Per visualizzare le guide all'affidabilità per molti servizi Azure, vedere Guide all'affidabilità per servizio.

Progettazione di carichi di lavoro affidabili

L'affidabilità emerge da un ciclo continuo di definizione di obiettivi, progettazione per errori e ripristino rapido, presupposti di test e miglioramento tramite l'apprendimento operativo. Usare le guide Azure Well-Architected Framework e affidabilità dei servizi per comprendere cosa fornisce ogni servizio per impostazione predefinita e cosa richiede una configurazione esplicita. Per un approccio strutturato all'implementazione dell'affidabilità, vedere il modello di maturità di affidabilità di Azure Well-Architected Framework.

Durante la progettazione, connettere concetti fondamentali ai concetti tecnici. I concetti fondamentali, ad esempio la continuità aziendale e la responsabilità condivisa , definiscono i risultati necessari per raggiungere. Concetti tecnici quali ridondanza, replica, backup, failover e failback definiscono come implementare tali risultati nell'architettura e nelle operazioni. I contratti di servizio consentono di comprendere le garanzie ricevute dai provider di servizi.

Sovranità e residenza dei dati

Quando si progetta l'affidabilità, includere i requisiti di sovranità e residenza dei dati in anticipo perché influiscono sulla selezione dell'area, sulla strategia di replica e sui percorsi di failover. Un'architettura resiliente può comunque non soddisfare i requisiti di conformità se il failover o lo spostamento dei dati supera i limiti limitati. Per altre informazioni, vedere Affidabilità e sovranità.

L'affidabilità in Azure si ottiene combinando basi della piattaforma resilienti con la progettazione e le operazioni del carico di lavoro ponderate. Comprendendo ciò che Azure fornisce e dove è necessario prendere decisioni di progettazione e configurazione, è possibile creare sistemi che continuino a soddisfare le aspettative aziendali, anche in presenza di errori.