Cloud & Data
Méthodologie
October 8, 2024

The way of the Data Engineer

Découvrez les bases du parcours de data engineer dans cet article.

Nous suivre

The way of the Data Engineer

La data, c’est la tendance du moment. « Big Data, Business Intelligence, Data Science, Data Engineering, IA, Data Driven » sont des termes que l’on entend partout ces derniers temps. Mais au fait, qu’est-ce que c’est et pourquoi en parle-t-on de plus en plus ?

Avec l’émergence de l’informatique, un nouveau secteur s’est rapidement dessiné dans les années 70 et 80 avec la création des premiers systèmes d’information, introduisant les premières bases de données. Ce fut un moment révolutionnaire : les entreprises avaient désormais à gérer, conserver et utiliser non seulement des données matérielles et tangibles, mais aussi des données numériques. L'informatique décisionnelle s'est nourrie de ces besoins pour devenir incontournable.

Maîtriser ces données offrait un outil de gouvernance très puissant, un rêve pour tous les dirigeants. En effet, avoir une vue d’ensemble en temps réel sur l’ensemble des activités et pouvoir tout piloter en direct est un luxe que tout le monde est prêt à payer.

Avançons rapidement jusqu'à aujourd'hui : la donnée est devenue centrale, certains allant même jusqu'à dire qu'elle est l'une des principales ressources des entreprises. Elon Musk l’a bien compris, en rendant Tesla data-driven. En plaçant la donnée au cœur de tous les processus, chaque Tesla produite et vendue alimentait une base de données massive et efficace pour entraîner la future « voiture intelligente ».

Avant lui déjà, mais en prenant en considération cet exemple marquant, le Big Data a pris le devant de la scène. Nous avons désormais des quantités énormes de données à traiter, transformer et utiliser. Travailler avec ces données requiert maintenant de passer au niveau supérieur en exploitant les 3V du Big Data : Volume, Vélocité et Variété. Nous voulons obtenir les données de plus en plus vite et les rendre de plus en plus utiles. Nous ne voulons plus seulement de l’analyse descriptive, mais aussi de l’analyse prédictive et prescriptive. 

On comprend alors tout l’engouement autour de l’IA et de la Data Science. Le Data Engineer vient cimenter tout cela en connectant toutes les briques, de la source jusqu’aux modèles ou aux tableaux de bord qui utilisent ces données, en passant par les transformations de la donnée, sa sécurisation et l’industrialisation de tels processus.

Vous l’aurez compris, être un Data Engineer aujourd’hui nécessite alors de porter plusieurs casquettes pour remplir ce rôle pleinement. Nous discuterons par la suite de ces fonctions une à une.

Software Engineering Skills :

La première compétence que tout le monde oublie lorsqu’on parle de DATA est le software engineering ou génie logiciel en français.

Il est crucial de commencer par acquérir des notions (de préférence avancées) sur le fonctionnement d’un ordinateur. Cela inclut la connaissance du système d'exploitation UNIX, des commandes “terminal”, et des structures de données (listes, dictionnaires, ensembles, etc.), ainsi que des APIs.

Il est également essentiel de maîtriser au moins un langage parmi Python, Java ou Scala, en connaissant les principes de base de la programmation orientée objet (POO) : l’encapsulation, l’abstraction, l’héritage, et le polymorphisme. Ces principes sont souvent bien intégrés dans l’apprentissage de Scala ou Java. Cependant, avec l’ascension de Python aujourd’hui, un langage interprété et multi-paradigme, on tombe parfois dans la facilité avec des scripts Python qui peuvent manquer de structure.

Si cette flexibilité est avantageuse pour les non-développeurs tels que des data-scientistes qui souhaitent rapidement démarrer leur projet, le software engineer, lui, n’a aucune excuse. Les principales qualités attendues de ses livrables sont une maintenance aisée et une grande résilience aux bugs. 

Malheureusement, il semble que ces principes ne soient plus toujours forcément au cœur de l’apprentissage du Python. Un conseil ? Ne vous arrêtez pas aux premières couches du langage et explorez ses forces et ses limites.

