Questo articolo presenta una soluzione a disponibilità elevata per un'applicazione Web che si occupa di grandi volumi di dati che devono essere accessibili entro un intervallo di tempo specifico. La soluzione prevede l'uso di Azure Cosmos DB come archivio dati primario e l'uso del feed di modifiche di Azure Cosmos DB per replicare i dati nell'archiviazione secondaria a basso costo. Quando scade il periodo di tempo specificato, Funzioni di Azure viene usato per eliminare i dati da Azure Cosmos DB. I dati nella risorsa di archiviazione secondaria rimangono disponibili per un periodo di tempo più lungo per abilitare altre soluzioni a scopo di controllo e analisi. La soluzione offre anche durabilità elevata replicando i dati in diversi servizi dati.
Architettura
Scaricare un file di Visio di questa architettura.
Flusso di dati
- Il client esegue l'autenticazione con l'ID Microsoft Entra e viene concesso l'accesso alle applicazioni Web ospitate nel servizio app Azure.
- Frontdoor di Azure, 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.
- servizio app ospita siti Web e API Web RESTful. I client browser eseguono applicazioni JavaScript asincrone e XML (AJAX) che usano le API.
- Le API Web delegano la responsabilità al codice ospitato da Funzioni per gestire le attività in background. Le attività vengono accodate nelle code di Archiviazione code di Azure.
- I messaggi in coda attivano le funzioni che eseguono le attività in background.
- cache di Azure per Redis memorizza nella cache i dati del database per le funzioni. Usando la cache, la soluzione scarica l'attività del database e velocizza le app per le funzioni e le app Web.
- 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'app per le 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 di Azure è un servizio di gestione delle identità e degli accessi che può essere sincronizzato con una directory locale.
- DNS di Azure è un servizio di hosting a disponibilità elevata per i domini DNS che fornisce alle app query DNS veloci e aggiornamenti rapidi ai record DNS. La gestione di DNS di Azure è simile alla gestione di altri servizi di Azure e usa le stesse credenziali, API, strumenti e fatturazione.
- Frontdoor di Azure è una rete per la distribuzione di contenuti sicura (RETE CDN) e un servizio di bilanciamento del carico con failover istantaneo. Opera in prossimità degli utenti, accelerando la distribuzione dei contenuti proteggendo al tempo stesso app, API e siti Web da minacce informatiche.
- servizio app è un servizio completamente gestito per la creazione, la distribuzione e il ridimensionamento delle app Web. È possibile creare app usando .NET, .NET Core, Node.js, Java, Python o PHP. Le app possono essere eseguite in contenitori o in Windows o Linux. In una migrazione mainframe, le schermate front-end o l'interfaccia Web possono essere codificate come API REST basate su HTTP. Possono essere separati e possono essere senza stato per orchestrare un sistema basato su microservizi. Per altre informazioni sulle API Web, vedere Progettazione di API Web RESTful.
- Funzioni fornisce un ambiente per l'esecuzione di 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. Con i microservizi, è possibile creare server che si connettono ai servizi di Azure e sono sempre aggiornati.
- Archiviazione di Azure è un set di servizi cloud altamente scalabili e sicuri per dati, app e carichi di lavoro. Include File di Azure, archiviazione tabelle e archiviazione code. File di Azure è spesso uno strumento efficace per la migrazione dei carichi di lavoro mainframe.
- L'archiviazione code offre code di messaggi semplici, convenienti e durevoli per carichi di lavoro di grandi dimensioni.
- Archiviazione tabelle è un archivio chiave-valore NoSQL per lo sviluppo rapido che usa set di dati semistrutturati di grandi dimensioni. Le tabelle sono senza schema e si adattano facilmente in base alle esigenze. L'accesso è rapido ed economico per molti tipi di applicazioni e in genere costa meno di altri tipi di archiviazione con chiave.
- cache di Azure per Redis è un servizio di memorizzazione nella cache in memoria completamente gestito e un broker di messaggi per la condivisione di dati e stato tra le risorse di calcolo. Include sia redis open source che un prodotto commerciale di Redis Labs come servizi gestiti. È possibile migliorare le prestazioni delle applicazioni di elaborazione delle transazioni online ad alta velocità effettiva progettandole per la scalabilità e per usare un archivio dati in memoria, ad esempio cache di Azure per Redis.
- Azure Cosmos DB è un database multimodello distribuito a livello globale di Microsoft 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.
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.
- Azure rete per la distribuzione di contenuti memorizza nella cache il contenuto statico nei server perimetrali per una risposta rapida e usa le ottimizzazioni di rete per migliorare la risposta per il contenuto dinamico. rete per la distribuzione di contenuti è particolarmente utile quando la base utente è globale.
- App Azure Container è un servizio contenitore serverless completamente gestito usato per compilare e distribuire app moderne su larga scala.
- Il servizio Azure Kubernetes è il servizio completamente gestito di Kubernetes per la distribuzione e la gestione di applicazioni in contenitori. È possibile usarlo per implementare un'architettura di microservizi i cui componenti vengono ridimensionati in modo indipendente su richiesta.
- Istanze di Azure Container offre un modo rapido e semplice per eseguire attività senza dover gestire l'infrastruttura. È utile durante lo sviluppo o per l'esecuzione di attività non pianificate.
- Bus di servizio di Azure è un servizio di messaggistica cloud affidabile per una semplice integrazione ibrida. Può essere usato invece di Archiviazione code in questa architettura. Per altre informazioni, vedere Code di archiviazione e code bus di servizio, confrontate e contrastate.
Dettagli dello scenario
Questa soluzione usa Azure Cosmos DB per archiviare il volume elevato di dati usati dall'applicazione Web. Le app Web che gestiscono grandi quantità di dati traggono vantaggio dalla capacità di Azure Cosmos DB di ridimensionare in modo elastico e indipendente la velocità effettiva e l'archiviazione.
Un altro componente chiave della soluzione è il feed di modifiche di Azure Cosmos DB. Quando vengono apportate modifiche al database, il flusso del feed di modifiche viene inviato a un trigger di Funzioni basate su eventi. Una funzione esegue quindi e replica le modifiche apportate alle tabelle di archiviazione tabelle, che forniscono una soluzione di archiviazione a basso costo.
L'app Web necessita dei dati solo per un periodo di tempo limitato. La soluzione sfrutta questo fatto per ridurre ulteriormente i costi. In particolare, un'altra funzione esegue periodicamente ed elimina i dati scaduti da Azure Cosmos DB. Oltre a essere attivati, le funzioni possono anche essere pianificate per l'esecuzione in momenti prestabiliti.
Potenziali casi d'uso
L'architettura è appropriata per qualsiasi applicazione che:
- Usa una grande quantità di dati.
- Richiede che i dati siano sempre disponibili quando sono necessari.
- Usa i dati che scadono.
Gli esempi includono app che:
- Personalizzare l'esperienza dei clienti e favorire l'engagement tramite 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 raccogliendo dati sulla posizione, sulle prestazioni e sul comportamento del conducente per migliorare l'efficienza e la sicurezza.
- Previsioni meteo.
- Offrire sistemi di traffico intelligente o implementare sistemi di traffico intelligente o usare la tecnologia intelligente per monitorare il traffico.
- Analizzare i dati IoT di produzione.
- Visualizzare i dati dei contatori intelligenti o usare la tecnologia intelligente per monitorare i dati dei contatori.
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 Microsoft Azure Well-Architected Framework.
- Quando si implementa e si gestisce questa soluzione, si comportano costi aggiuntivi.
- L'uso del feed di modifiche per la replica richiede meno manutenzione del codice rispetto all'operazione di replica nell'applicazione principale.
- È 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, assicurarsi di usare timestamp e flag di copia per tenere traccia dello stato di avanzamento della migrazione.
- Per evitare di eliminare voci dall'archivio secondario tabelle di Azure, ignorare i feed di eliminazione generati quando le funzioni eliminano voci da Azure Cosmos DB.
Collaboratori
Questo articolo viene gestito da Microsoft. Originariamente è stato scritto dai seguenti contributori.
Autore principale:
- Nabil Siddiqui | Cloud Solution Architect - Digital and Application Innovation
Passaggi successivi
- Stile dell'architettura Web-Queue-Worker
- Progettare un'applicazione distribuita geograficamente
- Distribuire i dati a livello globale con Azure Cosmos DB
- Scegliere l'API appropriata per Azure Cosmos DB
- Archiviare e accedere ai dati NoSQL con Azure Cosmos DB per la tabella
- Usare i dati NoSQL in Azure Cosmos DB
- Come modellare e partizionare i dati in Azure Cosmos DB usando un esempio reale
- Opzioni per la migrazione dei dati locali o cloud ad Azure Cosmos DB
- Eseguire la migrazione di centinaia di terabyte di dati ad Azure Cosmos DB
- Modelli di progettazione dei feed di modifiche in Azure Cosmos DB
- Architetture basate su eventi serverless con Azure Cosmos DB e Funzioni di Azure
- Introduzione al servizio Azure Data Factory
- Orchestrare lo spostamento e la trasformazione dei dati in Azure Data Factory o nella pipeline di Azure Synapse