Dans cet article je vous présente comment Azure Event Grid peut vous aider à créer facilement des applications avec les architectures basées sur des événements.

Tout d’abord, qu’est ce qu’Azure Event Grid ? C’est tout simplement un service Azure Paas d’événements. Il permet notamment de connecter des applications entre elles pour qu’elles puissent inter-communiquer dans un environnement distribué. Il est donc possible de dissocier les composants de l’application tout en tenant compte de son évolutivité, de sa maintenance et de son extensibilité.

Azure Event Grid peut être décrit comme un canal d’événements ayant d’une part plusieurs éditeurs (Ecriture) mais aussi des abonnés d’événements (Lecture).

Message Vs Evénement, comment les appréhender ?

Dans le cadre d’une architecture basée sur des événements, nous distinguons deux types d’intégration de données : 

  1. Premier cas d’intégration, la messagerie qui traduit une intention. Prenons l’exemple d’un achat en ligne, pour passer de la commande au système qui va la traiter, nous nous attendons à ce que le système de réception gère la commande et s’assure que la commande est livrée. Pour le système de messagerie, nous utiliserons un service tel que Azure Service Bus, qui gère des tâches ( par exemple la livraison commandée et garantie).
  2. Le deuxième cas concerne les événements. Ici, ce qui est transmis est un fait, cela indique que quelque chose s’est produit. Les événements peuvent également être divisés en deux catégories :
    • La première est constituée d’événements en série, c’est un flux d’événements d’un seul bloc. Par exemple les lectures de télémétrie à partir d’un appareil IoT ou encore la journalisation d’événements à partir de notre application. Ce type d’événements peut être géré dans Azure Event Hubs, un magasin d’événements en continu.
    • La deuxième est constituée d’événements discrets, dont nous discuterons dans cet article. Les événements discrets sont indépendants et signalent un type de changement d’état. Par exemple, si nous avons créé une facture pour notre commande, un événement peut indiquer que la facture a été placée sur un compte de stockage. Les événements discrets peuvent être utilisés pour lancer une action sans indiquer le type d’action attendu. Chaque système qui reçoit un événement discret décidera lui-même du type d’action à entreprendre. Dans Azure, nous utilisons Event Grid pour gérer ce type d’événements.

 

 

Azure Event Grid, comment ça marche ?

Annoncé le 16 août 2017, Event Grid est le service de routage d’événements entièrement géré par Azure, ce qui simplifie grandement le développement de solutions événementielles. En tant que service véritablement Serverless, Event Grid fournit des événements en temps quasi réel, évolutifs et fiables, dans lesquels vous ne payez que pour le nombre d’événements traités.

Event Grid est un service agnostique; que le producteur ou le consommateur soit sur azure ou pas, peu d’importance, car ce n’est que du webhook http à implémenter pour l’exploiter.

En regardant Azure Event Grid, nous pouvons identifier plusieurs composants utilisés conjointement pour créer un système de gestion des événements de bout en bout. Dans un premier temps, la présence d’un événement nous indique qu’il s’est passé quelque chose. Ensuite, ce sont les sources d’événements (nous les appelons “producteurs”) qui envoient les événements dont on vient de parler.

Les événements sont envoyés dans une Topic qui est un point de terminaison (Endpoint) Event Grid. Ce dernier utilise ensuite les abonnements aux événements (Event Subscriptions) pour déterminer l’endroit où l’événement doit être envoyé. Ces abonnements aux événements peuvent également inclure des filtres. Ils peuvent être mis sur le préfixe ou le suffixe de l’objet défini dans l’événement.

Enfin, l’événement est envoyé à un ou plusieurs gestionnaires d’événements (event handlers), qui représentent les systèmes. Ces derniers vont le récupérer et effectuer du traitement et ou de l’action.

 

 

Quels scénarios pour Azure Event Grid ?

Comme déjà dit, Event Grid s’intègre facilement dans de nombreuses architectures sans serveur (Serverless). En utilisant des gestionnaires d’événements (event handlers) sans serveur tels que Azure Functions et Logic Apps, nous pouvons effectuer un traitement des événements hautement évolutif, en exploitant la véritable puissance d’une architecture sans serveur.

Azure Event Grid fournit plusieurs fonctionnalités qui améliorent considérablement le travail sans serveur, l’automatisation des opérations et l’intégration :

