Quel data scientist ne s’est jamais mordu les doigts lorsqu’un algorithme, qui marchait parfaitement bien dans son environnement local, ne fonctionne plus après son déploiement dans le cloud ? C’est une situation qui peut facilement arriver et qui démontre bien que l’environnement dans lequel un logiciel ou une application s’exécute est un paramètre essentiel à prendre en compte !
Or, il est très courant (si ce n’est inévitable) d’avoir plusieurs environnements différents au sein d’une architecture informatique ou même au sein d’un projet. Au minimum, il faut un environnement de test et un environnement de production (et probablement plus en fonction de vos processus internes), chacun de ces environnements ayant une configuration différente et un rôle propre dans le cycle de vie du logiciel.
Mais alors, s’il est inévitable de travailler avec plusieurs environnements, quelles sont les mesures mises en avant par le DataOps pour prévenir les problèmes que cela peut impliquer ?
Quels problèmes peuvent apparaître lorsque l’on travaille avec plusieurs environnements en DataOps ?
Cette problématique de gestion de plusieurs environnements n’est pas nouvelle et n’est pas propre à la data ; cela fait longtemps que les développeurs y font face.
On trouve déjà beaucoup de méthodes, d’outils informatiques et de bonnes pratiques apportant des solutions, avec la méthodologie DevOps ou Agile, par exemple. Cependant, les projets de data science et d’intelligence artificielle ont quelques particularités qu’il faut garder en tête.
Tout d’abord, un projet d’analyse des données est souvent synonyme de big data (c’est-à-dire d’énormes volumes de données) ! Et les sources de données disponibles peuvent être différentes d’un environnement à l’autre.
Une autre spécificité d’un projet de data science, comparé à un projet de développement classique, est l’importance de l’étape « bac à sable », c’est-à-dire l’étape durant laquelle les data scientists analysent les flux de données et essayent différentes approches.
Quelles solutions sont mises en avant par le DataOps ?
Centraliser les environnements de développement grâce au cloud
Le travail d’un data scientist évoluant en local n’est pas visible par le reste de l’équipe. Un manque de communication peut alors mener à des divergences, non seulement dans le travail réalisé, mais aussi vis-à-vis des technologies employées (l’un préférera Python, l’autre R, par exemple).
Il est essentiel de fixer clairement les technologies utilisées pour un projet, en anticipant les contraintes qui pourraient survenir lors de la mise en production (par exemple : l’infrastructure existante ne permet pas d’utiliser une technologie donnée en production, il vaut donc mieux l’abandonner).
Pour aller plus loin, vous pouvez décider de centraliser tout le travail en proposant par exemple à vos équipes des services de notebooks dans le cloud, tel Google Colab. Ainsi, le chef de projet a une meilleure visibilité et un meilleur contrôle sur les environnements de travail. C’est un bon point pour la gestion de projet, cependant, les membres de l’équipe perdent en autonomie.
La conteneurisation, standard de l’industrie pour gérer différents environnements
Tout comme le DevOps, le DataOps encourage l’utilisation de conteneurs (containers) permettant de virtualiser des environnements dédiés pour les migrer facilement d’un serveur à un autre.
La conteneurisation est aujourd’hui un standard, plus de 90 % des développeurs l’utilisent.
Parmi les technologies les plus répandues, on retrouve Docker (pour la création de conteneurs), ou encore Kubernetes (pour l’orchestration de conteneurs), dont nous avons déjà parlé ici et là. L’idée avec cette approche est de faire en sorte qu’un environnement soit indépendant de l’infrastructure sur laquelle il est déployé.
Cela rejoint aussi un autre principe fort en DataOps : rendre possible l’automatisation de chaque étape.
Favoriser la mise en place d’un data lake, indépendant des environnements de travail
Enfin, pour ce qui est des données, le DataOps encourage la mise en place d’un data lake (ou entrepôt de données) centralisant les données produites et accompagné d’une gouvernance des données.
Un entrepôt de données est une entité de votre infrastructure informatique dédiée au stockage de données – et offrant une haute flexibilité – de manière à pouvoir en collecter de toutes sortes. Bien sûr, le data lake doit être très sécurisé et ses accès nécessitent d’être contrôlés ; c’est justement le rôle de la gouvernance des données (qui définit aussi les standards de qualité des données).
Avec un tel fonctionnement, chaque projet se verra accorder les accès nécessaires au data lake et viendra collecter et centraliser les données directement dans une database à jour. Ainsi, chaque environnement de travail partage les mêmes données.
Pour conclure, des actions simples peuvent être exécutées dans un premier temps pour faciliter la gestion de différents environnements, mais au fur et à mesure que les projets croissent en nombre et en complexité, il devient nécessaire de mettre en place des process robustes qui se basent sur des technologies éprouvées et adaptées à votre infrastructure informatique. C’est un investissement qui vous évitera beaucoup de mauvaises surprises par la suite !