Qu'est-ce que l'ingénierie des données et est-ce bon pour vous? – Vrai Python

By | décembre 14, 2020

trouver un expert Python

Big Data. Données cloud. Données d'entraînement IA et données d'identification personnelle. Les données sont partout autour de vous et grandissent chaque jour. Il est logique que le génie logiciel ait évolué pour inclure ingénierie des données, une sous-discipline qui se concentre directement sur le transport, la transformation et le stockage des données.

Peut-être avez-vous vu des offres d’emploi Big Data et êtes-vous intrigué par la perspective de gérer des données à l’échelle du pétaoctet. Vous êtes peut-être curieux de savoir comment les réseaux antagonistes génératifs créent des images réalistes à partir de données sous-jacentes. Vous n’avez peut-être même jamais entendu parler de l’ingénierie des données, mais vous vous intéressez à la manière dont les développeurs gèrent les vastes quantités de données nécessaires à la plupart des applications d’aujourd’hui.

Quelle que soit la catégorie dans laquelle vous appartenez, cet article d'introduction est pour vous. Vous obtiendrez un aperçu général du domaine, y compris ce qu'est l'ingénierie des données et le type de travail qu'elle implique.

Dans cet article, vous apprendrez:

  • Qu'est-ce que état actuel du domaine de l'ingénierie des données est
  • Comment est l'ingénierie des données utilisé dans l'industrie
  • Qui les divers les clients des ingénieurs de données sont
  • Ce qui fait et ce qui ne fait pas partie du domaine de l'ingénierie des données
  • Comment décider si vous voulez poursuivre l'ingénierie des données comme discipline

Pour commencer, vous répondrez à l'une des questions les plus urgentes sur le terrain: que font les ingénieurs de données, de toute façon?

Que font les ingénieurs de données?

L'ingénierie des données est une discipline très large qui s'accompagne de plusieurs titres. Dans de nombreuses organisations, il peut même ne pas avoir de titre spécifique. Pour cette raison, il est probablement préférable d’identifier d’abord les objectifs de l’ingénierie des données, puis de discuter du type de travail qui produit les résultats souhaités.

L'objectif ultime de l'ingénierie des données est de fournir un flux de données organisé et cohérent pour permettre un travail axé sur les données, tel que:

  • Modèles d'apprentissage automatique de la formation
  • Faire une analyse exploratoire des données
  • Remplir les champs d'une application avec des données externes

Ce flux de données peut être réalisé de différentes manières, et les ensembles d'outils, techniques et compétences spécifiques requis varieront considérablement selon les équipes, les organisations et les résultats souhaités. Cependant, un modèle courant est le pipeline de données. Il s'agit d'un système composé de programmes indépendants qui effectuent diverses opérations sur les données entrantes ou collectées.

Les pipelines de données sont souvent répartis sur plusieurs serveurs:

Un schéma simplifié d'un pipeline de données montrant plusieurs sources extraites dans un lac de données, transformées sur plusieurs segments indépendants, puis stockées dans une base de données de production

Cette image est un exemple de pipeline de données simplifié pour vous donner une idée très basique d'une architecture que vous pouvez rencontrer. Vous verrez une représentation plus complexe plus bas.

Les données peuvent provenir de n'importe quelle source:

  • Appareils Internet des objets
  • Télémétrie du véhicule
  • Flux de données immobilières
  • Activité normale des utilisateurs sur une application Web
  • Tout autre outil de collecte ou de mesure auquel vous pouvez penser

En fonction de la nature de ces sources, les données entrantes seront traitées en temps réel ruisseaux ou à une cadence régulière en lots.

Le pipeline par lequel les données passent est la responsabilité de l'ingénieur de données. Les équipes d'ingénierie des données sont responsables de la conception, de la construction, de la maintenance, de l'extension et, souvent, de l'infrastructure qui prend en charge les pipelines de données. Ils peuvent également être responsables des données entrantes ou, plus souvent, du modèle de données et de la manière dont ces données sont finalement stockées.

Si vous considérez le pipeline de données comme un type d'application, alors l'ingénierie des données commence à ressembler à n'importe quelle autre discipline du génie logiciel.

