Créez une application moderne avec des bases de données AWS spécialement conçues

Fourni par Services Web Amazon





L'époque des bases de données monolithiques à taille unique est révolue. Comme Werner Vogels, CTO et vice-président d'Amazon.com, mentionné, Il est rare qu'une base de données puisse répondre aux besoins de plusieurs cas d'utilisation distincts. Dans le passé, les applications Web étaient construites à l'aide de la pile LAMP (Linux, Apache, MySQL et PHP), où une seule base de données était utilisée pour de nombreuses expériences différentes. En revanche, les applications Web d'aujourd'hui de clients tels que Expedia, Airbnb et Capital One n'utilisez pas une seule base de données, ils utilisent plusieurs types de bases de données différents.

En effet, les développeurs construisent aujourd'hui des applications hautement distribuées en utilisant une multitude de bases de données spécialement conçues . En un sens, les développeurs font ce qu'ils font le mieux : diviser les applications complexes en plus petits éléments, ce qui leur permet de choisir le bon outil pour le bon travail.



Dans cet article de blog, nous discutons des bases de données spécialement conçues par AWS et de la manière de les utiliser pour créer des expériences riches pour vos clients. Nous passons également en revue un exemple détaillé de ces bases de données alimentant différentes expériences dans une application et fournissons les outils dont vous avez besoin pour faire tourner l'application par vous-même en quelques minutes.

Les clients d'AWS nous disent qu'ils souhaitent créer des applications évolutives, performantes et fonctionnelles qui ont des performances et des besoins commerciaux spécifiques. Au cours des dernières années, nous avons répondu à ces besoins des clients en introduisant de nouveaux services tels que Amazon Neptune pour les bases de données de graphes, Amazon Aurora pour des bases de données relationnelles de qualité commerciale entièrement gérées, ainsi qu'un ensemble de fonctionnalités en constante amélioration telles que Amazon Aurora sans serveur . À AWS re:Invent 2018, AWS annoncé plusieurs nouveaux ajouts et fonctionnalités à notre famille de bases de données spécialement conçues :

En janvier 2019, AWS a annoncé Amazon DocumentDB (avec compatibilité MongoDB). Avec ces ajouts, les développeurs Avoir le choix de bases de données relationnelles, de valeurs-clés, de documents, en mémoire, de recherche, de graphiques, de séries chronologiques et de grand livre pour s'adapter à leurs cas d'utilisation individuels. Chacune de ces bases de données est conçue pour être le bon outil pour le bon travail.



Comment les clients AWS utilisent des bases de données spécialement conçues

Comment les clients d'AWS exploitent-ils ensemble toutes ces bases de données spécialement conçues ? Lors d'AWS re:Invent 2018, nous avons présenté Bases de données sur AWS : le bon outil pour le bon travail . Au cours de cette session, nous avons expliqué comment les clients AWS utilisent ensemble différentes bases de données pour offrir des expériences riches de bout en bout à leurs clients.

Nous avons montré une démo dans la session qui fournit un exemple concret de la façon dont les clients créent des applications en utilisant une architecture spécialement conçue sur AWS. La démonstration décrit comment une vitrine Web (dans ce cas, une librairie) est construite sur plusieurs bases de données, chacune traitant un cas d'utilisation différent. Un clip de la démo suit, à partir de 21h43.

Comment traiter différents cas d'utilisation avec différentes bases de données spécialement conçues

