Qu'est ce qu'un Data Engineer ?

De la voiture autonome à la reconnaissance faciale sur Facebook, la Data Science a attiré la lumière sur elle. Ainsi les Data Scientists sont devenus extrêmement recherchés, et ce pour une bonne raison – un Data Scientist qualifié peut ajouter une valeur incroyable à une entreprise.

Mais un data scientist n’est rien sans les données auxquelles il a accès. La plupart des entreprises stockent leurs données dans divers formats: dans des bases de données et dans des fichiers texte. C’est ici qu’interviennent les Data Engineers – ils construisent des pipelines qui transforment ces données dans des formats utilisables par les Data Scientists. Les Data Engineers sont tout aussi importants que les data Scientists. Mais ils ont tendance à être des travailleurs de l’ombre parce qu’ils sont plus éloignés du produit final qu’est l’analyse des données.

Une bonne analogie pourrait être une écurie de F1 et un pilote de F1. Le pilote a l’adrénaline de la vitesse puis le frisson de la victoire devant son public. Alors que le constructeur a la lourde tâche (et plaisir) de régler les moteurs, d’expérimenter différentes configurations d’échappement et de créer une voiture puissante et robuste (meilleure que celles des concurrents). Si vous aimez construire et peaufiner des systèmes, la Data Engineering est faite pour vous. Dans cet article, nous allons explorer le quotidien d’un Data Engineer et parler des compétences requises pour ce poste.

 

Le rôle d’un Data Engineer

Le domaine de la Data Science est très vaste, englobant tout, du nettoyage des données au déploiement de modèles prédictifs. Cependant, il est rare qu’un seul spécialiste des données couvre l’ensemble du spectre. Les spécialistes des données se concentrent généralement sur quelques domaines et sont complétés par une équipe d’autres scientifiques et analystes.

La Data Engineering est également un vaste domaine. Mais chaque Data Engineer n’a pas besoin de posséder l’ensemble des compétences. Dès maintenant nous allons esquisser les grandes lignes de la Data Engineering. Puis plus concrètement nous allons parcourir le rôle d’un Data Engineer avec des exemples plus spécifiques et précis.

Un Data Engineer transforme les données en un format utile pour l’analyse. Imaginez que vous êtes un Data Engineer travaillant sur un concurrent simple à Uber. Vos utilisateurs disposent d’une application sur leur appareil grâce à laquelle ils accèdent à votre service. Ils demandent un trajet vers une destination via votre application, qui est acheminée vers un chauffeur qui les récupère et les dépose. Après le trajet, ils sont facturés et ont la possibilité d’évaluer leur chauffeur.

Afin de maintenir un service comme celui-ci, vous devez:

  • Une application mobile pour les utilisateurs
  • Une application mobile pour les chauffeurs
  • Un serveur qui peut transmettre des demandes d’utilisateurs aux chauffeurs et gérer d’autres détails comme la mise à jour des informations de paiement


Voici un diagramme montrant la communication:

Qu'est ce qu'un Data Engineer ?

Comme vous pouvez vous y attendre, ce type de système va générer d’énormes quantités de données. Vous aurez quelques éléments de stockage de données différents:

  • La base de données qui soutient votre application principale. Elle contiendra des informations sur l’utilisateur et le chauffeur.
  • Les journaux (logs) d’analyse du serveur
    • journaux d’accès au serveur. Ils contiennent une ligne par demande faite au serveur à partir de l’application.
    • journaux d’erreur du serveur. Ils contiennent toutes les erreurs côté serveur générées par votre application.
  • Les journaux (logs) d’analyse des applications
    • journaux des événements de l’application. Ils contiennent des informations sur les actions que les utilisateurs et les chauffeurs ont prises dans l’application. Par exemple, vous vous connectez lorsqu’ils cliquent sur un bouton ou mettent à jour leurs informations de paiement.
    • journaux d’erreur de l’application. Ils contiennent des informations sur les erreurs dans l’application.
  • Base de données Ride. Elle contient des informations sur une course unique pour une paire utilisateur / conducteur et contient des informations sur l’état de la course.
  • Base de données du service clientèle (Customer Service). Elle contient des informations sur les interactions des clients avec les agents du service clientèle. Elle peut inclure des transcriptions vocales et des e-mails.

 

Voici le diagramme mis à jour montrant les sources de données:

Qu'est ce qu'un Data Engineer ?

 

