L'ingénierie des données n'est pas de l'ingénierie logicielle

Prétendre que les données et les logiciels sont identiques est contre-productif pour le succès de vos ingénieurs de données.
Ces dernières années, il semble que l'ingénierie des données converge avec le DevOps. Les deux domaines ont adopté l'infrastructure cloud, la conteneurisation, le CI/CD et GitOps pour offrir des produits numériques fiables à leurs clients. Cette convergence sur un ensemble commun d'outils a conduit beaucoup à penser qu'il n'y a pas de distinction significative entre l'ingénierie des données et l'ingénierie logicielle. Ainsi, le fait que l'ingénierie des données soit considérée comme assez "rudimentaire" est attribué au retard des ingénieurs de données dans l'adoption de bonnes pratiques de développement logiciel.
Cette évaluation est erronée. L’ingénierie des données et l’ingénierie logicielle partagent de nombreux outils et pratiques communs, mais elles diffèrent également considérablement dans un certain nombre de domaines clés. Ignorer ces différences et gérer une équipe d'ingénierie de données comme une équipe de produits logiciels est une erreur. Pensez à l’ingénierie des données comme à une tomate : c’est un fruit mais cela ne veut pas dire qu’il faut l’ajouter à une salade de fruits. Cet article vise à mettre en évidence certains des défis uniques de l'ingénierie des données et pourquoi cela nécessite une approche personnalisée.
Les Différences Fondamentales
1. Nature des pipelines de Données
Pipelines vs Applications
Les ingénieurs de données sont concernés par la création de pipelines de données. Contrairement aux applications. Les pipelines de données se distinguent des applications logicielles traditionnelles par leur nature et leurs objectifs. Alors que les applications visent à fournir une valeur directe aux utilisateurs, les pipelines de données se concentrent sur la transformation et le déplacement des données. Cette différence fondamentale entraîne plusieurs distinctions :
- Les applications offrent une valeur directe aux utilisateurs via une nouvelle modalité d'interaction, tandis que les pipelines de données ne fournissent de la valeur qu'à travers les ensembles de données qu'ils produisent.
- Les applications ont généralement plusieurs fonctionnalités indépendantes, tandis que les pipelines de données ont une seule fonctionnalité pertinente : produire l'ensemble de données souhaité.
- Les applications gèrent un état relativement petit, souvent délégué à un système externe, tandis que les pipelines de données gèrent un grand nombre d'états et sont étroitement couplés aux sources de données.
Défis et Perspectives uniques dans le Développement
Le développement de pipelines de données ne peut pas être réalisé en petites itérations comme dans les cadres agiles. Un pipeline de données est soit terminé, soit sans valeur pour le client, ce qui rend le développement et les tests plus complexes.
Comprendre ces différences est essentiel pour reconnaître les défis uniques auxquels sont confrontés les ingénieurs de données.
2. Défis Uniques de l'Ingénierie des Données
L'ingénierie des données présente des défis distincts par rapport au développement logiciel traditionnel en raison de la nature spécifique des pipelines de données. Contrairement aux applications logicielles classiques, les pipelines de données sont conçus pour extraire, transformer et charger (ETL) les données d'une source à une destination. Cette approche soulève des défis uniques, nécessitant une compréhension approfondie des différences entre le développement de pipelines de données et le développement d'applications. Ces défis vont de la gestion de l'état et du couplage serré aux tests unitaires et à la rétroaction lente, en passant par la parallélisation limitée du développement. Dans ce contexte, explorer ces défis permet de mieux comprendre les complexités de l'ingénierie des données et de développer des approches adaptées pour les relever avec succès.
Développement en Itérations Limitées :
- Contrairement aux pratiques agiles courantes, le développement des pipelines de données ne peut pas toujours suivre un modèle itératif en raison de la nature binaire du résultat : un pipeline est soit terminé et fonctionnel, soit il n'apporte aucune valeur au client.
Tests Unitaires et Rétroaction lente :
- Les tests unitaires, qui sont essentiels pour assurer la qualité et la fiabilité du code, ne sont pas toujours applicables de manière efficace aux pipelines de données en raison de leur complexité et de leur dépendance à l'égard de données externes. Cela entraîne un cycle de rétroaction plus lent dans le processus de développement.
Parallélisation Limitée du Développement :
- La division des tâches de développement entre plusieurs membres de l'équipe n'est pas aussi efficace dans le développement de pipelines de données en raison de la nature séquentielle des opérations de traitement des données. Cette limitation entrave la parallélisation du développement et peut ralentir le processus global.
Gestion de l'État et Couplage Serré :
- Les pipelines de données gèrent un grand nombre d'états et sont étroitement couplés aux sources de données. Cela rend la gestion de l'état et la maintenance des pipelines complexes, nécessitant une approche différente de celle des applications logicielles traditionnelles.
Complexité des Données et Interactions Externes :
- Les données utilisées dans les pipelines de données peuvent être complexes et hétérogènes, provenant de différentes sources avec des formats variés. De plus, les interactions avec des systèmes externes ajoutent une couche de complexité supplémentaire, car la fiabilité et la stabilité de ces systèmes peuvent être variables.
Conclusion
En conclusion, il est clair que l'ingénierie des données se distingue nettement de l'ingénierie logicielle traditionnelle. Bien que les deux domaines partagent certaines pratiques et outils, les ingénieurs de données doivent faire face à des défis uniques en raison de la nature spécifique des pipelines de données. Ces différences essentielles incluent la nécessité de produire des ensembles de données plutôt que des fonctionnalités directes pour les utilisateurs, la difficulté à appliquer des méthodologies de développement itératif en raison de la nature binaire des résultats, ainsi que les défis liés aux tests unitaires, à la parallélisation du développement et à la gestion de l'état et du couplage serré aux sources de données.
Comprendre ces distinctions est crucial pour les professionnels de l'ingénierie des données afin de développer des approches efficaces pour relever ces défis et garantir le succès des projets de traitement des données. En fin de compte, bien que l'ingénierie des données et l'ingénierie logicielle partagent des similitudes, reconnaître et respecter leurs différences est essentiel pour garantir la fiabilité, la robustesse et la valeur des produits et des systèmes dans le domaine en constante évolution de la technologie des données.
Je suis Conseillé Data et Data Engineer chez
DataBeez. Auparavant, j'étais développeur Logiciel. Les opinions exprimées dans ces articles sont uniquement les miennes et ne reflètent pas celles de mes employeurs actuels ou passés. Consultez mon profil
LinkedIn où j'écris occasionnellement sur des choses aléatoires qui m'intéressent.




Pourquoi les leaders visionnaires investissent dans la Data : Décisions, Compétitivité et Innovation