Le clip précédent présentait une application de démonstration de librairie en ligne (voir la capture d'écran suivante). Comme pour toute application Web moderne et complète, cette application a plusieurs cas d'utilisation différents, y compris un catalogue de produits, une recherche de produits, une liste de best-sellers et des recommandations sociales.



image 1

Figure 1: Une capture d'écran de l'application de démonstration AWS Bookstore

Commençons par le cas d'utilisation du catalogue de produits. Lorsqu'un utilisateur accède à la vitrine Web de la librairie, il peut s'attendre à voir une liste de produits. Les produits contiennent généralement des identifiants et des attributs uniques tels que des descriptions, des quantités, des emplacements et des prix. D'un point de vue technique, la méthode de récupération de ces types d'attributs est souvent une recherche clé-valeur basée sur l'identifiant unique du produit. Cela signifie qu'une application peut récupérer ces autres attributs lorsque l'identifiant unique d'un produit est fourni. Ce cas d'utilisation rend Amazon DynamoDB parfaitement adapté en tant que système d'enregistrement durable pour le catalogue de produits de la librairie, car DynamoDB offre des performances rapides et prévisibles à n'importe quelle échelle pour les recherches de valeurs-clés. Avec DynamoDB, le catalogue de produits peut commencer avec quelques centaines de produits et s'étendre à des milliards de produits sans avoir à réorganiser ou à modifier les bases de données.

Le deuxième cas d'utilisation consiste à permettre aux clients de rechercher dans le catalogue de produits. Lorsque les clients viennent à la librairie, ils veulent localiser le produit qu'ils ont l'intention d'acheter ou parcourir le catalogue pour trouver leur prochaine grande lecture. Dans le monde d'aujourd'hui, les utilisateurs sont formés pour être efficaces dans les recherches par mots-clés afin de trouver ce qu'ils recherchent. Service Amazon Elasticsearch (Amazon ES) est une technologie de base de données qui répond à ces besoins des utilisateurs. Avec des fonctionnalités en langage naturel, une navigation à facettes et des résultats classés, Amazon ES aide les clients à trouver rapidement les articles qu'ils souhaitent dans le catalogue de produits.



L'application de librairie doit synchroniser le catalogue de produits (dans DynamoDB) avec l'index de recherche dans Amazon ES. Chaque fois qu'un produit est ajouté, mis à jour ou supprimé de la table des produits du catalogue dans DynamoDB, la modification doit également être reflétée dans l'index de recherche dans Amazon ES. Un moyen simple de le faire est d'utiliser Flux Amazon DynamoDB avec AWS Lambda pour mettre à jour de manière asynchrone l'index Amazon ES chaque fois qu'une modification est apportée au catalogue de produits dans DynamoDB.

Le troisième cas d'utilisation est une liste de best-sellers pour le catalogue de produits qui permettra aux utilisateurs de la librairie de voir quels sont les 20 meilleurs livres achetés. Pour cette expérience, la base de données idéale permet à la librairie de maintenir un classement sans avoir à effectuer de longues et coûteuses requêtes récapitulatives sur tous les achats chaque fois qu'un utilisateur actualise la page Web. Amazon ElastiCache pour Redis fournit exactement ce qui est nécessaire, y compris des structures de données intégrées en mémoire telles que des ensembles triés qui permettent à la librairie de créer rapidement et efficacement une liste de best-sellers. Pour le faire fonctionner, la librairie peut utiliser DynamoDB Streams (similaire au cas d'utilisation de la recherche de produits) à partir du tableau des commandes pour mettre à jour le dernier statut dans ElastiCache chaque fois qu'un nouvel article est acheté. Avec la liste des meilleures ventes disponible, la librairie peut également en afficher une partie sur la page d'accueil de son site Web. De plus, étant donné que les données sont en mémoire et disponibles via les ensembles triés intégrés, la librairie subira des latences de lecture de l'ordre de la microseconde pour les requêtes figurant sur la liste des meilleures ventes.

Le quatrième cas d'utilisation consiste à fournir des recommandations sociales pour aider les clients de la librairie à trouver un contenu plus adapté au contexte - dans ce cas, un contenu basé sur ce que leurs amis ont acheté. Étant donné que les recommandations sociales se trouvent sur la page d'accueil de la librairie et sur d'autres pages du site, les recommandations doivent être rapides. De plus, à mesure que le site Web se développe, la solution doit évoluer avec plus de produits, de pages et d'utilisateurs. Avec ces exigences, une base de données de graphes spécialement conçue, telle que Amazon Neptune est un choix naturel pour parcourir les liens dans les données, permettant des recommandations basées sur les connexions sociales et l'activité d'achat associée. Neptune fournit les fonctionnalités et les performances nécessaires dont nous avons besoin pour créer et exécuter rapidement des requêtes pour parcourir les relations de graphe, et il évoluera à mesure que le site Web (et l'application) se développera sans compromettre les performances.

Afin de récupérer et de mettre à jour toutes ces informations, la vitrine Web effectue une série d'appels d'API différents. Voici une vue de ce à quoi ressemble l'application dans le backend, en utilisant Amazon API Gateway et AWS Lambda :

image 2

Figure 2: Schéma d'architecture de l'application de démonstration AWS Bookstore

Pour cette application de librairie, nous avons évalué les principaux cas d'utilisation de l'application et choisi la meilleure base de données pour chaque cas d'utilisation. Les bases de données spécialement conçues vous permettent de créer des infrastructures backend évolutives, performantes et fonctionnelles pour alimenter vos applications, en traitant chaque cas d'utilisation avec le composant le plus approprié. En suivant cette approche, vous pouvez construire une architecture similaire avec vos propres ressources.

Mettez-le en marche

Chaque client qui crée une application Web doit passer par presque exactement le même processus de choix des composants, mais ce n'est que la moitié de la bataille. Peut-être plus important encore, après avoir choisi l'architecture souhaitée, ils doivent à chaque fois créer la pile à partir de zéro. Cela nous a fait réfléchir : pourquoi ne pas rendre l'architecture plus facile à construire ? Avec autant de clients passant par un processus très similaire, comment pouvons-nous simplifier cela ? Pour les clients qui sont encore en phase d'apprentissage ou d'exploration, comment pouvons-nous les aider à mettre en place une application complète en quelques minutes à l'aide de ces bases de données spécialement conçues ?

Pour répondre à ces questions, nous avons créé un seul AWS CloudFormation modèle pour automatiser la création de toute cette pile d'applications de démonstration de librairie, de bout en bout, en quelques minutes seulement. De plus, nous avons rendu tout le code source, les images et les exemples de données disponibles sur GitHub à déployer, explorer, modifier et étendre.

Image 3

Figure 3: Le référentiel de l'application de démonstration AWS Bookstore sur GitHub

Comme nous l'avons démontré lors de la session re:Invent, l'application AWS Bookstore Demo est une application fonctionnelle qui utilise quatre bases de données spécialement conçues pour fournir une expérience utilisateur puissante et fonctionnelle. Vous pouvez déployer l'application dans votre compte AWS en quelques clics à l'aide d'AWS CloudFormation (pour plus d'informations, consultez le fichier readme.md sur GitHub ). Une fois déployés dans votre compte, vous pouvez explorer les ensembles de données dans Amazon DynamoDB, Amazon Elasticsearch, Amazon ElastiCache pour Redis et Amazon Neptune. Le fichier readme.md comprend des étapes supplémentaires qui vous expliquent comment procéder étape par étape, ainsi que des commentaires sur la façon dont tout s'emboîte. Vous pouvez utiliser l'application comme bac à sable ou outil d'apprentissage pour explorer comment une architecture comme celle-ci s'intègre, ou comme modèle de départ pour créer votre propre application.

Que se passe-t-il si les exigences de ma candidature sont différentes ?

L'application de démonstration AWS Bookstore n'est qu'un exemple de la manière dont vous pouvez utiliser des bases de données spécialement conçues pour créer une application complète évolutive et hautes performances, telle qu'une vitrine Web. Si vous souhaitez commencer avec cette pile comme référence, mais que votre cas d'utilisation est plus adapté à une base de données relationnelle (comme Amazon RDS), vous pouvez modifier l'application pour l'utiliser à la place. Si vous souhaitez tirer parti d'ElastiCache pour la mise en cache devant certains des autres composants de la base de données afin d'améliorer les performances, vous pouvez également l'ajouter. En fait, nous vous encourageons à bifurquer notre dépôt et modifiez l'application de démonstration pour explorer les domaines sur lesquels vous souhaitez en savoir plus. Vous pouvez échanger les types de bases de données, essayer différents composants et charger vos propres ressources et données. Si vous développez quelque chose d'intéressant qui, selon vous, pourrait être utile à d'autres, veuillez soumettre une demande d'extraction afin que nous puissions étendre la démo.

Si votre application est assez différente, mais que vous recherchez toujours une application de base à pile complète sur laquelle construire, l'application de démonstration AWS Bookstore est construite au-dessus de Modèle de pile complète AWS (également disponible sur GitHub ). Le modèle AWS Full-Stack fournit les services, les composants et la plomberie de base nécessaires pour qu'une application Web de base soit opérationnelle, ce qui vous fait gagner du temps et vous aide à vous concentrer sur les différenciateurs de votre application. Vous pouvez vous appuyer sur AWS Full-Stack Template pour créer n'importe quelle application que vous envisagez, qu'il s'agisse d'un outil de réservation de voyage, d'un blog ou d'une autre application Web. L'application de démonstration AWS Bookstore n'est qu'un exemple de ce que vous pouvez créer à l'aide Modèle de pile complète AWS .

La prochaine fois que vous utiliserez une application, essayez d'imaginer quelle base de données se cache derrière les rideaux. Plus que probablement, plusieurs bases de données (et autres services) travaillent de concert pour alimenter votre expérience. Si vous voulez en savoir plus et commencer à construire, essayez l'une de ces applications complètes. Nous avons hâte de voir ce que vous construisez !

cacher