#3 - Le métier de Data Engineer décrypté
Le métier de Data Engineer de A à Z
Moulay Chihani
11/3/20236 min read


Tout comprendre sur le métier de Data Engineer (Crédits)
👋 Hello la communauté Dataque
✌Bienvenue dans cette édition #3 de notre newsletter ! Que tu sois un débutant ou un expert en Data, merci de nous lire chaque semaine.
🎆 Dans cet article nous allons essayer de comprendre le métier de Data Engineer et les différents types de Data Engineer. Nous avons la chance de pouvoir échanger avec Moulay Chihani, Data Engineer chez Doctolib.
👨⚕️ Ai-je encore besoin de présenter Doctolib? Cette start-up au très grand succès facilite la prise de rendez-vous médicaux en permettant aux patients de trouver et de réserver des consultations avec des professionnels de santé. Il permet aussi aux professionnels de santé une meilleure gestion de leur temps et de leur facturation.
👨💻 Moulay va partager avec nous son expérience et nous expliquer qu’est-ce qu’un Data Engineer.
👋 Hello Moulay,
Est-ce que tu peux nous parler de ton parcours professionnel et pourquoi tu as décidé de devenir Data Engineer ?
J'avais environ sept ans lorsque j'ai reçu mon premier ordinateur. Le fait d'avoir un parent ingénieur a largement contribué à éveiller mon intérêt et ma curiosité pour le domaine de l'informatique. Cependant, l'univers de la donnée m'est resté inconnu pendant longtemps. Ce n'est que pendant mes études de médecine, notamment lors de mon module d'épidémiologie, que j'ai commencé à m'intéresser à l'analyse et au traitement des données. J'ai suivi le parcours classique, commençant par les statistiques et les probabilités, je me suis ensuite laissé emporter par l'engouement autour de la Data Science et du Machine Learning au milieu des années 2010. J'ai participé à divers projets dans ces domaines, y compris dans le domaine de la génétique et des parcours de soins.
Pour ces différents projets, il m'a fallu nettoyer et traiter des données avant de pouvoir les exploiter. Je ne savais pas encore que ce que je faisais relevait d'une discipline à part entière. C'est en cherchant à me former davantage dans ce domaine que j'ai découvert le monde du Data Engineering. Et pour diverses raisons, j'ai décidé de poursuivre par un master dans le domaine de la data.
Professionnellement, cela fait maintenant cinq ans que j'ai eu l'opportunité de combiner mes deux passions : la santé et les données. J'ai travaillé en tant que consultant pour des entreprises pharmaceutiques et j'ai fini par occuper un poste chez Doctolib, où je suis actuellement Platform Data Engineer.
Comment est-ce que tu définirais ton rôle de Data Engineer ?
Une métaphore qui me vient à l'esprit est celle des pipelines de pétrole. Le pétrole brut est inutilisable en l'état ; il nécessite de nombreux 'pipelines' pour le collecter, le nettoyer et le transformer de son état brut en produit utile. De la même manière, chaque tableau de bord ou modèle de Machine Learning sophistiqué repose sur des données brutes qui ont été collectées puis raffinées par des data engineers avant d'être utilisables.
En résumé, le data engineer se concentre sur la collecte, le nettoyage, l'organisation, la transformation, et parfois la modélisation des données, pour les rendre utilisables pour diverses applications.
Quelles sont selon toi les défis principaux que peuvent rencontrer les Data Engineer ?
Logiquement les principaux défis se décomposent en deux, les défis liés à la partie techniques et les défis liés à la partie business :
Pour les défis business :
Des défis de visibilité : ce que la plupart des gens voient, c'est le résultat final, c'est-à-dire les rapports et tableaux de bord, les KPIs sur les processus marketing et de vente, et sur la performance d'un produit et son utilisation. C'est la partie émergée de l'iceberg. Le gros travail des data engineers se passe en coulisses et permet aux data analysts de fournir ce genre de résultats. C'est la partie immergée de l'iceberg. Moins de visibilité signifie moins d’argument pour discuter du budget et pour convaincre la direction de faire des achats de licences…etc
Des défis de contrôle des coûts : comment bien faire le choix entre acheter ou développer un outil ou une solution, comment optimiser les différents moyens de stockage, comprendre les besoins métiers...
Et pour les défis techniques :
Des défis à l’extraction de la donnée : les sources peuvent poser des problèmes de disponibilité (horaires d'ouverture/fermeture), peuvent tomber en panne, être trop lentes pour nous fournir les données ou au contraire 'trop' rapides pour nos systèmes de capture, avoir des limites d'utilisation, changer de structure ou de format, etc. De plus, les propriétaires des sources peuvent être mécontents de la charge imposée sur leurs systèmes par nos importations.
Des défis pour nettoyer et transformer cette donnée : une qualité insatisfaisante (doublons, erreurs, mauvais encodage), différents fuseaux horaires à consolider, non-respect des contrats d'interfaces concernant la structure des fichiers, leur contenu ou leur format et encodage.
Des défis pour modéliser et présenter la donnée : les dépendances entre les différentes tables, quelle granularité choisir pour un data model (quotidienne/hebdomadaire/mensuelle), l'enrichissement avec des dates, le suivi de toutes les versions d'un rendez-vous, la représentation d'un processus de réservation sous la forme de funnel, quelle rétention appliquer.. etc.
Des défis liés à la sécurité et à la rétention des données, ainsi qu’au recensement de la donnée et sa documentation.
Quelles sont les compétences techniques essentielles et les technologies qu'un data engineer doit posséder pour réussir selon toi ?
📚Pour bien faire votre travail de Data Engineer, les compétences de base à maîtriser sont :
SQL et le fonctionnement des bases de données relationnelles, ainsi qu'une certaine familiarité avec les différents types de bases de données/architectures de stockage existantes (OLTP, OLAP, NoSQL, Object storage, Data Lakes, Column Data Warehouses…)
Les bases d'un langage de script comme Python ou Go ou sinon un langage JVM comme Java ou Scala.
Les bases de Git.
La façon d'interroger des API (Rest, Soap, GraphQL ..).
Les formats de fichiers (CSV, JSON, YAML, AVRO…).
Les bases de la ligne de commande Linux.
….et Chat GPT 🤫
Pour progresser, il est idéal de maîtriser certaines technologies supplémentaires :
Au moins la stack data d'une plateforme cloud (AWS, Azure, GCP).
Le fonctionnement et l’utilité des containers (Docker) par rapport aux machines virtuelles.
Un Cloud DWH : Redshift, BigQuery, Snowflake.
Un outil d'orchestration (Airflow) et de transformation de données (DBT).
Un outil d'Infrastructure As Code comme Terraform.
Les bonnes pratiques de la programmation orientée objet.
Beaucoup de personnes veulent aujourd’hui se former en Data engineering mais c’est un domaine qui fait encore relativement peur aux débutants. Quels conseils peux-tu donner aux gens qui veulent se lancer ?
Pour se former (en dehors d'un master en data ou d'une école d'ingénieurs) il est surtout nécessaire de commencer par maîtriser certains concepts et de réfléchir en termes de paradigmes plutôt que de technologies ou d'outils, car les outils changent mais les concepts restent les mêmes.
Je conseille aux lecteurs de s'informer et de comprendre les principaux modèles et paradigmes autour des pipelines de données.
CRUD, Transactions et ACIDité.
OLTP vs OLAP.
Row-based vs Column-based storage.
Data Warehouse et Data Lakehouse
ETL vs ELT.
Traitement par lots/ en continu (Batch processing vs Streaming).
Change Data Capture (CDC) vs Full import.
Snapshots, backup, redondance et disaster recovery, ainsi que RTO, RPO.
DAG et idempotence,
Stockage et traitement distribué
Stockage en colonnes ou en lignes (Column-based vs Row-based storage)
Monitoring et logging.
Je recommande également la certification AWS Data Analytics Specialty (pour ceux qui veulent faire du AWS), elle permet de monter rapidement en compétence sur la stack data AWS.
Et voici des livres que je recommanderais par ordre de difficulté croissante :
Fundamentals of Data Engineering (Joe Reis, Matt Housley)
Data Pipelines Pocket Reference: Moving and Processing Data for Analytics (James Densmore)
Designing Data-Intensive Applications (Martin Kleppmann)
Merci beaucoup pour votre lecture et à la semaine prochaine pour un nouvel article.
🚨 PS: Si tu aimes notre newsletter, n'hésite pas à la partager autour de toi et à nous suivre sur Linkedin pour ne rater aucune de nos aventures.