Imaginons qu’un spécialiste des données veuille analyser l’historique des actions d’un utilisateur avec votre service et voir quelles actions sont en corrélation avec les utilisateurs qui dépensent le plus. Pour leur permettre de créer ceci, vous devez combiner les informations provenant des journaux d’accès au serveur et des journaux d’événements de l’application. Vous aurez besoin de:

  • Regrouper régulièrement les journaux d’analyse des applications à partir des appareils des utilisateurs
  • Combiner les journaux d’analyse de l’application avec les entrées du journal du serveur référençant l’utilisateur
  • Créer un noeud final d’API qui renvoie l’historique des événements de tout utilisateur

Pour résoudre ce problème, vous devez créer un pipeline capable d’intégrer les journaux des applications mobiles et les journaux du serveur en temps réel, de les analyser et de les associer à un utilisateur spécifique. Vous devrez ensuite stocker les journaux analysés dans une base de données, afin qu’ils puissent être interrogés facilement par l’API. Vous devrez lancer plusieurs serveurs derrière un équilibreur de charge (permettant de répartir le travail entre plusieurs serveurs) pour traiter les journaux entrants.

La plupart des problèmes que vous rencontrerez concerneront la fiabilité et les systèmes distribués. Par exemple, si vous avez des millions de périphériques pour collecter des journaux et que le nombre de demandes est variable (le matin vous obtenez une tonne de journaux mais à minuit beaucoup moins), vous aurez besoin d’un système capable d’augmenter automatiquement le nombre de serveurs lorsque c’est nécessaire (auto scaling).

Qu'est ce qu'un Data Engineer ?

 

Ici les serveurs s’exécutent derrière un équilibreur de charge (load balancing). Les serveurs sont enregistrés auprès de l’équilibreur de charge qui leur envoie du trafic en fonction de leur niveau d’activité. Cela signifie que les serveurs peuvent être ajoutés ou supprimés au besoin.

 

En gros, les opérations dans un pipeline de données se composent des phases suivantes:

  • Ingestion – Rassemblement les données nécessaires.
  • Processing – Traitement des données pour obtenir les résultats finaux souhaités.
  • Storage – Stockage des résultats finaux pour une récupération rapide.
  • Access – Autorisation pour un outil ou un utilisateur à accéder aux résultats finaux du pipeline.

 

Qu'est ce qu'un Data Engineer ?Un pipeline de données – les données d’entrée sont transformées par une série de phases en données de sortie.

 

Trouver des courses de mauvaise qualité

Pour un exemple plus complexe, imaginez qu’un Data Scientist veuille créer un système qui trouve toutes les courses qui se sont terminées prématurément en raison de problèmes d’application ou de chauffeur. Une façon d’y parvenir est de regarder la base de données du service clientèle pour voir quelles courses se sont terminées avec des problèmes. Puis d’analyser leur journal avec des données sur la course.

Avant que le Data Scientist ne puisse le faire, ils ont besoin d’un moyen de faire correspondre les journaux dans la base de données du service clientèle avec des courses spécifiques. En tant que Data Engineer, vous devez créer un point de terminaison d’API qui permet au Data Scientist d’interroger tous les messages du service client relatifs à une course particulière. Pour cela, vous devrez:

  • Créer un système qui extrait les données de la base de données des courses et détermine les informations sur la course, telles que la durée et la correspondance entre la destination et la demande initiale de l’utilisateur.
  • Combiner les statistiques calculées sur chaque course avec les informations de l’utilisateur telles que le nom et l’identifiant de l’utilisateur.
  • Extraire les informations d’erreur des journaux d’analyse de l’application et du serveur appartenant à l’utilisateur pendant la période de la course.
  • Trouver toutes les requêtes de service client pour un utilisateur.
  • Créer une heuristique pour faire correspondre les courses avec les requêtes du service client (un exemple simple est qu’une requête de service client est toujours sur la course précédente)
  • Stocker les valeurs selon les besoins afin de garantir que l’API fonctionne rapidement, même lors des prochaines sorties.
  • Créer une API qui renvoie tous les messages de service client liés à une course particulière.

Un Data Engineer qualifié sera en mesure de construire un pipeline qui effectue chacune des étapes ci-dessus chaque fois qu’une nouvelle course est ajoutée. Cela garantira que les données fournies par l’API sont toujours à jour et que toute analyse effectuée par le Data Scientist est valide.

 

Les compétences d’un Data Engineer

Un Data Engineer doit être bon à:

  • L’architecture des systèmes distribués
  • Créer des pipelines fiables
  • Combiner de sources de données
  • L’architecture des bases de données
  • Collaborer avec les équipes de Data Scientists et construire les bonnes solutions pour eux

 

