Framework dell'architettura Google Cloud: affidabilità

Last reviewed 2024-10-11 UTC

Questo pilastro del framework dell'architettura Google Cloud tratta i principi di progettazione necessari per progettare e gestire servizi affidabili su una piattaforma cloud ad alto livello.

Il framework dell'architettura descrive le best practice, fornisce suggerimenti per l'implementazione ed illustra alcuni dei prodotti e servizi disponibili. Il framework mira ad aiutarti a progettare il tuo deployment Google Cloud affinché corrisponda in modo ottimale alle tue esigenze aziendali.

Per principi e consigli sull'affidabilità specifici per i carichi di lavoro di AI e ML, consulta Punto di vista sull'AI e sul ML: affidabilità.

Per eseguire un servizio affidabile, l'architettura deve includere quanto segue:

  • Obiettivi di affidabilità misurabili che correggi tempestivamente ogni volta che si verificano deviazioni.
  • Pattern di progettazione per quanto segue:
    • Scalabilità
    • Alta disponibilità
    • Ripristino di emergenza
    • Gestione delle modifiche automatizzata
  • Componenti che si riparano autonomamente (hanno la capacità di risolvere i problemi senza interventi manuali)
  • Codice che include la strumentazione per l'osservabilità
  • Funzionamento senza mani, ad esempio l'esecuzione dei servizi con il minimo intervento manuale, il carico cognitivo dell'operatore e il rilevamento e la mitigazione rapidi degli errori

L'intera organizzazione di ingegneria è responsabile dell'affidabilità del servizio, inclusi i team di sviluppo, gestione del prodotto, operazioni e SRE (Site Reliability Engineering). I team devono comprendere gli obiettivi di affidabilità, i rischi e i budget di errore della propria applicazione ed essere responsabili di questi requisiti. I conflitti tra affidabilità e sviluppo delle funzionalità del prodotto devono essere assegnati una priorità e sottoposti a riassegnazione di conseguenza.

Principi fondamentali dell'affidabilità

Questa sezione illustra i principi fondamentali di un servizio affidabile e getta le basi per i documenti più dettagliati che seguono. Continuando a leggere su questo argomento, scoprirai che l'approccio di Google all'affidabilità si basa sui seguenti principi di affidabilità.

L'affidabilità è la tua funzionalità principale

A volte i team tecnici danno la priorità allo sviluppo di nuovi prodotti. Mentre gli utenti si aspettano aggiornamenti nuovi ed entusiasmanti per le loro applicazioni preferite, gli aggiornamenti dei prodotti sono un obiettivo a breve termine per i tuoi utenti. I clienti si aspettano sempre l'affidabilità del servizio, anche se non se ne rendono conto. Un insieme ampliato di strumenti o grafica accattivante nella tua applicazione non avrà importanza se gli utenti non riescono ad accedere al tuo servizio o se il servizio presenta prestazioni scadenti. Il cattivo rendimento dell'applicazione rende rapidamente irrilevanti queste funzionalità espanse.

L'affidabilità viene definita dall'utente

In breve, il tuo servizio è affidabile quando i clienti sono soddisfatti. Gli utenti non sono sempre prevedibili e potresti sovrastimare ciò che serve per soddisfarli.

Secondo gli standard attuali, una pagina web dovrebbe caricarsi in circa due secondi. Il tasso di abbandono della pagina è di circa il 53% quando il tempo di caricamento è ritardato di un secondo in più e aumenta notevolmente all'87% quando il tempo di caricamento è ritardato di tre secondi. Tuttavia, puntare a un sito che carica le pagine in un secondo probabilmente non è l'investimento migliore. Per determinare il livello di affidabilità del servizio più adatto ai tuoi clienti, devi misurare quanto segue:

  • Carico di lavoro rivolto agli utenti: misura l'esperienza utente. Ad esempio, misura la percentuale di successo delle richieste degli utenti, non solo le metriche del server come l'utilizzo della CPU.
  • Carichi di lavoro batch e in streaming: misura gli indicatori chiave di prestazione (KPI) per il throughput dei dati, ad esempio le righe analizzate per finestra temporale. Questo approccio è più informativo di una metrica del server come l'utilizzo del disco. I KPI relativi al throughput contribuiscono a garantire il completamento in tempo dell'elaborazione richiesta dall'utente.

L'affidabilità al 100% non è l'obiettivo corretto

Questo principio è un'estensione del precedente. I tuoi sistemi sono sufficientemente affidabili quando gli utenti sono soddisfatti. In genere, gli utenti non richiedono un'affidabilità al 100% per essere soddisfatti. Pertanto, definisci obiettivi del livello di servizio (SLO) che impostano la soglia di affidabilità sulla percentuale necessaria per soddisfare gli utenti, quindi utilizza i budget di errore per gestire la frequenza di variazione appropriata.

Applica i principi operativi e di progettazione di questo framework a un prodotto solo se lo SLO per quel prodotto o quell'applicazione giustifica il costo.

L'affidabilità e l'innovazione rapida sono complementari

Utilizza i budget di errore per raggiungere un equilibrio tra la stabilità del sistema e l'agility degli sviluppatori. Le seguenti indicazioni ti aiutano a determinare quando concentrarti maggiormente sulla stabilità o sullo sviluppo:

  • Quando il budget di errore diminuisce, rallenta e concentrati sulle funzionalità di affidabilità.
  • Quando è disponibile un budget di errore adeguato, puoi innovare rapidamente e migliorare il prodotto o aggiungere funzionalità.