De nombreuses équipes s'orientent également vers la construction plateformes de données. Dans de nombreuses entreprises, il ne suffit pas de disposer d’un seul pipeline pour enregistrer les données entrantes quelque part dans une base de données SQL. Les grandes organisations ont plusieurs équipes qui ont besoin de différents niveaux d'accès à différents types de données.

Par exemple, intelligence artificielle (IA) les équipes peuvent avoir besoin de moyens pour étiqueter et diviser les données nettoyées. Intelligence économique (BI) les équipes peuvent avoir besoin d'un accès facile aux données agrégées et à la création de visualisations de données. Science des données les équipes peuvent avoir besoin d'un accès au niveau de la base de données pour explorer correctement les données.

Si vous êtes familiarisé avec le développement Web, vous trouverez peut-être cette structure similaire au modèle de conception Model-View-Controller (MVC). Avec MVC, les ingénieurs de données sont responsables du modèle, les équipes IA ou BI travaillent sur les vues et tous les groupes collaborent sur le contrôleur. Construire des plates-formes de données qui répondent à tous ces besoins devient une priorité majeure dans les organisations avec des équipes diversifiées qui dépendent de l'accès aux données.

Maintenant que vous avez vu une partie de ce que font les ingénieurs de données et à quel point ils sont liés aux clients qu'ils servent, il sera utile d'en savoir un peu plus sur ces clients et sur les responsabilités des ingénieurs de données à leur égard.

Quelles sont les responsabilités des ingénieurs de données?

Les clients qui comptent sur les ingénieurs de données sont aussi diversifiés que les compétences et les résultats des équipes d'ingénierie de données elles-mêmes. Quel que soit le domaine que vous poursuivez, vos clients détermineront toujours les problèmes que vous résolvez et comment vous les résolvez.

Dans cette section, vous découvrirez quelques clients courants des équipes d'ingénierie des données du point de vue de leurs besoins en données:

  • Équipes Data Science et IA
  • Équipes de veille économique ou d'analyse
  • Équipes produit

Avant que l'une de ces équipes puisse travailler efficacement, certains besoins doivent être satisfaits. En particulier, les données doivent être:

  • Acheminé de manière fiable dans le système plus large
  • Normalisé à un modèle de données sensible
  • Nettoyé pour combler les lacunes importantes
  • Rendu accessible à tous les membres pertinents

Ces exigences sont plus détaillées dans l'excellent article The AI ​​Hierarchy of Needs de Monica Rogarty. En tant qu'ingénieur de données, vous êtes responsable de répondre aux besoins en données de vos clients. Cependant, vous utiliserez diverses approches pour adapter leurs flux de travail individuels.

Flux de données

Pour faire quoi que ce soit avec des données dans un système, vous devez d'abord vous assurer qu'elles peuvent circuler dans et à travers le système de manière fiable. Les entrées peuvent être presque tous les types de données que vous pouvez imaginer, y compris:

  • Flux en direct de données JSON ou XML
  • Des lots de vidéos mis à jour toutes les heures
  • Données mensuelles de prélèvement sanguin
  • Lots hebdomadaires d'images étiquetées
  • Télémétrie à partir des capteurs déployés

Les ingénieurs de données sont souvent responsables de la consommation de ces données, de la conception d'un système capable de prendre ces données en entrée d'une ou de plusieurs sources, de les transformer, puis de les stocker pour leurs clients. Ces systèmes sont souvent appelés ETL pipelines, qui signifie extrait, transformer, et charge.

La responsabilité du flux de données relève principalement du extrait étape. Mais la responsabilité de l'ingénieur de données ne se limite pas à l'extraction des données dans le pipeline. Ils doivent s'assurer que le pipeline est suffisamment robuste pour rester en place face à des données inattendues ou mal formées, des sources hors ligne et des bugs fatals. La disponibilité est très importante, en particulier lorsque vous utilisez des données en temps réel ou urgentes.

Votre responsabilité de maintenir le flux de données sera assez cohérente, quel que soit votre client. Cependant, certains clients peuvent être plus exigeants que d'autres, en particulier lorsque le client est une application qui repose sur des données mises à jour en temps réel.

Normalisation et modélisation des données