Ensuite, la qualité du code passe par le développement dirigé par les tests (TDD - Test Driven Development) et les tests unitaires. Il est crucial de connaître au moins un framework de tests, comme pytest ou unittest sur Python, par exemple.

Donc, si vous voulez être un bon Data Engineer, ne négligez pas ces compétences !

Data Engineering Skills : 

CORE : Le B-A-BA reste d’un côté.

  • Le SQL ( Structured Query Langage ) : La connaissance du principal langage de requête de données est un must-have rédhibitoire si non maîtrisée. Une grosse partie de l’exploration de données se fera généralement via ce moyen là.

  • Les SGBDR : Il faut aussi être à l’aise avec le système de gestion de base de donnée relationnelle qui encapsule toutes les notions essentielles au stockage, et à l’optimisation de l’utilisation de la donnée.

    • L’ACID-ité : (Atomicité, Cohérence, Isolation, Durabilité) est une notion cruciale qui garantit la fiabilité des transactions dans une base de données.
    • La aodélisation de la donnée ER - Entity Relationship, afin d’organiser les données de manière logique et cohérente.
    • La normalisation de la donnée : formes normales, 1NF, 2NF etc…, afin de minimiser la redondance de la donnée et améliorer l’intégrité de la donnée.

À partir de là, il faut savoir que deux concepts généraux se distinguent pour l’utilisation des bases de données. 

- l’OLTP (Online Transaction Processing) : L’OLTP est conçu pour gérer les transactions quotidiennes et se caractérise par un grand nombre de courtes opérations de lecture et d'écriture. Les SGBDR sont souvent utilisés pour les systèmes OLTP en raison de leurs capacités à gérer des transactions rapides et fiables, en garantissant l’ACID-ité.

- l’OLAP (Online Analytical Processing) : L’OLAP est conçu pour les requêtes complexes et l'analyse de grandes quantités de données. C'est ici qu'intervient le datawarehouse (entrepôt de données). Un datawarehouse est une grande base de données conçue pour l'analyse et le reporting. Leur conception est optimisée pour les requêtes complexes et l'analyse des données à grande échelle. Il faut ainsi explorer la modélisation des dimensions/faits utilisée à ces fins; à ce stage KIMBALL et sa fameuse architecture en star schéma ne devrait plus être un secret pour vous.

ORACLE, SQL Server, PostgreSQL sont les datawarehouse les plus anciens, les plus connus et sont souvent gérés on-premise, i.e avec un serveur géré en interne où ils sont installés et où la donnée est stockée. La limite du on-premise est qu’il faut à la fois avoir les compétences pour administrer ces serveurs, augmenter leur capacité manuellement et physiquement si on a subitement besoin de plus de performance: Cela ne se fait pas du jour au lendemain.

On verra ensuite dans la modern data stack, comment dépasser cette limitation notamment avec les MPP tels que Snowflake, BigQuery et Redshift qui mettent à profit la scalabilité du CLOUD.

Ces datawarehouse sont populés par des processus ETL - Extract, Transform and Load. Le transform se faisant souvent dans un serveur à part qui nettoie, transforme et enrichit la donnée avant de l’insérer dans un datawarehouse. Les outils d’intégrations de données les plus connus sont :  Talend, SSIS ou informatica pour du low/no-code ou plus simplement python avec pandas/sql alchemy si on veut faire du Batch processing avec de faibles volumétries.

Cependant, les bases de données NoSQL (Not Only SQL) sont également cruciales à comprendre. Contrairement aux SGBDR, les bases de données NoSQL ne nécessitent pas de schéma fixe et sont conçues pour gérer des données non structurées ou semi-structurées. Elles sont optimisées pour les performances à grande échelle et la flexibilité, rendant possible la gestion de vastes volumes de données en temps réel. Les types de bases de données NoSQL incluent les bases de données orientées document, les bases de données de graphes, les bases de données en colonne et les bases de données clé-valeur. Les différentes solutions qui existent aujourd’hui sont des outils tels que MongoDb - Elasticsearch - Cassandra.

Nous avons parlé plutôt de Batch processing sur de faible volumétries. Mais pendant l’introduction, nous avons essayé d’introduire les nouveaux challenges de la data avec des volumes de données de plus en plus proéminents; traiter tout ce volume est un vrai casse-tête que le calcul distribué vient résoudre.  

