View a markdown version of this page

Scénario 3 : préparation des données de parcours de navigation pour les processus d'informations sur les données - Solutions de données de streaming sur AWS avec Amazon Kinesis

Scénario 3 : préparation des données de parcours de navigation pour les processus d'informations sur les données

Fast Sneakers est une boutique de mode spécialisée dans la vente de baskets tendance. Le prix d'une paire de chaussures donnée peut augmenter ou diminuer en fonction des stocks et des tendances, comme par exemple le fait qu'une vedette ou une star du sport portant des baskets d'une marque donnée a été vue à la télévision hier soir. Pour Fast Sneakers, il est important de suivre et d'analyser ces tendances afin d'optimiser ses revenus.

Fast Sneakers ne souhaite pas ajouter de frais généraux supplémentaires au projet avec de nouvelles infrastructures à gérer. Elle veut pouvoir répartir le développement entre les parties concernées, afin que les ingénieurs de données se concentrent sur la transformation des données et que les scientifiques des données travaillent sur leur fonctionnalité ML de manière indépendante.

Pour réagir rapidement et ajuster automatiquement les prix en fonction de la demande, Fast Sneakers diffuse des événements importants (comme les données liées à l'intérêt selon le nombre de clics ou les données d'achat) en transformant et en augmentant les données d'événement et en les transmettant à un modèle de ML. Leur modèle de ML est en mesure de déterminer si un ajustement de prix est nécessaire. Cela permet à Fast Sneakers de modifier automatiquement ses prix afin d'optimiser les profits sur ses produits.

Ajustements de prix en temps réel chez Fast Sneakers

Ajustements de prix en temps réel chez Fast Sneakers

Ce diagramme d'architecture montre la solution de streaming en temps réel que Fast Sneakers a créée à l'aide de Kinesis Data Streams, de AWS Glue et de DynamoDB Streams. En tirant parti de ces services, ils disposent d'une solution élastique et fiable qui ne nécessite aucune mise en place ni maintenance de l'infrastructure de support. Ils peuvent consacrer du temps à ce qui apporte de la valeur à leur entreprise en se concentrant sur les tâches d'extraction, de transformation, de chargement (ETL) en streaming et sur leur modèle de Machine Learning.

Pour mieux comprendre l'architecture et les technologies utilisées dans leur charge de travail, voici quelques détails des services utilisés.

AWS Glue et AWS Glue streaming

AWS Glue est un service ETL entièrement géré que vous pouvez utiliser pour cataloguer vos données, les nettoyer, les enrichir et les déplacer de manière fiable entre des magasins de données. Avec AWS Glue, vous pouvez réduire considérablement le coût, la complexité et le temps passé à créer des tâches ETL. AWS Glue est sans serveur ; il ne nécessite donc aucune infrastructure à configurer ou à gérer. Vous payez uniquement pour les ressources consommées pendant l'exécution de vos tâches.

En utilisant AWS Glue, vous pouvez créer une application consommateur avec une tâche ETL AWS Glue en streaming. Cela vous permet d'utiliser Apache Spark et d'autres modules d'écriture basés sur Spark pour consommer et traiter vos données d'événement. La section suivante de ce document traite plus en détail de ce scénario.

AWS Glue Data Catalog

Le AWS Glue Data Catalog contient les références aux données utilisées en tant que sources et cibles de vos tâches ETL dans AWS Glue. Le AWS Glue Data Catalog est un index de la localisation, du schéma et des métriques d'exécution de vos données. Les informations du catalogue de données vous permettent de créer et de surveiller vos tâches ETL. Les informations contenues dans le catalogue de données sont stockées en tant que tables de métadonnées, chaque table spécifiant un magasin de données unique. En configurant un analyseur, vous pouvez évaluer automatiquement de nombreux types de magasin de données, notamment les magasins connectés DynamoDB, S3 et Java Database Connectivity (JDBC), extraire des métadonnées et des schémas, puis créer des définitions de table dans le AWS Glue Data Catalog.

