Medium medecindirect.fr
Jan 2 · 3 min read

CONTEXTE

Dans le cadre de notre mission chez MédecinDirect, nous avons décidé de mettre en place une politique data-driven. Pour cela, nous avons la nécessité de créer un Data Lake afin de :

  • Centraliser les données provenant de différentes sources d’informations
  • Faciliter la mise en relation de ces données
  • Dégager des nouvelles perspectives à partir du croisement de l’information
  • Prédire différents éléments concernant l’utilisation de la plateforme

OBJECTIF

Le premier problème était de récupérer les données des différentes sources tout en garantissant la qualité des données et éviter une redondance sur l’information stockée, ce qui augmenterait les coûts inutilement.

PROBLÈMES

Il y a principalement deux façons de récupérer une information de l’extérieur : - Une API - Un webhook Le problème avec les APIs est qu’afin de mettre à jour nos données, il faut continuellement les appeler pour récupérer les modifications et les nouvelles données. Ceci sous-entend déjà qu’il y a moyen de récupérer les données par date de mise à jour. De plus nous n’avons pas non plus la certitude qu’au moment de l’appel, des nouvelles données ont été mises à jour depuis la dernière vérification.

SOLUTIONS

Le principe d’un webhook est que lorsqu’une nouvelle donnée est générée (ou modifiée), un événement se déclenche (le webhook) et transmet cette nouvelle donnée au destinataire défini au préalable.

Pour réaliser cela, nous nous basons sur plusieurs outils très pratiques de Amazon Web Services: API Gateway et les Lambda functions.

Le principe est de créer une route sur API Gateway qui va être appelée par le webhook lors de la création d’une nouvelle donnée, cette route API va à son tour appeler une Lambda function qui va se charger d’enregistrer la donnée dans la data warehouse (AWS RDS dans notre cas).

La Lambda function en profite pour faire un pré processing/nettoyage des données avant de les stocker.

L’intérêt d’avoir une infrastructure de type serverless est :

  • La diminution des coûts, car on ne paye que ce qu’on utilise
  • La sécurité matériel, car toute l’infrastructure est gérée par AWS
  • Pouvoir se focaliser uniquement sur le code

Concernant la comparaison entre les Lamba functions de AWS, Azure Functions de Microsoft et les Cloud Functions de Google, presque toutes les comparaisons concluent que :

  • Les Google Functions sont loin derrière les deux autres
  • Entre AWS et Microsoft, AWS est légèrement mieux que Microsoft
  • Si vous avez déjà un environnement sur Azure, il est logique de travailler avec les outils que l’on connaît déjà (et de garder un oeil sur le reste)

Ceci-dit, lors de l’AWS Reinvent 2018, beaucoup de nouveautés ont été annoncées pour les Lambda Functions et l’une d’entre elles est la possibilité d’utiliser AWS Firecracker, la technologie de virtualisation utilisée par celles-ci. Ce nouveau service ouvre un champ de développement et de maîtrise encore plus important dans l’utilisation des micro-services.

CONCLUSION

L’utilisation de webhook permet de répondre au besoin d’avoir la dernière version d’une donnée centralisée dans notre Data Lake en utilisant des technologies simples à mettre en place, permettant ainsi de ne stocker les données que lorsque des modifications ont eu lieu.

AUTEUR

Amaury SANCHEZ : Junior Data Scientist chez Médecindirect. Diplômé de l’ECE Paris. LinkedIn

Medium medecindirect.fr

Written by

Blog of MedecinDirect, a french telemedicine company