Diventare globali
Nell'unità precedente è stato descritto come dimensionare le risorse di calcolo e incrementarne la disponibilità nel processo. È stata anche consigliata l'aggiunta di una cache di Azure per Redis per migliorare le prestazioni e aumentare il numero di istanze dei database SQL di Azure tramite il partizionamento orizzontale.
In considerazione della crescita aziendale, il passaggio successivo potrebbe essere quello di diventare globale. Prima di provare a implementare un'architettura completamente globale, è opportuno valutare alcune implicazioni.
Domande da porsi
La prima domanda è: È davvero necessario andare a livello globale?
Prima di imbarcarsi in questa impresa, è importante conoscere la situazione dei clienti. È quindi utile porsi alcune domande:
- È possibile usare una rete per la distribuzione di contenuti per avvicinare i contenuti agli utenti?
- È davvero utile dimensionare questo sistema specifico in due o più aree geografiche? Ad esempio, un utente negli Stati Uniti deve avere esattamente lo stesso account di uno nel Regno Unito? Non sarebbe meglio adottare sistemi indipendenti? Si tratta di un modello comune nell'e-commerce.
- Se si ritiene che un sistema distribuito a livello globale sia realmente utile, quale tipo di coerenza è necessario per il database? Oltre a essere difficilmente realizzabile, una coerenza assoluta a livello globale non è consentita in servizi come Cosmos DB, proprio a causa della velocità della luce.
Coerenza dei dati
Esaminiamo più in dettaglio il problema della coerenza dei dati.
La coerenza nei sistemi di database si riferisce al requisito per cui una determinata transazione di database deve modificare i dati interessati solo nei modi consentiti. Nell'elaborazione distribuita si usano due modelli di coerenza.
La coerenza assoluta offre una garanzia di linearizzabilità. È garantito che le letture restituiscano sempre la versione di un elemento di cui sia stato eseguito il commit più di recente.
Un altro tipo è la coerenza finale che si basa sul concetto che un database o un sistema alla fine diventi coerente col passare del tempo. Non prevede alcuna garanzia di ordinamento per le operazioni di lettura. In assenza di ulteriori operazioni di scrittura, le repliche alla fine convergeranno.
Strumenti per diventare globali
Se si ritiene che sia effettivamente necessario dimensionare l'applicazione a livello globale, sono disponibili alcuni servizi di Azure che consentono di eseguire questa operazione. Esaminiamo i servizi Gestione traffico di Azure e Frontdoor di Azure:
- Gestione traffico di Azure è un servizio di bilanciamento del carico globale basato su DNS. Usa probe di integrità e DNS per indirizzare gli utenti al miglior back-end integro in base ai criteri di routing definiti. Questa definizione potrebbe essere basata su sulle prestazioni, sulla posizione, sul round robin e così via. Dopo aver identificato un back-end integro, i client si connetteranno sempre al back-end direttamente.
- Il servizio Frontdoor di Azure è una rete ADN (Application Delivery Network) distribuita come servizio, che offre diverse funzionalità di bilanciamento del carico di livello 7 per le applicazioni. Offre funzionalità di accelerazione sito dinamico, nonché di bilanciamento del carico globale con failover near real-time. Si tratta di un servizio scalabile e a disponibilità elevata, completamente gestito da Azure.
Frontdoor di Azure è di fatto un servizio di bilanciamento del carico globale basato su HTTP. Il client stabilisce una connessione con Frontdoor, di conseguenza è Frontdoor a inoltrare tramite proxy la richiesta dell'utente. Se l'elemento richiesto non si trova nella cache, viene identificata la regola di gestione corretta. Il servizio verifica quindi il probe di integrità del back-end pertinente e, presupponendo che tutto sia integro, la richiesta dell'utente viene inoltrata al back-end migliore sulla base del metodo di routing.
Dal momento che la connessione viene inoltrata tramite proxy da Frontdoor di Azure, è possibile eseguire alcune funzioni avanzate, ad esempio l'esecuzione di un web application firewall, nonché la memorizzazione nella cache, che è utile per la scalabilità. Gestione traffico non consente di eseguire nessuna di tali funzioni.
Il diagramma mostra come usare entrambi gli strumenti.
In questa configurazione si usa Gestione traffico per il semplice bilanciamento del carico basato su DNS negli asset statici degli account di archiviazione e Frontdoor per il routing basato sul percorso nell'applicazione Web tra servizio app e macchine virtuali.