Calcul Distribué : en utilisant des frameworks comme Apache Hadoop et Apache Spark, il permet de traiter des volumes massifs de données en parallèle sur des clusters de machines. Cela améliore considérablement la vitesse et l'efficacité du traitement des données, rendant possible l'analyse en temps réel et la gestion de Big Data. Ce dernier framework, Spark, est compatible avec Java, Scala ou python notamment avec du PySpark. 

Vous comprenez maintenant pourquoi c’est les 3 langages plébiscités par les Data Engineers  ?

Enfin il est impossible de faire le tour sans évoquer le real-time processing : qui nous fait rentrer dans les défis du streaming et le besoin de l’instantanée ( avec de l’IOT par exemple entre autres).   Ici, il faut utiliser des frameworks de messaging type Kafka ou rabbit MQ et ce, couplé à du FLINK par ex qui gère la transformation en streaming.

MODERN DATA Stack : 

Plus récemment encore, le processus inversé de l'ELT (Extract, Load, Transform) est devenu courant dans les datawarehouses modernes dotés de capacités de calcul importantes grâce au MPP (Massively Parallel Processing). Des solutions comme Snowflake et DBT, ainsi que des services cloud comme BigQuery et Redshift, en sont des exemples notables.

Il est également essentiel de comprendre l'évolution vers les datalakes, qui permettent de stocker des données dans leur format brut à grande échelle. Cependant, les datalakes présentent des limites, notamment en matière de gestion des métadonnées et de fiabilité des transactions. Pour y remédier, des metastores comme Hive Metastore, Unity Catalog de Databricks, et AWS Glue Catalog ont été développés.

Un nouveau paradigme émergent, le LakeHouse. Il combine les avantages des datalakes et des datawarehouses, en promettant l'ACID-ité que l'on ne retrouve normalement que dans les datawarehouses. Les plus connus étant delta et iceberg. La maîtrise des différents formats de stockages, CSV, Parquet, ORC, AVRO est nécessaire pour comprendre en quoi le lakehouse garantit plus de propriétés que le datalake et dans quels cadres chacun est avantageux.

N.B. Maîtriser les avantages et limitations du parquet vous donnera beaucoup d'avantages sur les lakehouses qui se basent principalement sur du parquet « amélioré ».

L’industrie évolue tellement vite, avec de nouvelles techno tous les jours, qu’il est impossible de faire un récapitulatif complet. Mais j’espère que vous aurez une image un peu moins floue.

J’admets avoir rapidement survolé les fondamentaux du calcul distribué avec les clusters HADOOP - MapReduce - HDFS qui restent des notions importantes. Cependant aujourd’hui avec le serverless (Aws Glue) ou les services managés ( EMR, Azure Datalake, Google Dataproc ) qui prennent de plus en plus de part de marché, il devient légèrement moins urgent de les connaître pour devenir fonctionnel dessus, la connaissance de spark étant suffisante. Toutefois, les maîtriser si on veut passer au niveau supérieur du data engineer est primordial.

Orchestration Stack :

Apache airflow étant la framework la plus connue, la plus utilisée et appréciée, il serait bon de l’explorer si elle manque à votre répertoire.

Maintenant que nous avons évoqués les compétences au coeur du métier de data engineer, parlons de celle qui feront de vous le « Super » Data Engineer; car vous aurez tous les cordes à votre arc : 

DevOps Skills : 

Une fois que vous êtes allés aussi loin, la chaîne de CI/CD (Continuous Integration - Continuous Deployment) devient cruciale.

Commencez par la gestion du code source avec des outils comme GitHub ou GitLab. Ensuite, automatisez les tests et le contrôle de qualité du code avant le déploiement en utilisant GitHub Actions ou Azure DevOps. Ces outils permettent de configurer des pipelines CI/CD pour exécuter des tests, analyser la qualité du code, et valider les modifications avant qu'elles ne soient intégrées dans la branche principale.

Pour le déploiement et l’orchestration des applications, utilisez Docker pour créer des images containerisées. Pour les plus ambitieux, Kubernetes offre des capacités d'orchestration avancées, permettant de déployer, gérer, et scaler les applications containerisées en production.