💡 Event Grid relie les sources de données et les gestionnaires d’événements (event handlers). Par exemple, utilisez Event Grid pour déclencher une Azure Function serverless qui analyse les images lorsqu’elles sont ajoutées à un Azure storage d’objets blob.

💡 Event Grid vous permet d’accélérer l’automatisation et de simplifier l’application des règles. Par exemple, utilisez Event Grid pour notifier Azure Automation lorsqu’une machine virtuelle ou une base de données SQL est créée. Vous pouvez aussi utiliser les événements pour vérifier automatiquement que les configurations de service sont conformes, insérer des métadonnées dans des outils d’opération, étiqueter des machines virtuelles ou bien encore définir des éléments de travail de fichier.

💡 Event Grid connecte votre application à d’autres services. Par exemple, créez une Topic personnalisée (custom topic) pour envoyer les données d’événement de votre application vers Event Grid et tirer parti de sa diffusion fiable, de son routage avancé et de son intégration directe à Azure. Ou bien, vous pouvez utiliser Event Grid avec Logic Apps pour traiter des données n’importe où, sans  écrire du code.

 

L’implémentation d’un exemple de solution

Maintenant que nous savons ce qu’est Event Grid et comment nous pouvons l’utiliser dans nos propres scénarios, voyons comment implémenter un exemple de solution. Il est facile d’explorer Event Grid via les modèles fournis dans le portail Azure pour chaque service. Dans cet exemple, nous utilisons l’un de ces modèles pour définir automatiquement une règle de rétention sur un blob. Une fois créé, il est automatiquement supprimé après un certain temps.

Commençons par ouvrir le portail Azure et créez un compte de stockage Azure Storage :

 

Une fois le compte de stockage créé, accédez au panneau “Evénements”. Dans cet écran, nous verrons plusieurs modèles pour démarrer rapidement avec Event Grid. Nous choisirons l’onglet “Logic Apps” et sélectionnerons le modèle “When a new blob is uploaded”.

 

 

Cela va créer une nouvelle Logic Apps, spécifiez maintenant les connexions au stockage d’Azure Storage Blob et à Event Grid. Cliquez sur le bouton “Créer” pour le connecteur Blob Storage, spécifiez un nom et sélectionnez le compte que nous venons de créer.

 

 

Ensuite, cliquez sur le bouton “Connexion” pour Event Grid et connectez-vous à votre compte. Cliquez sur “Continuer” une fois terminé. La Logic Apps va maintenant charger un flux qui consiste à attendre 30 jours pour supprimer le fichier qui a déclenché l’exécution (Run). Vous pouvez, bien entendu, adapter toute action du workflow à votre besoin si vous le souhaitez.

 

 

Enregistrez la Logic Apps et accédez au service d’abonnements (Subscriptions) Event Grid du portail. Assurez-vous que le filtre est correctement défini et vous devriez voir l’abonnement que vous venez de créer. La Topic d’Event Grid est définie sur le compte de stockage (Azure Storage) et le point de terminaison (Event Handlers) est sur Logic Apps précédemment créé.

 

 

Pour tester l’intégration, revenez au stockage de blob que nous venons de créer. Vous pouvez ajouter, ouvrir un nouveau conteneur et télécharger un fichier.

 

 

Accédons maintenant au service Logic Apps et ouvrons-le. Vous remarquerez qu’une nouvelle instance de Logic Apps est maintenant en cours d’exécution. Cette Logic Apps continuera à s’exécuter jusqu’à la fin de la période prédéfinie (30 jours pour ce cas). Plus tard, le fichier sera supprimé du Blob Storage.

 

 

Pour conclure

Dans cet article j’ai tenu à vous éclaircir les notions de base des solutions basées sur les événements. Il s’agit d’une architecture hautement évolutive et résiliente, avec une communication en temps quasi réel. Nous utilisons tous des événements dans nos architectures d’intégration, nous constatons ici à quel point Event Grid facilite leur intégration dans nos solutions !

Je vous invite donc vivement à bien vous y mettre.

Dans mon prochain article je vais démystifier les bonnes pratiques de la plateforme d’intégration Azure Logic Apps que vous devriez maîtriser pour faire face aux enjeux quotidiens comme :

  • le traitement des données volumineuses,
  • le traitement des exceptions,
  • mais aussi le traçage et l’outrepassement des limitations des connecteurs.