Crea un'applicazione moderna con database AWS appositamente creati

Fornito da Servizi Web Amazon





I giorni dei database monolitici universali sono alle spalle. Come Werner Vogels, CTO e vicepresidente di Amazon.com, disse, Raramente un database può soddisfare le esigenze di più casi d'uso distinti. In passato, le applicazioni web venivano costruite utilizzando lo stack LAMP (Linux, Apache, MySQL e PHP), dove un unico database veniva utilizzato per molte esperienze diverse. Al contrario, le applicazioni Web di oggi di clienti come Expedia, Airbnb e Capital One non utilizzano un unico database: utilizzano diversi tipi di database.

In effetti, gli sviluppatori oggi creano applicazioni altamente distribuite utilizzando una moltitudine di database costruiti ad hoc . In un certo senso, gli sviluppatori stanno facendo ciò che sanno fare meglio, dividendo le applicazioni complesse in parti più piccole, il che consente loro di scegliere lo strumento giusto per il lavoro giusto.



In questo post del blog, discutiamo dei database AWS appositamente creati e di come utilizzarli per creare esperienze avanzate per i tuoi clienti. Esaminiamo anche un esempio dettagliato di questi database che alimentano diverse esperienze in un'applicazione e forniamo gli strumenti necessari per far girare l'app in pochi minuti.

I clienti AWS ci dicono di voler costruire applicazioni scalabili, ad alte prestazioni e funzionali con prestazioni e esigenze aziendali specifiche. Negli ultimi anni abbiamo risposto a queste esigenze dei clienti introducendo nuovi servizi come Amazon Nettuno per database di grafi, Amazzonia-Aurora per database relazionali di livello commerciale completamente gestiti, nonché un set di funzionalità in continuo miglioramento come Amazon Aurora senza server . Ad AWS re:Invent 2018, AWS annunciato numerose nuove aggiunte e funzionalità alla nostra famiglia di database appositamente creati:

A gennaio 2019, AWS ha annunciato Amazon DocumentDB (con compatibilità MongoDB). Con queste aggiunte, gli sviluppatori avere una scelta di database relazionali, di valori-chiave, di documenti, in memoria, di ricerca, di grafici, di serie temporali e di contabilità generale per adattarsi ai loro casi d'uso individuali. Ognuno di questi database è costruito per essere lo strumento giusto per il lavoro giusto.



In che modo i clienti AWS utilizzano database appositamente creati

In che modo i clienti AWS sfruttano insieme tutti questi database appositamente creati? Ad AWS re:Invent 2018 abbiamo presentato Database su AWS: lo strumento giusto per il lavoro giusto . In questa sessione, abbiamo discusso di come i clienti AWS utilizzano database diversi insieme per offrire esperienze complete e complete ai propri clienti.

Nella sessione abbiamo mostrato una demo che fornisce un esempio reale di come i clienti creano applicazioni utilizzando un'architettura specifica su AWS. La dimostrazione delinea come una vetrina web (in questo caso, una libreria) sia costruita su più database, ognuno dei quali affronta un caso d'uso diverso. Segue una clip della demo, a partire dalle 21:43.

Come affrontare diversi casi d'uso con diversi database appositamente creati

La clip precedente mostrava un'applicazione demo di una libreria online (vedi lo screenshot seguente). Come con qualsiasi applicazione Web moderna e completa, questa applicazione ha più casi d'uso diversi, tra cui un catalogo di prodotti, una ricerca di prodotti, un elenco di best seller e consigli social.



immagine 1

Figura 1: Uno screenshot dell'app demo di AWS Bookstore

Iniziamo con il caso d'uso del catalogo prodotti. Quando un utente accede alla vetrina web della libreria, potrebbe aspettarsi di vedere un elenco di prodotti. I prodotti in genere contengono identificatori e attributi univoci come descrizioni, quantità, posizioni e prezzi. In senso tecnico, il metodo per recuperare questi tipi di attributi è spesso una ricerca di valori-chiave basata sull'identificatore univoco del prodotto. Ciò significa che un'applicazione può recuperare questi altri attributi quando viene fornito l'identificatore univoco di un prodotto. Questo caso d'uso fa Amazon DynamoDB si adatta perfettamente come sistema di registrazione durevole per il catalogo dei prodotti della libreria perché DynamoDB fornisce prestazioni rapide e prevedibili su qualsiasi scala per la ricerca di valori chiave. Con DynamoDB, il catalogo prodotti può iniziare con poche centinaia di prodotti e scalare fino a miliardi di prodotti senza dover riprogettare o modificare i database.

