Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo presenta una soluzione a disponibilità elevata per un'applicazione Web che gestisce grandi volumi di dati che devono essere accessibili entro un intervallo di tempo specifico. La soluzione usa Azure Cosmos DB come archivio dati primario e usa il feed di modifiche Azure Cosmos DB per replicare i dati nell'archiviazione secondaria a basso costo. Dopo il periodo di tempo specificato, la soluzione usa Funzioni di Azure per eliminare i dati da Azure Cosmos DB. I dati nella risorsa di archiviazione secondaria rimangono più a lungo disponibili per il controllo e l'analisi da parte di altre soluzioni. La soluzione replica i dati in diversi servizi dati, che garantiscono una durabilità elevata.
Architettura
Scaricare un file di Visio di questa architettura.
Flusso di dati
Il flusso di dati seguente corrisponde al diagramma precedente:
Il client esegue l'autenticazione tramite Microsoft Entra ID e viene concesso l'accesso alle applicazioni Web ospitate in Servizio app di Azure.
Frontdoor di Azure, ovvero un firewall e un servizio di bilanciamento del carico di livello 7, passa il traffico utente all'area di standby in caso di interruzione a livello di area.
Il Servizio App ospita siti web e API web RESTful. I client browser eseguono applicazioni JavaScript e XML asincrone che usano le API.
Le API Web delegano la responsabilità al codice ospitato in Funzioni per gestire le attività in background. Le attività vengono accodate nelle code di Archiviazione di code di Azure.
I messaggi in coda attivano le funzioni che eseguono le attività in background.
Azure Managed Redis memorizza nella cache i dati del database per le funzioni. La soluzione alleggerisce le operazioni di lettura dal database per i dati che cambiano lentamente e accelera le app per funzioni e le app Web tramite la cache.
Azure Cosmos DB contiene i dati generati di recente.
Azure Cosmos DB genera un feed di modifiche che può essere usato per replicare le modifiche.
Un'applicazione Funzioni legge il feed di modifiche e replica le modifiche apportate alle tabelle di Archiviazione tabelle di Azure. Un'altra app per le funzioni rimuove periodicamente i dati scaduti da Azure Cosmos DB.
Archiviazione tabelle offre archiviazione a basso costo.
Componenti
Microsoft Entra ID è un servizio di gestione delle identità e degli accessi che può essere sincronizzato con una directory locale. In questa architettura autentica gli utenti e concede l'accesso alle applicazioni Web ospitate nel servizio app.
Frontdoor di Azure è una rete di distribuzione di contenuti sicura e un servizio di bilanciamento del carico. In questa architettura accelera la distribuzione di contenuti, fornisce funzionalità di failover e protegge le app dalle minacce informatiche.
App Service è un servizio completamente gestito che gli sviluppatori usano per creare, distribuire, ospitare e ridimensionare app Web. È possibile creare app usando .NET, Node.js, Java, Python o PHP. Le app possono essere eseguite in contenitori o in Windows o Linux. In questa architettura il servizio app ospita l'interfaccia Web e le API REST per l'applicazione. Per altre informazioni sulle API Web, vedere Progettazione di API Web RESTful.
Funzioni fornisce un ambiente per eseguire piccole parti di codice, chiamate funzioni, senza dover stabilire un'infrastruttura dell'applicazione. È possibile usarlo per elaborare i dati in blocco, integrare sistemi, usare dispositivi Internet delle cose (IoT) e creare API e microservizi semplici. È possibile usare i microservizi per creare server che si connettono ai servizi di Azure e rimangono sempre aggiornati. In questa architettura Funzioni esegue attività in background come la replica dei dati e l'eliminazione di record scaduti.
Archiviazione di Azure è un set di servizi cloud scalabili e sicuri per dati, app e carichi di lavoro. In questa architettura, Storage fornisce Queue Storage per la messaggistica delle attività e Table Storage per l'archiviazione a basso costo di dati replicati.
Queue Storage offre un servizio di accodamento di messaggi semplice, conveniente e durevole per carichi di lavoro di grandi dimensioni. Questa architettura usa l'archiviazione code per la messaggistica delle attività.
Archiviazione tabelle è un archivio NoSQL di tipo chiave-valore per lo sviluppo rapido che utilizza set di dati di grandi dimensioni e semistrutturati. Le tabelle sono senza schema e si adattano in base alle esigenze. L'accesso è rapido ed economico per molte applicazioni. Questa architettura utilizza Table Storage per conservare una copia sincronizzata e ristrutturata dei dati in Azure Cosmos DB.
Azure Managed Redis è un servizio di memorizzazione nella cache in memoria completamente gestito e broker di messaggi per la condivisione di dati e stato tra le risorse di calcolo. Per migliorare le prestazioni delle applicazioni di elaborazione delle transazioni online a velocità effettiva elevata, progettarle per la scalabilità usando un archivio dati in memoria, ad esempio Azure Redis gestito. In questa architettura, Azure Managed Redis accelera l'accesso ai dati usati di frequente, migliorando così le prestazioni per le app per le funzioni e le app Web.
Azure Cosmos DB è un database multimodello distribuito a livello globale che consente alle soluzioni di ridimensionare in modo elastico e indipendente la velocità effettiva e l'archiviazione in qualsiasi numero di aree geografiche. Offre garanzie di velocità effettiva, latenza, disponibilità e coerenza con contratti di servizio completi. In questa architettura Azure Cosmos DB archivia i dati recenti e genera un feed di modifiche che è possibile usare per replicare gli aggiornamenti nell'archiviazione tabelle.
Alternative
Gestione traffico di Azure indirizza le richieste DNS in ingresso nelle aree di Azure globali in base ai metodi di routing del traffico scelti. Fornisce anche il failover automatico e il routing delle prestazioni.
App contenitore di Azure è un servizio contenitore serverless completamente gestito che gli sviluppatori usano per compilare e distribuire app moderne su larga scala.
Servizio Azure Kubernetes (AKS) è un servizio Kubernetes completamente gestito per la distribuzione e la gestione di applicazioni in contenitori. È possibile usarla per implementare un'architettura di microservizi con componenti che vengono ridimensionati in modo indipendente e su richiesta.
Istanze di Azure Container esegue attività senza richiedere la gestione dell'infrastruttura. È utile durante lo sviluppo e per eseguire attività non pianificate.
Bus di servizio di Azure è un servizio di messaggistica cloud affidabile per una semplice integrazione ibrida. Può essere utilizzato al posto dell'Archiviazione delle code in questa architettura. Per ulteriori informazioni, vedere Code di archiviazione e code di bus di servizio - confronto e contrasto.
Dettagli dello scenario
Questa soluzione archivia grandi volumi di dati dell'applicazione Web in Azure Cosmos DB. Le app Web che gestiscono grandi quantità di dati usano Azure Cosmos DB per ridimensionare in modo elastico e indipendente la velocità effettiva e l'archiviazione.
Quando vengono apportate modifiche al database, il feed di modifiche Azure Cosmos DB viene inviato a un trigger di Funzioni basate su eventi. Una funzione viene quindi eseguita e replica le modifiche apportate alle tabelle di Archiviazione Tabelle, che forniscono una soluzione di archiviazione a basso costo. È anche possibile orchestrare lo spostamento dei dati downstream più ampio usando pipeline di Azure Data Factory o Fabric Data Factory per trasferire i dati nelle zone di analisi.
L'app Web necessita dei dati solo per un periodo di tempo limitato. Questa soluzione esegue periodicamente ed elimina i dati scaduti da Azure Cosmos DB, riducendo così i costi. È possibile attivare funzioni su richiesta o pianificarle per l'esecuzione in orari specifici.
Potenziali casi d'uso
Questa soluzione è appropriata per qualsiasi applicazione che:
- Usa una grande quantità di dati.
- Richiede che i dati siano disponibili in un intervallo di tempo specifico.
- Usa i dati che scadono.
Gli esempi includono app che:
Personalizzare l'esperienza dei clienti e favorire l'engagement usando feed di dati live e sensori in posizioni fisiche.
Tenere traccia delle abitudini di spesa dei clienti e del comportamento di acquisto.
Tenere traccia delle flotta dei veicoli e migliorare l'efficienza e la sicurezza usando i dati sulla posizione, sulle prestazioni e sul comportamento del conducente.
Previsioni meteo.
Monitorare e gestire i sistemi di traffico.
Analizzare i dati IoT di produzione.
Monitorare i dati dei contatori intelligenti.
Considerazioni
Queste considerazioni implementano i pilastri di Azure Well-Architected Framework, che è un set di principi guida che possono essere usati per migliorare la qualità di un carico di lavoro. Per altre informazioni, vedere Well-Architected Framework.
Reliability
L'affidabilità garantisce che l'applicazione possa soddisfare gli impegni assunti dai clienti. Per maggiori informazioni, consultare la sezione Elenco di controllo per la revisione della progettazione per l'affidabilità.
Il feed di modifica di Azure Cosmos DB garantisce la consegna almeno una volta. Progetta la funzione di replica in modo che sia idempotente, così che gli eventi duplicati non generino dati incoerenti in Table Storage.
Frontdoor di Azure fornisce il failover automatico a livello di area geografica. Se l'area primaria non è più disponibile, il traffico viene instradato all'area di standby senza intervento manuale.
Ottimizzazione dei costi
L'ottimizzazione dei costi è incentrata sui modi per ridurre le spese non necessarie e migliorare l'efficienza operativa. Per altre informazioni, vedere Elenco di controllo per la revisione della progettazione per l'ottimizzazione dei costi.
Il principale vantaggio in termini di costi deriva dal trasferimento dei dati scaduti da Azure Cosmos DB, che viene fatturato per unità richiesta (RU), a Table Storage, che viene fatturato per transazione e per GB di dati archiviati. Questo processo è più economico per i dati a cui si accede raramente.
Se il tuo carico di lavoro ha requisiti di throughput prevedibili, valuta la reserved capacity per Azure Cosmos DB.
Usare il feed delle modifiche per la replicazione. Questo metodo riduce la manutenzione del codice rispetto alla replica nell'applicazione principale.
Questa soluzione comporta costi aggiuntivi per l'archiviazione secondaria e per le funzioni che gestiscono la replica e la scadenza dei dati.
Eccellenza operativa
L'eccellenza operativa copre i processi operativi che distribuiscono un'applicazione e la mantengono in esecuzione nell'ambiente di produzione. Per ulteriori informazioni, vedere Lista di controllo per la revisione del design per l'Eccellenza Operativa.
È necessario eseguire la migrazione dei dati esistenti. Il processo di migrazione richiede script o routine ad hoc per copiare i dati obsoleti negli account di archiviazione. Quando si esegue la migrazione dei dati, utilizzare marche temporali e contrassegni di copia per tenere traccia dell'avanzamento della migrazione.
Ignora i feed delle eliminazioni generati dalle funzioni quando eliminano elementi da Azure Cosmos DB. Questo approccio impedisce la rimozione di elementi dall'archiviazione secondaria di Azure Table.
Efficienza prestazionale
L'efficienza delle prestazioni si riferisce alla capacità del carico di lavoro di ridimensionarsi per soddisfare in modo efficiente le esigenze degli utenti. Per maggiori informazioni, consultare la sezione Elenco di controllo per la revisione della progettazione per l'efficienza delle prestazioni.
La latenza di elaborazione dei feed di modifiche influisce sulla velocità con cui i dati diventano disponibili in Archiviazione tabelle. Per soddisfare i requisiti di latenza, modifica le dimensioni del piano dell'app per le funzioni e le impostazioni di batch.
Per evitare partizioni ad accesso frequente, scegliere una chiave di partizione Azure Cosmos DB che distribuisca la velocità effettiva di scrittura in modo uniforme tra le partizioni logiche.
Azure Redis gestito riduce la pressione di lettura sulle Azure Cosmos DB per i dati a modifica lenta, riducendo la latenza e il consumo di UR.
Collaboratori
Microsoft gestisce questo articolo. I seguenti collaboratori hanno scritto questo articolo.
Autore principale:
- Nabil Siddiqui | Cloud Solution Architect - Digital and Application Innovation
Altro collaboratore:
- Filippina Moreira | Cloud Solution Architect
Per visualizzare i profili LinkedIn non pubblici, accedere a LinkedIn.
Passaggi successivi
- Frontdoor di Azure e la documentazione della rete per la distribuzione di contenuti cloud
- Use Azure Cosmos DB
- Scegliere l'API appropriata per Azure Cosmos DB
- Sviluppare soluzioni usando Azure Cosmos DB
- Migrare grandi volumi di dati in Azure Cosmos DB
- Come modellare e partizionare i dati usando un esempio reale
- Modelli di progettazione dei feed di cambiamento in Azure Cosmos DB
- Creare un'architettura serverless basata su eventi utilizzando Azure Cosmos DB e Azure Functions
- Che cos'è Fabric Data Factory?
- Orchestrate lo spostamento e la trasformazione dei dati usando Azure Data Factory
- Documentazione di Fabric Data Factory