Pour utiliser Amazon Kinesis Data Streams dans le cadre de tâches ETL AWS Glue en streaming, il est recommandé de définir votre flux dans une table au sein d'une base de données AWS Glue Data Catalog. Vous définissez une table basée sur un flux avec le flux Kinesis, un des nombreux formats pris en charge (CSV, JSON, ORC, Parquet, Avro ou un format client avec Grok). Vous pouvez entrer manuellement un schéma ou ignorer cette étape et laisser votre tâche AWS Glue le déterminer pendant l'exécution du travail.

Tâche ETL en streaming dans AWS Glue

AWS Glue exécute vos tâches ETL dans un environnement sans serveur Apache Spark. AWS Glue exécute ces tâches sur des ressources virtuelles qu'il alloue et gère dans son propre compte de service. En plus de pouvoir exécuter des tâches basées sur Apache Spark, AWS Glue offre un niveau de fonctionnalité supplémentaire en plus de Spark avec les DynamicFrames.

Les DynamicFrames sont des tables distribuées qui prennent en charge les données imbriquées telles que les structures et les tableaux. Chaque enregistrement est auto-descriptif, conçu pour une flexibilité de schéma avec des données semi-structurées. Un enregistrement dans une DynamicFrame contient à la fois des données et le schéma décrivant les données. Apache Spark DataFrames et DynamicFrames sont tous deux pris en charge dans vos scripts ETL et peuvent être convertis dans les deux sens. Les DynamicFrames fournissent un ensemble de transformations avancées pour le nettoyage des données et les tâches ETL.

En utilisant Spark Streaming dans votre tâche AWS Glue, vous pouvez créer des tâches ETL en streaming qui s'exécutent en continu et consommer des données provenant de sources de streaming telles qu'Amazon Kinesis Data Streams, Apache Kafka et Amazon MSK. Les tâches peuvent nettoyer, fusionner et transformer les données, puis charger les résultats dans des magasins, notamment des magasins de données Amazon S3, Amazon DynamoDB ou JDBC.

Par défaut, AWS Glue traite et écrit les données dans des fenêtres de 100 secondes. Cela permet de traiter les données efficacement et d'effectuer des agrégations sur les données qui arrivent plus tard que prévu. Vous pouvez configurer la taille de la fenêtre en l'ajustant pour tenir compte de la vitesse de réponse par rapport à la précision de votre agrégation. Les tâches de streaming AWS Glue utilisent des points de contrôle pour suivre les données qui ont été lues à partir du Kinesis Data Stream. Pour obtenir une procédure pas à pas de création d'une tâche ETL en streaming dans AWS Glue, vous pouvez vous référer à Ajout de tâches ETL en streaming dans AWS Glue

Amazon DynamoDB

Amazon DynamoDB est une base de données clé-valeur et de documents offrant des performances de latence de l'ordre de quelques millisecondes, quelle que soit l'ordre de grandeur. Il s'agit d'une base de données multi-région, multi-active et durable entièrement gérée, avec des systèmes intégrés de sécurité, de sauvegarde, de restauration et de mise en cache en mémoire pour les applications à l'échelle d'Internet. DynamoDB peut traiter plus de dix mille milliards de demandes par jour et supporte des pics de 20 millions de demandes par seconde.

Modifier la capture des données pour DynamoDB

Un flux DynamoDB est un flux ordonné d'informations sur les modifications apportées aux éléments dans une table DynamoDB. Lorsque vous activez un flux sur une table, DynamoDB capture des informations sur chaque modification apportée à des éléments de données dans la table. DynamoDB s'exécute sur AWS Lambda afin que vous puissiez créer des déclencheurs, éléments de code qui répondent automatiquement à des événements dans DynamoDB Streams. Les déclencheurs vous permettent de créer des applications qui réagissent aux modifications de données dans les tables DynamoDB.

Lorsqu'un flux est activé sur une table, vous pouvez associer le flux Amazon Resource Name (ARN) à une fonction Lambda que vous écrivez. Immédiatement après la modification d'un élément dans la table, un nouvel enregistrement apparaît dans le flux de la table. AWS Lambda interroge le flux et appelle votre fonction Lambda quand il détecte de nouveaux enregistrements de flux.

