-
Notifications
You must be signed in to change notification settings - Fork 44
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
96 additions
and
0 deletions.
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
--- | ||
lang: fr | ||
date: '2023-10-11' | ||
slug: retour-experience-construction-plateforme-data | ||
title: "Retour d'expérience sur la construction de la plate-forme data" | ||
excerpt: | | ||
Les besoins en analyse de données sont de plus en plus grandissant. Avec quelques outils, il est possible de faire | ||
des extractions, transformation et visualisation très rapidement. Cependant, pour assurer la pérénité et | ||
l'évolutivité de ces analyse, il est nécessaire de monter une plateforme dédié et d'industrialiser les différents | ||
processus. | ||
authors: | ||
- tthuon | ||
categories: | ||
- architecture | ||
--- | ||
|
||
## Le contexte | ||
|
||
Dans le cadre d'une mission Data Engineer chez un client, j'ai rejoins le pôle “Data Factory” pour analyse et comprendre | ||
le comportement des utilisateurs. Cela permet leur permet de mieux guider l’ajout des fonctionnalités et des produits à | ||
lancer. | ||
|
||
Un Poc (Proof of Concept, ou preuve de concept) a été mise en oeuvre par l'équipe data. Elle s'articule autour d'un | ||
pipeline ELT (extract, load, transform) en utilisant les technologies suivantes : Google Cloud Platform, Talend, dbt et | ||
Power BI. | ||
|
||
Pour rapidement tester le PoC, le pipeline est exécuté sur Jenkins. Cependant, le détournement de l'usage de Jenkins | ||
pour l'exécution du pipeline n'est pas sans incidence. Jenkins n'est pas adapté pour ce travail : pas de retry, écriture | ||
du pipeline en Groovy, un seul environnement d'exécution. | ||
|
||
Comment fiabiliser les traitements et industrialiser le processus de déploiement ? | ||
|
||
C'est dans ce context que ma mission commence. | ||
|
||
## Le pipeline ELT : Extract, Load, Transform | ||
|
||
Comment ce pipeline fonctionne ? Qu'elles sont les étapes ? Qu'elles sont les besoin de ce pipeline ? | ||
|
||
Dans son principe de fonctionnement, il va chercher des données dans différentes sources, les charger dans un entrepôt | ||
de données, transformer et créer de nouvelles structure données pour qu'elles soient ensuite affichés. | ||
|
||
### Extraction et chargement des données dans Google BigQuery | ||
|
||
En sources de données, j'ai : | ||
|
||
- MySQL | ||
- MongoDB | ||
- Appel HTTP vers des API externes | ||
|
||
Pour la phase d'extraction et chargement dans [Google BigQuery](https://cloud.google.com/bigquery/docs/introduction), | ||
Talend a été mis en place pour effecter ce travail. C'est un outil qui permet de faire des pipeline ETL (Extract, | ||
Transform, Load; à ne pas confondre avec ELT) complète. Ici, il a été utilisé pour faire | ||
uniquement la phase d'extraction et de chargement dans Google BigQuery. | ||
|
||
Le développement et la modification nécessite un client lourd et une compilation manuel du pipeline d'extraction. | ||
|
||
Une fois que la donnée est dans BigQuery, la phase de transformation peut commencer. | ||
|
||
### Transformation avec dbt | ||
|
||
Cette transformation est effectuée par [dbt](https://www.getdbt.com/) directement dans l'entrepôt de données Google | ||
BigQuery. | ||
|
||
dbt n'exécute rien dans l'entrepôt de données, mais il permet d'organiser la transformation des données et de | ||
templatiser les requêtes SQL. C'est Google BigQuery qui exécute les requêtes SQL. | ||
|
||
Durant cette phase de transformation, de nouvelle structure de données sont créés stocker le resultat des calculs. Ces | ||
aggrégats de données sont ensuite affiché par un outil de visualisation de données : Power BI. | ||
|
||
### Affichage des données avec Power BI | ||
|
||
Le but final de tout ce travail est d'éviter d'effectuer tous les calculs au moment d'afficher les rapports d'analyse. | ||
Sans le travail en amont de calcul et d'aggrégation de données, l'affichage des graphiques seraient très longs. | ||
|
||
Ce pipeline est fonctionnel et déjà en place avec Jenkins. Voyons l'architecture de la nouvelle plateforme data. | ||
|
||
## Architecture de la plateforme data | ||
|
||
Nous avons vu dans la précédente partie le fonctionnement du pipeline ELT dans Jenkins. Le but est de transposer dans | ||
une plateforme plus robuste et adapté à ce type de travail. | ||
|
||
Pour cela, nous avons besoin d'un outil pour orchestrer ces différentes étape du pipeline et de les relancer en cas d' | ||
erreur. Apache Airflow est le parfait candidat. Google propose une version géré : Google Composer. | ||
|
||
Les pré-requis pour cette nouvelle infrastructure sont les suivantes : | ||
|
||
- Utiliser Google Composer | ||
- Utiliser le maximum d'outil géré par Google pour faciliter la maintenance | ||
- Infrastructure as Code avec Terraform | ||
- Des environnements séparés et dédiés pour les tests | ||
- Tout le code nécessaire pour effectuer une tâche est dans une image Docker | ||
- Surveillance et alerte en cas d'échec | ||
|
||
Nous avons donc le schéma suivant : | ||
|
||
![architecture]({{ site.baseurl }}/assets/2023-10-12-rex-plateforme-data/architecture.png) |