Elaborazione degli ordini scalabile

Azure Cosmos DB
Azure HDInsight

Questo scenario di esempio è rivolto alle organizzazioni che necessitano di un'architettura altamente scalabile e resiliente per l'elaborazione degli ordini online. Le potenziali applicazioni includono e-commerce e punti vendita al dettaglio, evasione degli ordini e prenotazione e tracking dell'inventario.

Architettura

Diagramma dell'architettura di esempio per una pipeline di elaborazione degli ordini scalabile.

Scaricare un file di Visio di questa architettura.

Flusso di dati

Questa architettura indica i componenti chiave di una pipeline per l'elaborazione degli ordini. Il flusso dei dati nello scenario avviene come segue:

  1. I messaggi di evento giungono nel sistema tramite applicazioni rivolte ai clienti (in modo sincrono tramite HTTP) e diversi sistemi back-end (in modo asincrono tramite Apache Kafka). Questi messaggi vengono passati a una pipeline di elaborazione dei comandi.
  2. Ogni messaggio di evento viene inserito e mappato a un comando di un set definito tramite un microservizio di elaborazione di comandi. L'elaboratore di comando recupera qualsiasi stato corrente relativo all'esecuzione del comando da un database di snapshot del flusso di eventi. Il comando viene quindi eseguito e l'output emesso come nuovo evento.
  3. Ogni evento generato come output di un comando viene eseguito il commit in un database di flusso di eventi usando Azure Cosmos DB.
  4. Per ogni inserimento o aggiornamento del database di cui è stato eseguito il commit nel database del flusso di eventi, viene generato un evento dal feed di modifiche di Azure Cosmos DB. I sistemi a valle possono effettuare la sottoscrizione a qualsiasi argomento di evento pertinente per il sistema.
  5. Tutti gli eventi del feed di modifiche di Azure Cosmos DB vengono inviati anche a un microservizio del flusso di eventi snapshot, che calcola eventuali modifiche di stato causate da eventi che si sono verificati. Viene quindi eseguito il commit del nuovo stato nel database snapshot del flusso di eventi archiviato in Azure Cosmos DB. Il database di snapshot offre un'origine dati distribuita globalmente e a bassa latenza per lo stato corrente di tutti gli elementi dati. Il database del flusso di eventi fornisce una registrazione completa di tutti i messaggi di eventi che sono passati attraverso l'architettura, consentendo scenari solidi di test, risoluzione dei problemi e ripristino di emergenza.

Componenti

  • Azure Cosmos DB è il 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 produttività, latenza, disponibilità e coerenza con contratti di servizio completi. Questo scenario usa Azure Cosmos DB per l'archiviazione di flussi di eventi e l'archiviazione snapshot e applica le funzionalità del feed di modifiche di Azure Cosmos DB per garantire la coerenza dei dati e il ripristino degli errori.
  • Apache Kafka in Azure HDInsight è un'implementazione del servizio gestito di Apache Kafka, una piattaforma di streaming distribuita open source per la creazione di pipeline e applicazioni di streaming in tempo reale. Kafka offre anche una funzionalità di broker di messaggi simile a una coda di messaggi, in cui è possibile pubblicare e sottoscrivere flussi dei dati denominati. Lo scenario usa Kafka per elaborare gli eventi in ingresso e downstream nella pipeline di elaborazione degli ordini.

Dettagli dello scenario

Lo scenario adotta un approccio di origine eventi, usando un modello di programmazione funzionale implementato tramite microservizi. Ogni microservizio viene gestito come un elaboratore di flusso e tutta la logica di business viene implementata tramite microservizi. Questo approccio consente disponibilità e resilienza elevate, replica geografica e prestazioni rapide.

L'uso di servizi di Azure gestiti, ad esempio Azure Cosmos DB e HDInsight, consente di ridurre i costi usando le competenze di Microsoft nell'archiviazione e nel recupero dei dati su scala cloud distribuite a livello globale. Questo scenario è rivolto specificamente a un contesto di e-commerce o vendita al dettaglio. Se si hanno altre esigenze per i servizi di dati, è necessario esaminare l'elenco dei servizi di database intelligenti completamente gestiti in Azure.

Potenziali casi d'uso

Gli altri casi d'uso pertinenti includono:

  • Sistemi di back-end per e-commerce o punti vendita al dettaglio.
  • Sistemi di gestione dell'inventario, per i settori della vendita al dettaglio o della produzione.
  • Sistemi di evasione degli ordini.
  • Altri scenari di integrazione correlati a una pipeline di elaborazione degli ordini.

Considerazioni

Queste considerazioni implementano i pilastri di Azure Well-Architected Framework, che è un set di set di principi guida che possono essere usati per migliorare la qualità di un carico di lavoro. Per altre informazioni, vedere Framework ben progettato di Microsoft Azure.

Per l'inserimento di messaggi in tempo reale, l'archiviazione dei dati, l'elaborazione dei flussi, l'archiviazione dei dati analitici, l'analisi e la creazione di report sono disponibili molte opzioni tecnologiche.

I microservizi sono diventati uno stile di architettura diffuso per la creazione di applicazioni cloud che offrono resilienza, scalabilità elevata, possibilità di distribuzione indipendente e capacità di evolversi rapidamente. I microservizi richiedono un approccio diverso alla progettazione e alla creazione di applicazioni. Per indicazioni sulla creazione e l'esecuzione di un'architettura basata su microservizi, vedere Progettazione di microservizi in Azure.