Amazon SageMaker et points de terminaison de service Amazon SageMaker

Amazon SageMaker est une plateforme entièrement gérée qui permet aux développeurs et aux scientifiques des données de créer, d'entraîner et de déployer des modèles de ML rapidement et à n'importe quelle échelle. SageMaker incluent des modules qui peuvent être utilisés conjointement ou indépendamment pour créer, entraîner et déployer vos modèles de ML. Avec les points de terminaison de service Amazon SageMaker, vous pouvez créer un point de terminaison hébergé géré pour une inférence en temps réel avec un modèle déployé que vous avez développé au sein ou en dehors d'Amazon SageMaker.

Avec le kit SDK AWS, vous pouvez invoquer un point de terminaison SageMaker en transmettant des informations sur le type de contenu avec celui-ci, puis recevoir des prédictions en temps réel basées sur les données transmises. Cela vous permet de séparer la conception et le développement de vos modèles de ML du code qui exécute des actions sur les résultats déduits.

Cela permet à vos scientifiques des données de se concentrer sur le ML et aux développeurs qui utilisent le modèle de ML de se concentrer sur la façon dont ils l'utilisent dans leur code. Pour de plus amples informations sur la façon d'appeler un point de terminaison dans SageMaker, veuillez consulter InvokeEnpoint dans le document Amazon SageMaker API Reference.

Déduction d'informations sur les données en temps réel

Le schéma d'architecture précédent montre que l'application Web existante de Fast Sneakers a ajouté un flux de données Kinesis contenant des événements de flux de clics, qui fournit des données sur le trafic et les événements du site Web. Le catalogue des produits, qui contient des informations telles que la catégorisation, les attributs et le prix de chaque produit, et le tableau des commandes, qui contient des données telles que les articles commandés, la facturation, l'expédition, etc., sont des tables DynamoDB distinctes. La source de flux de données et les tables DynamoDB appropriées ont leurs métadonnées et leurs schémas définis dans le AWS Glue Data Catalog pour être utilisés par la tâche ETL en streaming AWS Glue.

En utilisant Apache Spark, le streaming Spark et DynamicFrames dans leur tâche ETL en streaming AWS Glue, Fast Sneakers est capable d'extraire des données d'un des flux de données et de les transformer, en fusionnant les données des tables des produits et des commandes. Avec les données hydratées de la transformation, les jeux de données permettant d'obtenir des résultats d'inférence sont soumis à une table DynamoDB.

Le flux DynamoDB de la table déclenche une fonction Lambda pour chaque nouvel enregistrement écrit. La fonction Lambda envoie les enregistrements précédemment transformés à un point de terminaison SageMaker avec le kit SDK AWS de manière à déduire, le cas échéant, les ajustements de prix nécessaires pour un produit. Si le modèle de ML identifie qu'un ajustement de prix est requis, la fonction Lambda écrit la modification de prix sur le produit dans la table DynamoDB du catalogue.

Récapitulatif

Amazon Kinesis Data Streams facilite la collecte, le traitement et l'analyse de données de streaming en temps réel, afin d'obtenir rapidement des informations stratégiques et de réagir rapidement. En combinaison avec le service d'intégration de données AWS Glue sans serveur, vous pouvez créer des applications de streaming d'événements en temps réel qui préparent et combinent des données pour le ML.

Étant donné que Kinesis Data Streams et les services AWS Glue sont entièrement gérés, AWS supprime la lourde charge de travail indifférenciée liée à la gestion de l'infrastructure de votre plateforme big data. Cela vous permet de vous concentrer sur la génération d'informations sur les données basées sur vos données.

Fast Sneakers peut utiliser le traitement des événements en temps réel et le ML pour permettre à son site Web d'effectuer des ajustements de prix en temps réel entièrement automatisés et ainsi, optimiser leur stock de produits. Cela apporte une valeur importante à leur entreprise tout en évitant d'avoir à créer et à maintenir une plateforme de big data.