En matière de provisionnement de ressources, l'Infrastructure-as-Code (IaC) est essentielle. Utilisez Terraform pour une solution agnostique à la plateforme cloud, ou CloudFormation pour les environnements AWS. Ces outils permettent de gérer l'infrastructure de manière déclarative et répétable, facilitant ainsi le déploiement et la gestion des ressources.

En résumé, la mise en place d'une chaîne de CI/CD complète implique :

  1. Gestion du code source : GitHub, GitLab.
  2. Automatisation des tests et contrôle de qualité : GitHub Actions, Azure DevOps.
  3. Containerisation et orchestration : Docker, Kubernetes.
  4. Infrastructure-as-Code : Terraform, CloudFormation.

DevSec Skills : 

Les compétences en DevSecOps pour le domaine des données sont essentielles pour garantir la sécurité tout au long du cycle de vie du développement et de la gestion des données.

Un point essentiel est le chiffrement des données : il existe aujourd’hui diverses techniques de chiffrement pour protéger les données en transit et au repos. 

Pour l’Encryption de la données at-rest, les solutions cloud nous permettent ujourd’hui de facilement gérer ça car ils conserveront eux même les clés de chiffrement avec la chaîne de sécurité des certificats ; renforçant ainsi la protection des données contre les accès non autorisés.

Mais hors cloud, être conscient de l’existence de HSM qui nous permet de le réaliser par nous-même.

Il faut être conscient du networking autour de la data notamment avec les protocoles TLS/SSL pour sécuriser les communications sur internet. De plus, l'utilisation VPC/VPN pour isoler les environnements et éviter qu’internet transite par internet et prendre le risque qu’elle soit interceptée est aussi une bonne option. En effet, on peut utiliser avec par exemple des VPC peering, des VPN sécurisés, et des connexions directes comme Direct Connect ou ExpressRoute pour garantir que les données restent locales et ne transitent pas par Internet. 

Ces stratégies et outils sont essentiels pour assurer la sécurité et la confidentialité des données dans des environnements cloud et hybrides. Cet enjeu est assez grand à l’air où tout est numérique et les attaques se multiplient. Rajouter cette couche de sécurité est un devoir auquel il faut toujours penser.

Bonus Skills :

Machine learning ; à l’air de L’IA, il serait bon de connaître les bases du machine learning pour ne pas naviguer à l’aveugle. Et puis c’est toujours plus sympa de comprendre ce que l’on fait.

Énormément des projets d’IA nécessitent aux phases avancées d’industrialiser la solution pour qu’elle soit fiable et minimise les erreurs en production. Vos compétences de data engineers seront d’autant plus utiles à ce moment-là.

Cloud Engineer :  je l’ai mis en bonus skill, mais il devient quasi-obligatoire aujourd’hui. J’ai mentionné énormément de solutions et services cloud plus haut. Mais maîtriser de manière plus général en sachant tout ce qu’il propose en terme de sécurité et gestion des accès sans se limiter au côté DATA ne peut pas faire de mal. 

Passer une certification Cloud Fundamentals suivi d’une Data Fundamentals serait un bon début pour plonger dedans et prouver que l’on sait au moins de quoi l’on parle si on a pas d’expérience dessus. Les certifications données plus haut, varient selon le cloud choisi mais l’important est de l’avoir pour au moins un, les autres étant similaires sur la majorité des points.

Vous l'aurez compris, s'engager dans le data engineering n'est pas chose aisée, mais c'est un domaine passionnant où l'on ne s'ennuie jamais. Chaque projet apporte son lot de nouvelles problématiques à explorer et de défis à relever. 

Toutefois, il est important de noter que ce métier requiert une solide expertise technique. Comme nous l'avons vu, il faut maîtriser plusieurs compétences dans divers domaines de l'informatique pour pouvoir gérer efficacement tous les workflows. Si vous avez cette passion pour la technique et l'envie de résoudre des problèmes complexes, alors le data engineering est fait pour vous.

Article par B.ERRAJI, consultant OSSIA.

Découvrez aussi

Inscrivez-vous à notre newsletter