Les données qui circulent dans un système sont excellentes. Cependant, à un moment donné, les données doivent se conformer à une sorte de norme architecturale. Normaliser les données impliquent des tâches qui rendent les données plus accessibles aux utilisateurs. Cela comprend, mais sans s'y limiter, les étapes suivantes:

  • Suppression des doublons (déduplication)
  • Correction des données conflictuelles
  • Conformité des données à un modèle de données spécifié

Ces processus peuvent se produire à différentes étapes. Par exemple, imaginez que vous travaillez dans une grande organisation avec des data scientists et une équipe BI, qui dépendent tous deux de vos données. Vous pouvez stocker des données non structurées dans un lac de données à utiliser par vos clients de la science des données pour l'analyse exploratoire des données. Vous pouvez également stocker les données normalisées dans une base de données relationnelle ou un entrepôt de données à utiliser par l'équipe BI dans ses rapports.

Vous pouvez avoir plus ou moins d'équipes clients ou peut-être une application qui consomme vos données. L'image ci-dessous montre une version modifiée de l'exemple de pipeline précédent, mettant en évidence les différentes étapes auxquelles certaines équipes peuvent accéder aux données:

Un exemple de pipeline comprenant des équipes clients à différentes étapes. Scientifiques de données au lac de données, intelligence d'affaires dans l'entrepôt de données plus organisé et application dans la base de données de production

Dans cette image, vous voyez un pipeline de données hypothétique et les étapes auxquelles vous trouverez souvent différentes équipes de clients travaillant.

Si votre client est une équipe produit, un modèle de données bien conçu est essentiel. Un modèle de données réfléchi peut faire la différence entre une application lente et à peine réactive et une application qui s'exécute comme si elle savait déjà à quelles données l'utilisateur souhaite accéder. Ces types de décisions sont souvent le résultat d'une collaboration entre les équipes d'ingénierie produit et de données.

La normalisation et la modélisation des données font généralement partie du transformer étape d’ETL, mais ils ne sont pas les seuls dans cette catégorie. Le nettoyage des données est une autre étape de transformation courante.

Nettoyage des données

