Comment concevoir l’architecture d’une plateforme de Matchmaking dans Azure ?
Maxime Villeger
Cloud Solution Architect
Quentin Brasseur
Cloud solution Architect
Retour vers le futur
Certains besoins de l’Homme peuvent traverser le temps. Hier comme aujourd’hui, nous avons toutes et tous besoin de rencontrer d’autres personnes afin de nous développer socialement, de trouver du travail, ou même de développer une activité commerciale.
En revanche, l’évolution des technologies change radicalement la manière avec laquelle nous interagissons avec notre environnement. Actuellement, beaucoup de nos interactions passent par des applications, prenant ainsi le dessus sur le bouche-à-oreille que nous connaissions. Un exemple de cette évolution est la multiplication des avis utilisateur, allant même par exemple jusqu’à noter… l’océan Atlantique !
De plus, nous cherchons en permanence la meilleure expérience possible. Quoi de mieux dans ce nouveau monde que de pouvoir trouver des services, des biens, des personnes en fonction de nos centres d’intérêts et de notre position ?
L’arrivée des smartphones et du cloud ont grandement contribué au développement de ces applications. En effet, elles composent la plus grande partie de notre parc applicatif : application de rencontre, d’agrégation d’information, de covoiturage, de chauffeur privé … Ce type d’applications de mise en relation sont connues sous le nom d’applications de Matchmaking.
Vous-êtes-vous déjà demandé comment concevoir l’architecture d’une telle plateforme sur Azure ?
Qu’est-ce qu’une application de Matchmaking ?
Définissons tout d’abord les caractéristiques essentielles d’une application de Matchmaking :
- Nous souhaitons pouvoir trouver des éléments correspondant à nos centres d’intérêts
- Nous souhaitons pouvoir trouver des éléments proches de notre position
En effet, l’élément essentiel pour une application de Matchmaking est sa capacité à proposer des éléments proches de l’utilisateur en prenant en compte ses centres d’intérêts. Ces éléments peuvent être de différentes natures :
- Des personnes (application de rencontres)
- De l’information (application d’agrégation de contenu)
- Des biens (application de ventes/locations de biens)
Aujourd’hui, les applications de Matchmaking peuvent répondre à tous types de besoins. Elles sont utilisées au quotidien par le grand public, par exemple pour se faire livrer son repas, trouver son logement lors d’un voyage, trouver un médecin…
Comment créer une application de Matchmaking dans Azure ?
Rappelons les différents objectifs à remplir afin de créer une application de Matchmaking :
- Capter la position de l’utilisateur
- Capter les centres d’intérêts de l’utilisateur
- Créer et mettre un jour le profil d’un utilisateur
- Stocker ses informations dans une base de données
Afin de garantir la meilleur expérience utilisateur possible, cette application devra être performante et hautement disponible.
Ces plateformes sont très utilisées grâce notamment aux évolutions technologiques de cette dernière décennie. Aujourd’hui, les smartphones ont non seulement un accès à internet, mais aussi à la position GPS de l’utilisateur, ce qui permet de proposer de nombreux services en retour. De plus, ces plateformes répondent parfaitement aux critères d’applications orientées événements.
L’utilisateur va communiquer avec une API App, dont le rôle est de gérer les mécanismes d’authentification et de rediriger les requêtes utilisateurs vers les bonnes fonctions.
Les Azure Functions ont-elles pour but de gérer et mettre à jour en temps réel les actions de l’utilisateur :
- La fonction « User Management » a pour but de gérer l’utilisateur : son nom, son prénom, sa photo de profil…
- La fonction « Center Of Interest » a pour but de renseigner les centres d’intérêts de l’utilisateur : ses goûts, ses passions…
- La fonction « Location » a pour but de gérer la position géographique de l’utilisateur : sa latitude, sa longitude
Une base de données de type Cosmos DB permet de stocker toutes ces informations.
Qu’en est-il de la sécurité ?
Cette application traite des données utilisateurs telles que ses informations personnelles, sa position… Pour ce qui est de la donnée en elle-même, Azure offre un chiffrement des données au repos dans Cosmos DB. De plus, l’API App permet de gérer l’authentification et la vérification de l’utilisateur. Pour se faire, les clefs sont gérées au sein de l’application mobile et utilisées pour reconnaître un couple utilisateur/device.
Maintenant que la position et les centres d’intérêts de l’utilisateur sont stockées en base, il faut désormais lui faire des propositions pertinentes.
Cependant, avant de voir la suite de l’architecture, étudions une fonction essentielle au bon fonctionnement de notre application : le « Change Feed » de Cosmos DB.
Qu’est-ce que le Change Feed ?
Dans Azure Cosmos DB, il existe une fonctionnalité particulière : le Change Feed. Elle permet de lister les modifications apportées à la base elle-même. Ce mécanisme permet d’avoir accès à la liste des documents modifiés dans l’ordre chronologique des événements. Cela permet de traiter ces modifications de manières asynchrone et incrémentielle afin de faire du traitement parallèle. Le but du Change Feed est d’utiliser ces modifications afin de déclencher des actions, par exemple :
- Déclanchement d’une notification ou d’un appel API lorsqu’un élément est inséré ou modifié (c’est ce qui va nous intéresser pour notre application)
- Traitement du flux de données en temps réel pour des scénarios d’IoT ou d’analyse de données opérationnelles en temps réel
- Déplacement de données via une synchronisation à un cache, ou alors l’archivage des données dans un stockage à froid
Grâce à cette fonctionnalité, nous allons pouvoir, pour chaque modification de la position de notre utilisateur, activer le mécanisme de Matchmaking. Il sera porté, tout comme la captation des données utilisateurs, par une Azure Functions.
En effet, nous allons brancher une fonction à ce Change Feed. Cette fonction est activée lorsque l’utilisateur bouge ou de manière moins régulière, lorsqu’il modifie ses centres d’intérêts. Le but de cette fonction est de mettre en relation les centres d’intérêts et la position de l’utilisateur aux éléments que nous souhaitons lui proposer (personnes, informations …).
Prenons l’exemple d’un site de rencontre
Le but d’une application de rencontre est de proposer un profil utilisateur à un autre utilisateur se trouvant dans la même zone géographique et partageant ses centres d’intérêts.
Regardons alors ce que devient notre application :
Le mécanisme est le suivant :
- L’utilisateur change ses centres d’intérêts ou sa position, apportant des modifications dans la base Cosmos DB et stockées dans le Change Feed.
- Une Azure Functions, « Find Match » est activée et propose ensuite des personnes partageant les centres d’intérêts de l’utilisateur. C’est ici que repose le cœur de l’application de Matchmaking.
- Un Notification Hub notifie les deux utilisateurs ayant matchés.
La suite du mécanisme dépendra des interactions que vous souhaitez créer entre les utilisateurs. Pour une application de rencontre, il est possible de partager les informations des utilisateurs pour qu’ils puissent se rencontrer ou alors ouvrir un canal de messagerie entre eux.
Cependant, si nous sommes dans le cas d’une application d’agrégation d’informations, le but sera de fournir les liens des articles adaptés à la position et aux centres d’intérêts de notre utilisateur.
Rappelons-nous que l’application doit pouvoir supporter des millions d’utilisateurs. Elle repose donc sur des composants pouvant assumer sa montée en charge et sa disponibilité : Azure Functions et Cosmos DB.
En Résumé …
Les applications de Matchmaking sont multiples et variées : rencontre de personnes, agrégation d’informations, proposition de lieux de sorties … Cependant, ces dernières reposent toutes sur la même base architecturale. La valeur repose donc sur la donnée exploitée et l’algorithme de Matching.
Cette architecture événementielle repose sur différent composants et services : le Change Feed de Azure Cosmos DB et les Azure Functions.
Vous avez désormais les bases nécessaires à la conception de l’architecture d’une application de Matchmaking adaptée au Cloud.
Venez découvrir Azure et ses possibilités afin d’innover et disrupter votre marché !
Et vous, have you ever wondered… ?
- Episode 1 de la saga “Have You Ever Wondered?”: Comment concevoir une application de VOD sur Azure ?
- Episode 2 de la saga “Have You Ever Wondered?”: Comment créer une application de messagerie instantanée sur Azure ?
Liste des produits utilisés :
- Azure Traffic Manager: Azure Traffic Manager est un load balancer base sur le DNS permettant alors de distribuer le trafic de façon optimal et global tout en gardant la haute disponibilité et les performances.
- Azure Functions: Azure Functions est une solution serverless pour faire tourner de petite partie de code, ou fonctions, dans le cloud.
- Azure Cosmos DB: Azure Cosmos DB est le service de base de données multimodale ayant une distribution mondiale.
- Azure Mobile App: Azure Mobile App est un service manager offrant aux développeurs et aux intégrateurs systèmes une plateforme de développement d’application mobile.
- Azure API App: permet de gérer (get/post) des API dans le cloud dans différents langages.
- Azure Notification Hub: est un moteur de notification push manager prenant en charge tous les types d’OS.
- Azure Key Vault: HSM manager dans le cloud.
- Azure Active Directory: Annuaire d’identité permettant de gérer les identités et les accès utilisateurs.