Il secondo caso d'uso è consentire ai clienti di eseguire ricerche nel catalogo prodotti. Quando i clienti vengono in libreria, vogliono individuare il prodotto che intendono acquistare o cercare nel catalogo per trovare la loro prossima grande lettura. Nel mondo di oggi, gli utenti sono formati per essere efficienti con le ricerche di parole chiave per trovare ciò che stanno cercando. Servizio Amazon Elasticsearch (Amazon ES) è una tecnologia di database che risolve queste esigenze degli utenti. Con funzionalità in linguaggio naturale, navigazione a faccette e risultati classificati, Amazon ES aiuta i clienti a trovare rapidamente gli articoli che desiderano nel catalogo dei prodotti.



L'applicazione libreria deve mantenere il catalogo prodotti (in DynamoDB) sincronizzato con l'indice di ricerca in Amazon ES. Ogni volta che un prodotto viene aggiunto, aggiornato o rimosso dalla tabella dei prodotti del catalogo in DynamoDB, la modifica deve riflettersi anche nell'indice di ricerca in Amazon ES. Un modo semplice per farlo è usare Flussi Amazon DynamoDB con AWS Lambda per aggiornare in modo asincrono l'indice Amazon ES ogni volta che viene apportata una modifica al catalogo prodotti in DynamoDB.

Il terzo caso d'uso è un elenco di best seller per il catalogo prodotti che consentirà agli utenti della libreria di vedere quali sono i primi 20 libri acquistati. Per questa esperienza, il database ideale consente alla libreria di mantenere una classifica senza dover eseguire lunghe e costose query di riepilogo su tutti gli acquisti ogni volta che un utente aggiorna la pagina web. Amazon ElastiCache per Redis fornisce esattamente ciò di cui ha bisogno, comprese strutture di dati integrate in memoria come set ordinati che consentono alla libreria di creare un elenco di best seller in modo rapido ed efficace. Per farlo funzionare, la libreria può utilizzare DynamoDB Streams (simile al caso d'uso di ricerca prodotto) dalla tabella degli ordini per aggiornare lo stato più recente in ElastiCache ogni volta che viene acquistato un nuovo articolo. Con l'elenco dei migliori venditori disponibile, la libreria può mostrarne una parte anche sulla home page del suo sito web. Inoltre, poiché i dati sono in memoria e disponibili tramite i set ordinati integrati, la libreria sperimenterà latenze di lettura di microsecondi per le query nell'elenco dei best seller.

Il quarto caso d'uso è fornire consigli social per aiutare i clienti della libreria a trovare contenuti più appropriati al contesto, in questo caso contenuti basati su ciò che i loro amici hanno acquistato. Poiché le raccomandazioni social si trovano sulla home page della libreria e in altre pagine del sito, le raccomandazioni devono essere veloci. Inoltre, man mano che il sito Web cresce, la soluzione deve essere ridimensionata con più prodotti, pagine e utenti. Con questi requisiti, un database grafico appositamente costruito come Amazon Nettuno è un adattamento naturale per navigare nei collegamenti nei dati, consentendo consigli basati su connessioni social e relative attività di acquisto. Neptune fornisce le funzionalità e le prestazioni necessarie di cui abbiamo bisogno per creare ed eseguire rapidamente query per attraversare le relazioni grafiche e si ridimensionerà man mano che il sito Web (e l'applicazione) crescono senza compromettere le prestazioni.

Per recuperare e aggiornare tutte queste informazioni, la vetrina web effettua una serie di chiamate API diverse. Ecco una panoramica dell'aspetto dell'applicazione nel back-end, utilizzando Amazon API Gateway e AWS Lambda:

immagine 2

Figura 2: Diagramma architettonico dell'app demo di AWS Bookstore

Per questa applicazione libreria, abbiamo valutato i principali casi d'uso dell'applicazione e scelto il miglior database per ogni caso d'uso. I database appositamente creati ti consentono di creare infrastrutture di back-end scalabili, ad alte prestazioni e funzionali per alimentare le tue applicazioni, affrontando ogni caso d'uso con il componente più appropriato. Seguendo questo approccio, puoi costruire un'architettura simile con le tue risorse.