Nettoyage des données va de pair avec la normalisation des données. Certains considèrent même la normalisation des données comme un sous-ensemble du nettoyage des données. Mais alors que la normalisation des données vise principalement à rendre les données disparates conformes à certains modèles de données, le nettoyage des données comprend un certain nombre d'actions qui rendent les données plus uniformes et complètes, notamment:

  • Conversion des mêmes données en un seul type (par exemple, forcer les chaînes d'un champ entier à être des entiers)
  • S'assurer que les dates sont dans le même format
  • Remplir les champs manquants si possible
  • Contraindre les valeurs d'un champ à une plage spécifiée
  • Suppression des données corrompues ou inutilisables

Le nettoyage des données peut s'intégrer dans les étapes de déduplication et d'unification du modèle de données dans le diagramme ci-dessus. En réalité, cependant, chacune de ces étapes est très vaste et peut comprendre n'importe quel nombre d'étapes et de processus individuels.

Les actions spécifiques que vous entreprenez pour nettoyer les données dépendront fortement des entrées, du modèle de données et des résultats souhaités. L'importance des données propres, cependant, est constante:

  • Scientifiques des données en ont besoin pour effectuer des analyses précises.
  • Ingénieurs en apprentissage automatique en ont besoin pour construire des modèles précis et généralisables.
  • Équipes de Business Intelligence en ont besoin pour fournir des rapports et des prévisions précis à l'entreprise.
  • Équipes produit en ont besoin pour garantir que leur produit ne plante pas ou ne donne pas d'informations erronées aux utilisateurs.

La responsabilité du nettoyage des données incombe à de nombreuses épaules différentes et dépend de l'organisation globale et de ses priorités. En tant qu'ingénieur de données, vous devez vous efforcer d'automatiser le nettoyage autant que possible et d'effectuer régulièrement des contrôles ponctuels sur les données entrantes et stockées. Vos équipes clients et votre direction peuvent fournir des informations sur ce qui constitue des données propres à leurs fins.

Accessibilité des données

L'accessibilité des données n'attire pas autant d'attention que la normalisation et le nettoyage des données, mais c'est sans doute l'une des responsabilités les plus importantes d'une équipe d'ingénierie des données centrée sur le client.

Accessibilité des données fait référence à la facilité d'accès et de compréhension des données pour les clients. C'est quelque chose qui est défini très différemment selon le client:

  • Équipes de science des données peut simplement avoir besoin de données accessibles avec une sorte de langage de requête.
  • Équipes analytiques peut préférer des données regroupées par une métrique, accessibles via des requêtes de base ou une interface de rapport.
  • Équipes produit voudront souvent des données accessibles via des requêtes rapides et simples qui ne changent pas souvent, dans un souci de performance et de fiabilité du produit.

Parce que les grandes organisations fournissent à ces équipes et à d'autres les mêmes données, beaucoup ont évolué vers le développement de leurs propres plates-formes internes pour leurs équipes disparates. Le service de télé-assistance Uber, qui a partagé de nombreux détails de son impressionnante plate-forme Big Data, en est un bon exemple.

En fait, de nombreux ingénieurs de données se retrouvent en train de devenir des ingénieurs de plate-forme, ce qui montre clairement l'importance continue des compétences en ingénierie des données pour les entreprises axées sur les données. Étant donné que l'accessibilité des données est intimement liée à la façon dont les données sont stockées, il s'agit d'un élément majeur de la charge étape d'ETL, qui fait référence à la manière dont les données sont stockées pour une utilisation ultérieure.

Maintenant que vous avez rencontré des clients courants en ingénierie de données et que vous avez découvert leurs besoins, il est temps d’examiner de plus près les compétences que vous pouvez développer pour répondre à ces besoins.

Que sont les compétences communes en ingénierie des données?

Les compétences en ingénierie des données sont en grande partie les mêmes que celles dont vous avez besoin pour l'ingénierie logicielle. Cependant, il existe quelques domaines sur lesquels les ingénieurs de données ont tendance à se concentrer davantage. Dans cette section, vous découvrirez plusieurs ensembles de compétences importants:

  • Concepts généraux de programmation
  • Bases de données
  • Systèmes distribués et ingénierie cloud

Chacun de ces éléments jouera un rôle crucial en faisant de vous un ingénieur de données complet.

Compétences générales en programmation

L'ingénierie des données est une spécialisation du génie logiciel, il est donc logique que les principes fondamentaux du génie logiciel soient en haut de cette liste. Comme pour les autres spécialisations en génie logiciel, les ingénieurs de données doivent comprendre les concepts de conception tels que DRY (ne vous répétez pas), la programmation orientée objet, les structures de données et les algorithmes.

Comme dans d'autres spécialités, il existe également quelques langues privilégiées. Au moment d'écrire ces lignes, ceux que vous voyez le plus souvent dans les descriptions de poste d'ingénierie de données sont Python, Scala et Java. Qu'est-ce qui rend ces langues si populaires?

Python est populaire pour plusieurs raisons. L'un des plus importants est son omniprésence. À bien des égards, Python fait partie des trois langages de programmation les plus populaires au monde. Par exemple, il s'est classé deuxième dans l'indice de la communauté TIOBE de novembre 2020 et troisième dans l'enquête 2020 auprès des développeurs de Stack Overflow.

Il est également largement utilisé par les équipes d'apprentissage automatique et d'IA. Les équipes qui travaillent en étroite collaboration ont souvent besoin de pouvoir communiquer dans le même langage, et Python est toujours la lingua franca du domaine.

Une autre raison plus ciblée de la popularité de Python est son utilisation dans des outils d'orchestration comme Apache Airflow et les bibliothèques disponibles pour des outils populaires comme Apache Spark. Si une organisation utilise de tels outils, il est essentiel de connaître les langues qu’elle utilise.

Scala est également très populaire, et comme Python, cela est en partie dû à la popularité des outils qui l'utilisent, en particulier Apache Spark. Scala est un langage fonctionnel qui s'exécute sur la machine virtuelle Java (JVM), ce qui permet de l'utiliser de manière transparente avec Java.

Java n'est pas aussi populaire dans l'ingénierie des données, mais vous le verrez toujours dans de nombreuses descriptions de poste. Ceci est en partie dû à son omniprésence dans les piles de logiciels d'entreprise et en partie à son interopérabilité avec Scala. Avec Scala utilisé pour Apache Spark, il est logique que certaines équipes utilisent également Java.

En plus des compétences générales en programmation, une bonne connaissance des technologies de bases de données est essentielle.

Technologies de base de données

Si vous allez déplacer des données, vous allez beaucoup utiliser des bases de données. De manière très générale, vous pouvez séparer les technologies de base de données en deux catégories: SQL et NoSQL.

Les bases de données SQL sont systèmes de gestion de bases de données relationnelles (SGBDR) qui modélisent les relations et avec lesquelles interagissent à l'aide du langage de requête structuré ou SQL. Ceux-ci sont couramment utilisés pour modéliser des données définies par des relations, telles que les données de commande client.

NoSQL signifie généralement «tout le reste». Ce sont des bases de données qui stockent généralement des données non relationnelles, telles que les suivantes:

Bien que vous n'ayez pas à connaître les tenants et les aboutissants de toutes les technologies de base de données, vous devez comprendre les avantages et les inconvénients de ces différents systèmes et être en mesure d'en apprendre un ou deux rapidement.

Les systèmes sur lesquels les ingénieurs de données travaillent sont de plus en plus situés sur le cloud, et les pipelines de données sont généralement répartis sur plusieurs serveurs ou clusters, que ce soit sur un cloud privé ou non. Pour cette raison, un futur ingénieur de données doit comprendre les systèmes distribués et l'ingénierie du cloud.

Systèmes distribués et ingénierie cloud

L'un des principaux avantages des techniques d'ingénierie de données telles que les pipelines ETL est qu'elles se prêtent à la mise en œuvre de systèmes distribués. Un modèle courant consiste à avoir des segments indépendants d'un pipeline s'exécutant sur des serveurs séparés orchestrés par une file d'attente de messages comme RabbitMQ ou Apache Kafka.

Il est essentiel de comprendre comment concevoir ces systèmes, quels sont leurs avantages et leurs risques, et quand les utiliser.

Ces systèmes nécessitent de nombreux serveurs et les équipes réparties géographiquement ont souvent besoin d'accéder aux données qu'ils contiennent. Les fournisseurs de cloud privé tels qu'Amazon Web Services, Google Cloud et Microsoft Azure sont des outils extrêmement populaires pour la création et le déploiement de systèmes distribués.

Une compréhension de base des principales offres des fournisseurs de cloud ainsi que de certains des outils de messagerie distribués les plus populaires vous aideront à trouver votre premier emploi en ingénierie de données. Vous pouvez vous attendre à apprendre ces outils plus en profondeur sur le tas.

À l'heure actuelle, vous avez beaucoup appris sur ce qu'est l'ingénierie des données. Mais comme il n'y a pas de définition standard de la discipline, et parce qu'il y a beaucoup de disciplines connexes, vous devriez également avoir une idée de ce qu'est l'ingénierie des données ne pas.

Qu'est-ce que l'ingénierie des données?

De nombreux domaines sont étroitement liés à l'ingénierie des données et vos clients seront souvent membres de ces domaines. Il est important de connaître vos clients. Vous devez donc apprendre à connaître ces domaines et ce qui les distingue de l’ingénierie des données.

Voici quelques-uns des domaines qui sont étroitement liés à l'ingénierie des données:

  • Science des données
  • L'intelligence d'entreprise
  • Ingénierie de l'apprentissage automatique

Dans cette section, vous examinerez de plus près ces champs, en commençant par la science des données.

Science des données

Si l'ingénierie des données est régie par la façon dont vous déplacez et organisez d'énormes volumes de données, alors la science des données est régie par ce que vous faites avec ces données.

Les data scientists interrogent, explorent et essaient généralement de tirer des informations d'ensembles de données. Ils peuvent écrire des scripts uniques à utiliser avec un ensemble de données spécifique, tandis que les ingénieurs de données ont tendance à créer des programmes réutilisables en utilisant les meilleures pratiques d'ingénierie logicielle.

Les data scientists utilisent des outils statistiques tels que le clustering et les régressions k-means, ainsi que des techniques d'apprentissage automatique. Ils travaillent souvent avec R ou Python et essaient de tirer des informations et des prédictions à partir de données qui guideront la prise de décision à tous les niveaux d'une entreprise.

Les data scientists viennent souvent d'une formation scientifique ou statistique, et leur style de travail en est le reflet. Ils travaillent sur un projet qui répond à une question de recherche spécifique, tandis qu'une équipe d'ingénierie des données se concentre sur la création de produits internes extensibles, réutilisables et rapides.

Un excellent exemple de data scientists répondant à des questions de recherche peut être trouvé dans les entreprises de biotechnologie et de technologie de la santé, où les data scientists explorent des données sur les interactions médicamenteuses, les effets secondaires, les résultats des maladies, etc.

L'intelligence d'entreprise

L'intelligence d'affaires est similaire à la science des données, avec quelques différences importantes. Là où la science des données se concentre sur la prévision et la réalisation de prévisions futures, l'intelligence d'affaires se concentre sur la fourniture d'une vue de l'état actuel de l'entreprise.

Ces deux groupes sont servis par des équipes d'ingénierie des données et peuvent même travailler à partir du même pool de données. L'intelligence d'affaires, cependant, consiste à analyser les performances de l'entreprise et à générer des rapports à partir des données. Ces rapports aident ensuite la direction à prendre des décisions au niveau de l'entreprise.

À l'instar des scientifiques des données, les équipes de veille stratégique s'appuient sur des ingénieurs de données pour créer les outils qui leur permettent d'analyser et de rendre compte des données pertinentes pour leur domaine d'intérêt.

Ingénierie d'apprentissage automatique

Les ingénieurs en apprentissage automatique sont un autre groupe avec lequel vous entrerez souvent en contact. Vous pouvez faire un travail similaire à eux, ou vous pourriez même être intégré dans une équipe d'ingénieurs en apprentissage automatique.

À l'instar des ingénieurs de données, les ingénieurs en apprentissage automatique se concentrent davantage sur la création de logiciels réutilisables et beaucoup ont une formation en informatique. Cependant, ils se concentrent moins sur la création d'applications et plus sur la création de modèles d'apprentissage automatique ou la conception de nouveaux algorithmes à utiliser dans les modèles.

Les modèles créés par les ingénieurs en apprentissage automatique sont souvent utilisés par les équipes produit dans les produits destinés aux clients. Les données que vous fournissez en tant qu'ingénieur de données seront utilisées pour former leurs modèles, ce qui rendra votre travail fondamental pour les capacités de toute équipe d'apprentissage automatique avec laquelle vous travaillez.

Par exemple, un ingénieur en apprentissage automatique peut développer un nouvel algorithme de recommandation pour le produit de votre entreprise, tandis qu'un ingénieur en données fournirait les données utilisées pour former et tester cet algorithme.

Une chose importante à comprendre est que les domaines que vous avez examinés ici ne sont souvent pas clairs. Les personnes ayant une formation en science des données, en BI ou en apprentissage automatique peuvent effectuer des travaux d'ingénierie des données dans une organisation, et en tant qu'ingénieur de données, vous pouvez être appelé à aider ces équipes dans leur travail.

Vous pourriez vous retrouver un jour à restructurer un modèle de données, à créer un autre outil d'étiquetage de données et à optimiser un cadre d'apprentissage profond interne par la suite. Les bons ingénieurs de données sont flexibles, curieux et prêts à essayer de nouvelles choses.

Conclusion

Cela complète votre introduction au domaine de l'ingénierie des données, l'une des disciplines les plus demandées pour les personnes ayant une formation ou un intérêt pour l'informatique et la technologie!

Dans ce didacticiel, vous avez appris:

  • Quoi ingénieurs de données faire
  • Qui le les clients des ingénieurs de données sont
  • Quoi compétences sont communs à l'ingénierie des données
  • Quelle ingénierie de données n'est pas

Vous êtes maintenant au point où vous pouvez décider si vous voulez approfondir et en savoir plus sur ce domaine passionnant. L'ingénierie des données vous fascine-t-elle? Êtes-vous intéressé à l'explorer plus en profondeur? Faites le nous savoir dans les commentaires!