Retrouvez-nous le 14 mai au Google Cloud Summit à l'Accor Arena - Paris !

logo saagie red
illustration blog CI CD integration tools

Quel Outil d’Intégration Continue Choisir (CI/CD) ?

L’organisation d’une équipe de Data Science est très complexe. En plus du facteur humain, il faut prendre en compte l’organisation technique. Pour coordonner ce type d’équipe, le paradigme DevOps/DataOps propose un ensemble d’outils d’intégration continue essentiels ainsi qu’une chaîne de traitement pour réunir dans une seule équipe plusieurs profils qui étaient isolés auparavant.

Ceci dit, on vit actuellement une vraie bataille d’outils à chaque étape DevOps, plein de nouvelles solutions open source sont créées, et souvent les Data Scientists sont perdus dans cet environnement changeant. Alors, comment trouver une bonne coopération et automatisation dans une équipe data, dans un écosystème peuplé de plus en plus d’outils, qui s’avère complexe, riche et exigeant ? Nous avons sélectionné un ensemble d’outils d’intégration continue qui aideront votre équipe à trouver une automatisation et une coopération plus efficace. Des solutions informatiques qui permettront d’implémenter une meilleure gestion des données.

Trouver une harmonie dans l’écosystème d’outils d’intégration

Le Devops peut être vu à différents niveaux, nous vous proposons ici une décomposition les différentes étapes avec les outils correspondants, pour automatiser et organiser votre équipe de Data Scientists.

Chaque Data Scientist proposera un ensemble d’outils qui lui sont confortables. Les plus courants sont les suivants :

  • L’intégration continue : Bamboo, Jenkins
  • Virtualisation : Docker, Vagrant
  • Source code management (SCM) : Git, Subversion
  • Gestion de dépendances : Gradle, Maven, Ant
  • Cloud : Kubernetes

Regardons maintenant en détail les plus utilisés, la manière de les intégrer et de les faire travailler ensemble.

Jenkins et Jenkins X

Jenkins est l’outil le plus répandu pour l’intégration continue. La planification de tâches est très précise et robuste. Sa force est la quantité de plugins disponibles pour créer des liens à d’autres applications, ce que vous apportera une homogénéisation des processus et un langage commun avec le reste de l’équipe. Malheureusement Jenkins n’est pas connu pour sa facilité d’administration, et beaucoup d’utilisateurs admettent que c’est une source de frustration, surtout dans les versions plus anciennes.

Si la complexité de Jenkins vous freine dans vos développements, essayez alors Bamboo, qui dispose de beaucoup moins de plugins mais qui est une solution out of the box, c’est-à-dire qui pourra s’intégrer à vos développements sans trop de configurations.

Jenkins X, à différence de Jenkins, a été créé pour répondre à un besoin essentiel : s’intégrer dans le paradigme cloud & containers. Jenkins X, qui utilise implicitement Jenkins, est utilisé pour déployer des applications en continu avec Kubernetes.

Docker

Pour pouvoir faire le lien avec l’application industrielle prête à être déployée chez le client, vous devrez passer par une étape de virtualisation. Votre application sera contenue dans un container virtuel qui sera prêt à être installé dans n’importe quel système d’opération. De plus, Docker s’intègre parfaitement avec Jenkins. Vous pourrez donc installer aisément Jenkins avec un container, ce qui vous permettra d’avoir une fluidité de processus dans l’équipe.

Maven

Maven est un outil de construction de code qui permet de compiler, exécuter des tests ou réaliser des distributions. Il gère automatiquement les dépendances des librairies du projet. Les avantages de Maven sont :

  • La standardisation de la structure de dossiers contenant le code,
  • La gestion de dépendances,
  • L’intégration avec d’autres outils.

C’est surtout ce dernier aspect qui nous intéresse dans cet article. Avec Maven, plus besoin d’ajouter manuellement à chaque fois au Docker les paquets, outils ou plugins dont vous aurez besoin. Pour faire interagir Jenkins avec Maven, il faut utiliser le plugin Maven 2 project plugin qui fait partie de la distribution de Jenkins.

Ainsi, on utilisera Maven avec Jenkins pour la compilation, l’exécution des tests unitaires et la génération des paquets. On peut éventuellement utiliser également Apache Ant, un autre outil de compilation pouvant être utilisé avec Jenkins à travers un plugin.

Kubernetes

Kubernetes est un outil open source développé par Google qui permet de gérer vos containers Docker utilisé surtout pour tirer profit des infrastructures multicloud et hybrides. C’est actuellement l’outil le plus utilisé pour déployer des applications dans le cloud. Kubernetes s’interface facilement avec AWS à travers l’outil Kops, et aussi avec Azure d’une manière visuelle très intuitive. De plus, vous pourrez l’utiliser avec Jenkins avec un des nombreux plugins. Kubernetes peut être utilisé facilement avec AWS, Azure et Jenkins.

Git

Vous connaissez sans doute le système de gestion de versions Git et le dépôt pour héberger le code Github. Il s’agit en effet des outils fondamentaux pour gérer le développement de votre code. Ça sera un des premiers outils à mettre en place, au démarrage de votre projet. Lors de l’installation de Jenkins, l’url du dépôt Github vous sera demandée. Vous pourrez voir les modifications effectuées par chaque développeur et gérer les éventuels conflits de versions.

L’interconnexion est la clé

Ne soyez pas impatient (e), vous aurez sans doute besoin de configurer manuellement certains aspects de votre environnement. Néanmoins, la clé est de trouver et déployer une bonne connexion entre les outils de développement. Nous vous avons montré les outils indispensables ainsi que leur interconnexion, avec lesquels vous devriez trouver une bonne automatisation de vos développements. Votre projet avancera beaucoup plus rapidement une fois que ces outils, ces logiciels, seront mis en place et implémentés.