Skip to content

Commit

Permalink
feat: Article REX plateforme data
Browse files Browse the repository at this point in the history
  • Loading branch information
lepiaf committed Oct 11, 2023
1 parent d5c0cc6 commit 6d76b8a
Show file tree
Hide file tree
Showing 2 changed files with 96 additions and 0 deletions.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
96 changes: 96 additions & 0 deletions _posts/fr/2023-10-12-rex-plateforme-data.md
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)

0 comments on commit 6d76b8a

Please sign in to comment.