Mettilo in funzione

Ogni cliente che crea un'applicazione Web deve affrontare quasi lo stesso identico processo di scelta dei componenti, ma questa è solo metà della battaglia. Forse ancora più importante, dopo aver scelto l'architettura desiderata, devono costruire lo stack da zero, ogni volta. Questo ci ha fatto pensare: perché non rendere l'architettura più facile da costruire? Con così tanti clienti che stanno attraversando un processo molto simile, come possiamo semplificarlo? Per i clienti che sono ancora nella fase di apprendimento o esplorativa, come possiamo aiutarli a far funzionare un'applicazione full-stack in pochi minuti utilizzando questi database appositamente creati?

Per rispondere a queste domande, ne abbiamo creato uno AWS CloudFormation modello per automatizzare la creazione dell'intero stack di applicazioni demo della libreria, end-to-end, in pochi minuti. Inoltre, abbiamo reso disponibili tutto il codice sorgente, le immagini e i dati di esempio GitHub per la distribuzione, l'esplorazione, la modifica e l'estensione.

Immagine 3

Figura 3: Il repository dell'app demo di AWS Bookstore su GitHub

Come abbiamo dimostrato nella sessione re:Invent, l'app AWS Bookstore Demo è un'applicazione funzionante che utilizza quattro database appositamente creati per fornire un'esperienza utente potente e funzionale. Puoi distribuire l'applicazione nel tuo account AWS con pochi clic utilizzando AWS CloudFormation (per ulteriori informazioni, consulta il file readme.md su GitHub ). Una volta distribuito nel tuo account, puoi esplorare i set di dati in Amazon DynamoDB, Amazon Elasticsearch, Amazon ElastiCache for Redis e Amazon Neptune. Il file readme.md include passaggi aggiuntivi che ti guidano attraverso come eseguire questa operazione passo dopo passo, insieme a commenti su come tutto combacia. Puoi utilizzare l'app come sandbox o strumento di apprendimento per esplorare come si integra un'architettura come questa o come modello iniziale per creare la tua applicazione.

Cosa succede se i requisiti della mia domanda sono diversi?

L'app AWS Bookstore Demo è solo un esempio di come puoi utilizzare database appositamente creati per creare un'applicazione full-stack scalabile e ad alte prestazioni, come una vetrina web. Se vuoi iniziare con questo stack come linea di base ma il tuo caso d'uso è più adatto a un database relazionale (come Amazon RDS), puoi invece modificare l'applicazione per utilizzarlo. Se vuoi sfruttare ElastiCache per la memorizzazione nella cache davanti ad alcuni degli altri componenti del database per migliorare le prestazioni, puoi aggiungere anche quello. In effetti, ti invitiamo a biforcare il nostro repo e modifica l'applicazione demo per esplorare le aree di cui vuoi saperne di più. Puoi sostituire i tipi di database, provare diversi componenti e caricare le tue risorse e i tuoi dati. Se sviluppi qualcosa di interessante che ritieni possa essere utile per gli altri, invia una richiesta pull in modo che possiamo estendere la demo.

Se la tua applicazione è molto diversa, ma stai ancora cercando un'applicazione full-stack di base su cui basarti, l'app demo di AWS Bookstore è basata su Modello completo di AWS (disponibile anche su GitHub ). Il modello AWS Full-Stack fornisce i servizi, i componenti e l'impianto idraulico di base necessari per far funzionare un'applicazione Web di base, facendoti risparmiare tempo e aiutandoti a concentrarti sui fattori di differenziazione della tua applicazione. Puoi basarti su AWS Full-Stack Template per creare qualsiasi applicazione tu abbia in mente, che si tratti di uno strumento per la prenotazione di viaggi, di un blog o di un'altra app Web. L'app demo di AWS Bookstore è solo un esempio di ciò che puoi creare utilizzando Modello completo di AWS .

La prossima volta che utilizzi un'applicazione, prova a immaginare quale database si trovi dietro le quinte. Molto probabilmente, ci sono diversi database (e altri servizi) che lavorano insieme per potenziare la tua esperienza. Se vuoi saperne di più e iniziare a costruire, prova una di queste applicazioni full-stack per un giro. Non vediamo l'ora di vedere cosa costruirai!

nascondere