Il primo passo per creare un'infrastruttura affidabile per i carichi di lavoro cloud è identificare i requisiti di affidabilità dei carichi di lavoro. Questa parte della Guida all'affidabilità dell'infrastruttura Google Cloud fornisce linee guida per aiutarti a definire i requisiti di affidabilità dei carichi di lavoro di cui esegui il deployment in Google Cloud.
Determina i requisiti specifici dei carichi di lavoro
I requisiti di affidabilità di un'applicazione dipendono dalla natura del servizio fornito dall'applicazione o dal processo che esegue. Ad esempio, un'applicazione che fornisce servizi bancomat per una banca potrebbe avere bisogno di una disponibilità a 5 nove. Un sito web che supporta una piattaforma di trading online potrebbe avere bisogno di una disponibilità a 5 nove e di tempi di risposta rapidi. Un processo batch che scrive le transazioni bancarie in un registro contabile alla fine di ogni giornata potrebbe avere un target di aggiornamento dei dati di otto ore.
All'interno di un'applicazione, i singoli componenti o operazioni potrebbero avere requisiti di affidabilità diversi. Ad esempio, un'applicazione di elaborazione degli ordini potrebbe richiedere una maggiore affidabilità per le operazioni che scrivono dati nel database degli ordini rispetto alle richieste di lettura.
La valutazione granulare dei requisiti di affidabilità dei carichi di lavoro ti consente di concentrare la spesa e gli sforzi sui carichi di lavoro fondamentali per la tua attività.
Identifica i periodi critici
Potrebbero esserci dei periodi in cui un'applicazione è più business-critical rispetto ad altri. Questi periodi sono spesso quelli in cui l'applicazione ha un picco di carico. Identifica questi periodi, pianifica una capacità adeguata e testa l'applicazione in base alle condizioni di picco di carico. Per evitare il rischio di interruzioni delle applicazioni durante i periodi di picco di carico, puoi utilizzare pratiche operative appropriate come il blocco del codice di produzione.
Di seguito sono riportati alcuni esempi di applicazioni che presentano picchi stagionali di carico:
- Il modulo di inventario di un'applicazione di contabilità finanziaria è in genere utilizzato maggiormente nei giorni in cui sono pianificati controlli dell'inventario mensili, trimestrali o annuali.
- Un sito web di e-commerce registra picchi di carico significativi durante i periodi di picco degli acquisti o gli eventi promozionali.
- Un database che supporta il modulo di ammissione degli studenti di un'università avrebbe un volume elevato di operazioni di scrittura durante determinati mesi di ogni anno.
- Un servizio di dichiarazione dei redditi online presenta un carico elevato durante il periodo della dichiarazione dei redditi.
- Una piattaforma di trading online potrebbe richiedere una disponibilità a 5 nove e tempi di risposta rapidi, ma solo durante l'orario di apertura (ad esempio, dalle 8:00 alle 17:00 dal lunedì al venerdì).
Valuta altri requisiti non funzionali
Oltre ai requisiti di affidabilità, le applicazioni aziendali possono avere altri importanti requisiti non funzionali di sicurezza, prestazioni, costi ed efficienza operativa. Quando valuti i requisiti di affidabilità di un'applicazione, considera le dipendenze e i compromessi con questi altri requisiti.
Di seguito sono riportati alcuni esempi di requisiti che non sono relativi all'affidabilità, ma possono comportare compromessi rispetto ai requisiti di affidabilità.
- Ottimizzazione dei costi: per ottimizzare i costi dell'IT, la tua organizzazione potrebbe imporre quote per determinate risorse cloud. Ad esempio, per ridurre il costo delle licenze software di terze parti, la tua organizzazione potrebbe impostare quote per il numero di core di computing di cui è possibile eseguire il provisioning. Possono esistere quote simili per la quantità di dati che possono essere archiviati e il volume di traffico di rete tra regioni. Considera gli effetti di questi vincoli di costo sulle opzioni disponibili per la progettazione di un'infrastruttura affidabile.
- Residenza dei dati: per soddisfare i requisiti normativi, la tua applicazione potrebbe dover archiviare ed elaborare i dati in paesi specifici, anche se l'azienda serve gli utenti a livello globale. Considera questi vincoli di residenza dei dati quando decidi le regioni e le zone in cui è possibile eseguire il deployment delle applicazioni.
Alcune decisioni di progettazione che prendi per soddisfare altri requisiti possono contribuire a migliorare l'affidabilità delle tue applicazioni. Di seguito sono riportati alcuni esempi:
- Automazione del deployment: per gestire in modo efficiente i deployment cloud, puoi decidere di automatizzare il flusso di provisioning utilizzando Infrastructure as Code (IaC). Analogamente, puoi automatizzare il processo di creazione e deployment dell'applicazione utilizzando una pipeline di integrazione continua e deployment continuo (CI/CD). L'utilizzo di pipeline IaC e CI/CD può contribuire a migliorare non solo l'efficienza operativa, ma anche l'affidabilità dei carichi di lavoro.
- Controlli di sicurezza: i controlli di sicurezza che implementi possono anche contribuire a migliorare la disponibilità dell'applicazione. Ad esempio, i criteri di sicurezza di Google Cloud Armor possono contribuire a garantire che l'applicazione rimanga disponibile durante gli attacchi DoS (Denial of Service).
- Memorizzazione nella cache dei contenuti: per migliorare le prestazioni di un'applicazione di pubblicazione di contenuti, puoi abilitare la memorizzazione nella cache come parte della configurazione del bilanciatore del carico. Con questo design, gli utenti ottengono non solo un accesso più rapido ai contenuti, ma anche una maggiore disponibilità. Possono accedere ai contenuti memorizzati nella cache anche quando i server di origine non sono attivi.
Rivalutare periodicamente i requisiti
Man mano che la tua azienda si evolve e cresce, i requisiti delle tue applicazioni potrebbero cambiare. Rivaluta periodicamente i tuoi requisiti di affidabilità e assicurati che siano in linea con gli obiettivi e le priorità aziendali attuali della tua organizzazione.
Prendiamo in considerazione un'applicazione che fornisce un livello standard di disponibilità per tutti gli utenti. Potresti aver eseguito il deployment dell'applicazione in due zone all'interno di una regione, con un bilanciatore del carico regionale come frontend. Se la tua organizzazione prevede di lanciare un'opzione di servizio premium che offra una maggiore disponibilità, i requisiti di affidabilità dell'applicazione sono cambiati. Per soddisfare i nuovi requisiti di disponibilità, potrebbe essere necessario eseguire il deployment dell'applicazione in più regioni e utilizzare un bilanciatore del carico globale con Cloud CDN abilitato.
Un'altra opportunità per rivalutare i requisiti di disponibilità delle applicazioni è dopo che si è verificata un'interruzione. Le interruzioni potrebbero esporre aspettative non corrispondenti tra i diversi team all'interno della tua attività. Ad esempio, un team potrebbe considerare accettabile un'interruzione di 45 minuti una volta all'anno (ovvero una disponibilità annuale del 99, 99%). Tuttavia, un altro team potrebbe aspettarsi un tempo di inattività massimo di 4,3 minuti al mese (ovvero, una disponibilità mensile del 99,99%). A seconda di come decidi di modificare o chiarire i requisiti di disponibilità, devi modificare l'architettura per soddisfare i nuovi requisiti.