Notez que nous n’avons mentionné aucun outil ci-dessus. Bien que des outils comme Hadoop et Spark et des langages comme Scala et Python soient importants pour la Data Engineering, il est plus important de bien comprendre les concepts et de savoir comment construire des systèmes réels.

 

Les rôles d’un Data Engineering

Bien que les Data Engineers doivent posséder les compétences énumérées ci-dessus, le travail quotidien d’un Data Engineer variera en fonction du type d’entreprise pour lequel il travaille. De manière générale, vous pouvez classer les Data Engineers dans plusieurs catégories:

  • Généraliste
  • Spécialiste de pipeline
  • Spécialiste des bases de donnée

Passons en revue chacune de ces catégories:

Généraliste

Un Data Engineer généraliste travaille généralement dans une petite équipe. Sans un Data Engineer, les Data Analysts et les Data Scientists n’ont rien à analyser, faisant du Data Engineer l’élément fondateur de l’équipe.

Quand un Data Engineer est la seule personne orientée data dans une entreprise, il finit généralement par faire le travail de bout en bout. Par exemple, un Data Engineer généraliste peut devoir tout faire, du rassemblement des données à leur traitement en passant par l’analyse finale. Cela nécessite plus de compétences en Data Science que la plupart des Data Engineers. Cependant, cela nécessite également moins de connaissance en architecture des systèmes – dans de petites structures l’ingénierie des données n’est pas aussi aussi déterminante et importante. C’est un bon rôle pour un Data Scientist qui veut faire la transition vers la Data Engineering.

Tant que notre model d’Uber est petit, un Data Engineer pourrait être invité à créer un tableau de bord indiquant le nombre de courses effectuées pour chaque jour du mois passé, ainsi qu’un prévisionnel pour le mois suivant.

 

Spécialiste de Pipeline

Les Data Engineers spécialisés sur les pipelines ont tendance à être nécessaires dans les entreprises de taille moyenne qui ont des besoins complexes en matière de données scientifiques. Un Data Engineer spécialisé sur les pipelines travaillera avec des équipes de spécialistes des données pour transformer les données en un format utile pour l’analyse. Cela implique une connaissance approfondie des systèmes distribués et en informatique de façon générale.

Au fur et à mesure de la croissance de notre model Uber, on pourrait demander à un Data Engineer spécialisé sur les pipelines de créer un outil permettant aux spécialistes des données d’interroger les métadonnées relatives aux courses afin de les utiliser dans un algorithme prédictif.

 

Spécialiste des bases de données

Un Data Engineer spécialiste des bases de données se concentre sur la configuration et le remplissage des bases de données analytiques. Cela implique un certain travail avec les pipelines mais surtout travailler avec l’optimisation des bases de données pour l’analyse rapide et la création de schémas de table. Cela implique un travail ETL (Extract, Transform, Load – processus d’intégration de données) pour obtenir des données dans les entrepôts de données (ou data warehouse). Ce type de Data Engineer se trouve généralement dans les grandes entreprises avec de nombreux analystes de données dont les données sont réparties entre les différentes bases de données.

Pour revenir à notre model Uber, un Data Engineer spécialiste des bases de données peut concevoir une base de données analytique, puis créer des scripts pour extraire des informations de la base de données principale de l’application dans la base de données analytique.

Qu'est ce qu'un Data Engineer ?

Un entrepôt de données (ou data warehouse) prend en charge les données, ce qui rend facile d’obtenir les informations via des requêtes.

 

Les compétences d’un Data Engineer

Dans cet article, nous avons couvert la Data Engineering et les compétences nécessaires pour la pratiquer à un niveau élevé. Si vous êtes intéressés par l’architecture de systèmes à grande échelle ou si vous travaillez avec d’énormes quantités de données, la Data Engineering est un bon domaine pour vous.

Il peut être très intéressant de voir votre pipeline de données mise à l’échelle automatique gérer un pic de trafic, ou de travailler avec des machines ayant des téraoctets de RAM. Il y a aussi énormément de satisfaction à construire un système robuste qui peut fonctionner pendant des mois ou des années avec un minimum d’entretien.

Parce que la Data engineering consiste à apprendre à gérer des projets à grande échelle et ce avec efficacité, il peut être difficile de trouver du contenu de formation pratique pour apprendre. Mais il est tout à fait possible d’apprendre le métier de Data Engineer directement sur le terrain.

Sur Mon coach Data, je travaillerai plus tard sur des éléments de formation sur le domaine de la Data Engineering qui à mon sens est une expertise plus importante que l’Analyse de données au même titre que l’Intelligence artificielle.