Principi di progettazione e operatività

I documenti rimanenti del pilastro dell'affidabilità del Framework dell'architettura forniscono principi di progettazione e operativi che ti aiutano a massimizzare l'affidabilità del sistema. Le sezioni seguenti forniscono un riepilogo dei principi di progettazione e operativi che troverai in ogni documento di questa serie.

Stabilisci i tuoi obiettivi di affidabilità

Ricorda che la soddisfazione dell'utente definisce l'affidabilità e i tuoi obiettivi di affidabilità sono rappresentati dagli SLO impostati. Quando imposti gli SLO, tieni presente quanto segue:

  • Scegli gli indicatori del livello del servizio (SLI) appropriati.
  • Imposta gli SLO in base all'esperienza utente.
  • Migliora gli SLO in modo iterativo.
  • Utilizza SLO interni rigidi.
  • Usa i budget di errore per gestire la velocità di sviluppo.

Per ulteriori informazioni, consulta Componenti degli obiettivi del livello di servizio.

Integra funzioni di osservabilità nell'infrastruttura e nelle applicazioni

Fornisci strumenti al tuo codice per massimizzare l'osservabilità. Per ulteriori informazioni, consulta Integrare funzioni di osservabilità nell'infrastruttura e nelle applicazioni.

Progettazione per la scalabilità e l'alta disponibilità

Per quanto riguarda la scalabilità e l'alta disponibilità (HA), tieni presenti i seguenti principi:

  • Creare ridondanza per l'HA
  • Replica i dati tra le regioni per il ripristino di emergenza (RE)
  • Progettare un'architettura multiregionale per la resilienza alle interruzioni regionali
  • Esegui la riduzione controllata dei livelli di servizio in caso di sovraccarico
  • Fail Safe in modo da preservare la funzionalità del sistema
  • Progetta le chiamate API e i comandi operativi in modo che siano ripetibili
  • Considera le dipendenze:
    • Identifica e gestisci le dipendenze di sistema
    • Riduci al minimo le dipendenze critiche
  • Assicurati che si possa eseguire il rollback di ogni modifica

Inoltre, le seguenti attività contribuiscono all'affidabilità del servizio:

  • Elimina i colli di bottiglia della scalabilità
  • Previeni e attenua i picchi di traffico
  • Elimina e convalida gli input

Per ulteriori informazioni, consulta Progettare per la scalabilità e l'alta disponibilità.

Crea strumenti e procedure operative affidabili

Implementa l'affidabilità negli strumenti e nei processi operativi seguendo questa procedura:

  • Scegli nomi logici e autoesplicativi per applicazioni e servizi
  • Utilizza i test canary per implementare implementazioni progressive delle procedure
  • Pianifica le promozioni e i lanci in modo da distribuire il traffico e ridurre il sovraccarico del sistema
  • Sviluppare processi di creazione, test e deployment programmatici
  • Difendere da incidenti causati da esseri umani, intenzionali o meno
  • Sviluppare, testare e documentare le attività di risposta agli errori
  • Sviluppare e testare regolarmente i passaggi di ripristino di emergenza
  • Chaos engineering: prendi l'abitudine di iniettare errori nel sistema per determinare la tolleranza agli errori e la resilienza del tuo servizio

Per scoprire di più, consulta la sezione Creare strumenti e procedure operative affidabili.

Creazione di avvisi efficienti

Quando crei gli avvisi, ti consigliamo di procedere come segue:

  • Ottimizza gli avvisi per ritardi appropriati
  • Definisci gli avvisi in base ai sintomi, non alle cause
  • Definisci gli avvisi sui valori anomali, non sui valori medi

Per ulteriori informazioni, consulta Creare avvisi efficienti nel pilastro dell'affidabilità del framework di architettura.

Crea un processo collaborativo di gestione degli incidenti

Incident Response and Management (IRM) è essenziale per il recupero del servizio e per minimizzare i danni. Un'IRM efficace include:

  • Proprietà: assegna proprietari dei servizi chiari.
  • Avvisi ottimizzati: migliora la risposta agli incidenti (IR) e riduci il tempo di rilevamento (TTD) con avvisi progettati con attenzione.
  • Piani e formazione per la gestione degli incidenti: riduci il tempo di attenuazione (TTM) con piani, documentazione e formazione completi.
  • Dashboard: progetta i layout e i contenuti delle dashboard in modo da inviare avvisi efficienti in caso di problemi per ridurre al minimo il tempo di attenuazione.
  • Documentazione: crea e mantieni contenuti chiari e concisi per tutti gli aspetti dell'assistenza per i servizi, incluse le procedure di diagnostica e mitigazione per gli scenari di interruzione.
  • Cultura senza colpe:
    • Favorisci un ambiente senza responsabilità nella tua organizzazione.
    • Stabilisci una procedura di post-mortem incentrata sul cosa, non sul chi.
    • Impara dalle interruzioni esaminando correttamente il problema e identificando le aree da migliorare e da cui evitare le recidive.

Per ulteriori informazioni, consulta Creare un processo collaborativo di gestione degli incidenti nel pilastro dell'affidabilità del framework di architettura.

Passaggi successivi