Disponibilità

L'approccio di origine eventi dello scenario consente di associare e distribuire i componenti di sistema in modo flessibile e indipendente l'uno dall'altro. Azure Cosmos DB offre disponibilità elevata e consente all'organizzazione di gestire i compromessi associati alla coerenza, alla disponibilità e alle prestazioni, con garanzie corrispondenti. Anche Apache Kafka in HDInsight è progettato per la disponibilità elevata.

Monitoraggio di Azure offre interfacce utente unificate per il monitoraggio di diversi servizi di Azure. Per altre informazioni, vedere l'articolo relativo al monitoraggio in Microsoft Azure. Sia Hub eventi che Analisi di flusso sono integrati in Monitoraggio di Azure.

Per altre considerazioni sulla disponibilità, vedere l'elenco di controllo della disponibilità.

Scalabilità

Kafka in HDInsight consente la configurazione dell'archiviazione e della scalabilità per i cluster Kafka. Azure Cosmos DB offre prestazioni veloci e prevedibili e scalabilità senza problemi man mano che l'applicazione cresce. L'architettura di origine eventi basata su microservizi dello scenario semplifica anche il ridimensionamento del sistema e l'espansione delle sue funzionalità.

Per altre considerazioni relative alla scalabilità, vedere l'elenco di controllo per l'efficienza delle prestazioni in Centro architetture di Azure.

Sicurezza

La sicurezza offre garanzie contro attacchi intenzionali e l'abuso di dati e sistemi preziosi. Per altre informazioni, vedere Panoramica del pilastro della sicurezza.

Il modello di sicurezza di Azure Cosmos DB autentica gli utenti e fornisce l'accesso ai dati e alle risorse. Per altre informazioni, vedere Sicurezza dei database in Azure Cosmos DB.

Per indicazioni generali sulla progettazione di soluzioni sicure, vedere la documentazione sulla sicurezza di Azure.

Resilienza

L'architettura di origine eventi e le tecnologie associate in questo scenario di esempio rendono lo scenario stesso altamente resiliente in caso di errori. Per indicazioni generali sulla progettazione di soluzioni resilienti, vedere Progettazione di applicazioni resilienti per Azure.

Ottimizzazione dei costi

L'ottimizzazione dei costi riguarda l'analisi dei modi per ridurre le spese non necessarie e migliorare l'efficienza operativa. Per altre informazioni, vedere Panoramica del pilastro di ottimizzazione dei costi.

Per esaminare il costo di esecuzione dello scenario, nel calcolatore dei costi sono preconfigurati tutti i servizi. Per verificare la variazione dei prezzi per un determinato scenario, modificare le variabili appropriate in base al volume di dati previsto. Per questo scenario, i prezzi di esempio includono solo Azure Cosmos DB e un cluster Kafka per l'elaborazione di eventi generati dal feed di modifiche di Azure Cosmos DB. I processori di eventi e i microservizi per i sistemi di origine e altri sistemi downstream non sono inclusi e il loro costo dipende molto dalla quantità e dalla scalabilità di questi servizi, nonché dalle tecnologie scelte per implementarle.

La valuta di Azure Cosmos DB è l'unità richiesta (UR). Con le unità richiesta, non è necessario riservare capacità di lettura/scrittura né effettuare il provisioning di CPU, memoria e operazioni di I/O al secondo. Azure Cosmos DB supporta varie API che dispongono di operazioni diverse, che vanno dalla semplice lettura e scrittura alle query per grafi più complesse. Poiché non tutte le richieste sono uguali, viene loro assegnata una quantità normalizzata di unità richiesta in base alla quantità di calcolo necessaria per servire la richiesta. Il numero di unità richiesta necessarie per la soluzione dipende dalle dimensioni degli elementi dati e dal numero di operazioni di lettura e scrittura del database al secondo. Per altre informazioni, vedere Unità richiesta in Azure Cosmos DB. Questi prezzi stimati si basano su Azure Cosmos DB in esecuzione in due aree di Azure.

Sono stati forniti tre profili di costo di esempio in base alla quantità di attività prevista:

  • Small: questo esempio di prezzi è correlato a 5 UR riservate con un archivio dati da 1 TB in Azure Cosmos DB e un cluster Kafka di piccole dimensioni (D3 v2).
  • Medio: questo esempio di prezzi è correlato a 50 UR riservate con un archivio dati da 10 TB in Azure Cosmos DB e un cluster Kafka midsized (D4 v2).
  • Grande: questo esempio di prezzi è correlato a 500 UR riservate con un archivio dati da 30 TB in Azure Cosmos DB e un cluster Kafka di grandi dimensioni (D5 v2).

Collaboratori

Questo articolo viene gestito da Microsoft. Originariamente è stato scritto dai seguenti contributori.

Autori principali:

  • Alex Buck | Sviluppatore di contenuti senior

Passaggi successivi

Questo scenario di esempio si basa su una versione più estesa di questa architettura compilata da jet.com per la pipeline di elaborazione degli ordini end-to-end. Per altre informazioni, vedere il profilo tecnico del cliente jet.com e la presentazione di jet.com a Build.

Vedere anche il contenuto seguente:

Vedere il contenuto dell'architettura correlato: