Fermer

septembre 6, 2018

Intégration de MongoDB et d'Amazon Kinesis pour des flux intelligents et durables –


Cet article a été publié à l'origine sur MongoDB . Nous vous remercions de soutenir les partenaires qui rendent SitePoint possible.

Vous pouvez créer vos charges de travail opérationnelles en ligne sur MongoDB tout en répondant aux événements en temps réel en lançant les actions de traitement de flux Amazon Kinesis Déclencheurs.

Examinons un exemple de scénario dans lequel un flux de données est généré suite aux actions que les utilisateurs effectuent sur un site Web. Nous stockons durablement les données et alimentons simultanément un processus Kinesis pour effectuer des analyses en continu sur des éléments tels que l’abandon de panier, les recommandations de produits ou même la détection de fraude par carte de crédit.

Lorsque des mises à jour de données pertinentes sont effectuées dans MongoDB, le déclencheur utilise une fonction de point pour appeler AWS Kinesis, comme vous pouvez le voir dans ce diagramme d'architecture:

Que faut-il suivre?

  1. Une instance d’Atlas
    Si vous n’avez pas déjà une application sur Atlas, vous pouvez suivre notre guide avec Atlas . Dans cet exemple, nous utiliserons une base de données appelée streamdata avec une collection appelée clickdata où nous écrivons des données à partir de notre application de commerce électronique basée sur le Web.
  2. Un compte AWS et un flux Kinesis
    Dans cet exemple, nous utiliserons un flux Kinesis pour envoyer des données en aval à des applications supplémentaires telles que Kinesis Analytics. Voici le flux auquel nous souhaitons intégrer nos mises à jour.
  3. Une application Stitch
    Si vous ne possédez pas déjà une application Stitch, connectez-vous à Atlas et cliquez sur Stitch Apps à partir de la navigation de gauche, puis cliquez sur Créer une nouvelle application .

Créer une collection

La ​​première étape consiste à créer une base de données et une collection à partir de la console d'application Stitch. Cliquez sur Rules dans le menu de navigation de gauche et cliquez sur le bouton Ajouter une collection . Tapez streamdata pour la base de données et clickdata pour le nom de la collection. Sélectionnez le modèle intitulé Users can ne lit et n'écrit que ses propres données et fournissez un nom de champ où nous spécifierons l'ID utilisateur.

 Figure 2. Créez une collection

Configuration de Stitch pour parler à AWS

Stitch vous permet de configurer Services pour interagir avec des services externes tels que AWS Kinesis . Choisissez Services dans la navigation de gauche, puis cliquez sur le bouton Ajouter un service sélectionnez le service AWS et définissez AWS ID de clé d'accès et clé d'accès secrète .

 Figure 3. Configuration du service dans Stitch

Les services utilisent Règles pour spécifier quel aspect d'un service Stitch peut utiliser, et Comment. Ajoutez une règle qui permettra à ce service de communiquer avec Kinesis en cliquant sur le bouton intitulé NOUVELLE RÈGLE. Nommez la règle «kinesis» car nous utiliserons cette règle spécifique pour permettre la communication avec AWS Kinesis. Dans la section marquée Action, sélectionnez l'API intitulée Kinesis et sélectionnez Toutes les actions.

 Figure 4. Ajoutez une règle pour permettre l'intégration à Kinesis

Écrivez une fonction qui diffuse des documents dans Kinesis

Avoir un service AWS opérationnel, nous pouvons l'utiliser pour placer des enregistrements dans un flux Kinesis. La façon dont nous faisons cela dans Stitch est avec Fonctions. Configurez une fonction putKinesisRecord .

Sélectionnez Fonctions dans le menu de gauche, puis cliquez sur Créer une nouvelle fonction. Donnez un nom à la fonction et collez le texte suivant dans le corps de la fonction.

 Figure 5. Exemple de fonction - putKinesisRecord

 exports = function (event) {
 const awsService = context.services.get ('aws');
essayer{
   awsService.kinesis (). PutRecord ({
     Données: JSON.stringify (event.fullDocument),
     StreamName: "stitchStream",
     Clé de partition: "1"
      }). alors (fonction (réponse) {
        réponse de retour;
      })
}
prise (erreur) {
  console.log (JSON.parse (erreur));
}
};

Tester la fonction

Veillons à ce que tout fonctionne en appelant cette fonction manuellement. A partir de l'éditeur de fonctions cliquez sur Console pour afficher la console javascript interactive pour Stitch.

Les fonctions appelées à partir de Triggers nécessitent un événement. Pour tester l'exécution de notre fonction, nous devons passer un événement factice à la fonction. La création de variables à partir de la console dans Stitch est simple. Définissez simplement la valeur de la variable sur un document JSON. Pour notre exemple simple, utilisez ce qui suit:

 event = {
   "operationType": "remplacer",
   "fullDocument": {
       "la couleur noire",
       "inventaire": {
           "$ numberInt": "1"
       },
       "présentation": "document de test",
       "prix": {
           "$ numberDecimal": "123"
       },
       "type": "sac à dos"
   },
   "ns": {
       "db": "streamdata",
       "coll": "clickdata"
   }
}
exportations (événement);

Collez le texte ci-dessus dans la console et cliquez sur le bouton intitulé Run Function As . Sélectionnez un utilisateur et la fonction s’exécutera.

Ta-da!

Assembler avec les déclencheurs de points

Notre collection MongoDB vit dans Atlas et reçoit des événements de notre application Web. Notre flux Kinesis est prêt pour les données. Nous avons une fonction de point qui peut placer des données dans un flux Kinesis.

Configurer les déclencheurs de points est si simple qu’il est presque anticlimatique. Cliquez sur Déclencheurs dans la navigation de gauche, nommez votre déclencheur, fournissez le contexte de base de données et de collection et sélectionnez les événements de base de données auxquels Stitch va réagir lors de l'exécution d'une fonction.

noms de la première étape. Maintenant, nous allons définir les opérations que nous voulons regarder avec notre déclencheur. (Certains déclencheurs peuvent se soucier de tous – insertions, mises à jour, suppressions et remplacements – alors que d’autres peuvent être plus efficaces car ils ne peuvent logiquement que pour certains.) Dans notre cas, nous allons surveiller l’insertion,

Maintenant, nous spécifions notre fonction putKinesisRecord comme fonction liée et nous avons terminé.

 Figure 6. Configuration du déclencheur dans le point "width =" 1430 " height = "928" class = "aligncenter size-full wp-image-168431

Dans le cadre de l'exécution du déclencheur, Stitch transmettra les détails associés à l'événement déclencheur, y compris le document complet impliqué dans l'événement Document nouvellement inséré, mis à jour ou supprimé de la collection.) C'est ici que nous pouvons évaluer une condition ou un attribut du document entrant et décider de placer ou non l'enregistrement dans un flux.

Tester le déclencheur!

Amazon fournit un tableau de bord qui vous permettra de voir les détails associée aux données entrant dans votre flux.

 Figure 7. Kinesis Stream Monitoring "width =" 1878 "height =" 1021 "class =" aligncenter size-full wp-image-168432

Au fur et à mesure que vous exécutez la fonction depuis Stitch, vous commencez à voir les données qui entrent dans le flux Kinesis.

Construire plus de fonctionnalités

Jusqu'à présent, notre déclencheur est assez basique: il surveille une collection , il alimente l'intégralité du document vers notre flux Kinesis. De là, nous pouvons développer des fonctionnalités plus intelligentes. Pour terminer cet article, voyons ce que nous pouvons faire avec les données stockées durablement dans MongoDB et placées dans un flux.

Une fois que l’enregistrement se trouve dans Kinesis Stream, vous pouvez configurer des services supplémentaires en aval pour agir sur le flux. Les données. Un cas d'utilisation courant incorpore Amazon Kinesis Data Analytics pour effectuer des analyses sur les données en continu. Amazon Kinesis Data Analytics propose des modèles préconfigurés pour effectuer des tâches telles que la détection d'anomalies, des alertes simples, des agrégations, etc.

Par exemple, notre flux de données contiendra des commandes résultant d'achats. Ces commandes peuvent provenir de systèmes de point de vente, ainsi que de notre application de commerce électronique basée sur le Web. Kinesis Analytics peut être utilisé pour créer des applications qui traitent le flux de données entrant. Pour notre exemple, nous pourrions construire un algorithme d'apprentissage automatique pour détecter des anomalies dans les données ou créer un classement de performance produit à partir d'une fenêtre de données glissante ou

 Figure 8. Amazon Data Analytics - Exemple de détection d'anomalie "width =" 1203 "height =" 676 "class =" aligncenter size-full wp-image-168433

Conclusion [19659017] Maintenant, vous pouvez connecter MongoDB à Kinesis. À partir de là, vous pouvez exploiter l'un des nombreux services proposés par Amazon Web Services pour développer votre application. Dans notre prochain article de la série, nous nous concentrerons sur le retour des données de Kinesis dans MongoDB. En attendant, laissez-nous savoir ce que vous construisez avec Atlas, Stitch et Kinesis!

Ressources

Atlas MongoDB

Point MongoDB

Amazon Kinesis




Source link