Solution Docker d’Intégration Continue

Dans le cadre de la fin de mes études à l’Exia.CESI, j’ai mené un projet de Recherche et d’Innovation sur l’Intégration Continue avec Docker. Ce projet est composé d’un état de l’art rédigé lors de la quatrième année à l’Exia, et d’une étude menée pendant la cinquième année. Le choix du sujet a été une véritable difficulté pour ce projet. J’ai d’abord souhaité étudier les langages en réalisant des tests de performances afin de rédiger un livre blanc permettant aux entreprises de choisir le langage correspondant à leurs besoins. Avec mes expériences de stages, j’ai vite compris que ceci n’était pas possible dans les petites entreprises. En effet, celles-ci possèdent déjà des processus et des équipes formées sur un langage et elles ne vont pas faire un changement qui engendrerai ce type de coût et irait contre une majorité des développeurs déjà spécialisés. Pour améliorer le fonctionnement de l’entreprise, il peut être préférable d’améliorer son existant. C’est à ce moment que l’intégration continue intervient… La problématique est donc : Pourquoi l’intégration continue n’est elle pas répandue dans l’ensemble des entreprises?

Solution d'Intégration continue avec Docker

J’ai découpé ce projet en deux parties distinctes que sont le rapport écrit avec l’état de l’art et l’étude, et la solution technique présente sur un dépôt Git. Les deux sont diffusées sous licence libre, n’hésitez pas à les lire, les utiliser et les améliorer selon vos besoins.

Résumé du rapport

L’intégration est le processus de partage de code entre développeurs sur un dépôt commun. A chaque intégration, les codes sont réunis et échangés entre eux. L’intégration continue est une pratique de vérification du code à chacune de ses intégrations ayant pour but d’éviter la régression du code ou l’apparition d’une anomalie au sein de celui-ci. Le code est vérifié par un système automatisé de construction qui va valider son bon fonctionnement et sa bonne intégration au reste de l’application existante sur le dépôt. Cela permet de s’assurer que le code peut être compilé sans erreur après chaque partage. L’utilisation de tests permet également d’assurer le bon fonctionnement de l’application, ils sont généralement exécutés lors de la construction.

Durant ce projet, j’ai mené une étude auprès d’entreprises de type éditeur de logiciels et société de services. Les résultats m’ont prouvé que nombre d’entre elles n’utilisent pas de processus d’intégration continue. Les raisons sont diverses mais on retrouve régulièrement des problématiques de complexité, de coût d’installation et de méconnaissance de ces processus. À travers les recherches que j’ai menées et ma propre expérience de l’intégration continue, je suis conscient de cette complexité de mise en place. Cependant, certaines technologies nous permettent aujourd’hui de simplifier cette mise en place. De nombreux outils de qualité sont également disponibles sous forme de logiciels libres.

Ce Projet de Recherche et d’Innovation va donc avoir pour but de résoudre les problèmes qui empêchent les entreprises d’utiliser des processus d’intégration continue. La finalité de ce projet est donc de présenter l’intégration continue comme un outil capital pour les développements d’applications. A titre de solution, un ensemble d’outils permettant la mise en place de processus d’intégration continue dans les entreprises n’en possédant pas sera mis à disposition de celles-ci. Cette solution prend la forme d’un ensemble de conteneurs Docker déployables facilement grâce à l’outil Docker-Compose.

Solution technique

Le questionnaire nous a permis de découvrir les raisons de la faible utilisation des processus d’intégraton continue. Ces raisons étaient principalement la méconnaissance, le temps, la complexité et le coût.

L’état de l’art de ce document permet aux entreprises de découvrir l’origine de l’Intégration Continue, son fonctionnement et ses objectifs. De nombreux ouvrages sont dédiés à ces processus. L’Intégration Continue est un outil qui permettra à certaines entreprises de reprendre le contrôle de leur cycle de livraison et la maîtrise de leurs applications.

Comme nous l’avons vu, l’Intégration Continue offre la possibilité aux entreprises de développement d’augmenter leur productivité en répondant à des problématiques récurrentes dans l’industrie du logiciel. La mise en place de ces processus peut avoir un certain coût initial, notamment en temps puisque les équipes doivent apprendre à bien s’en servir. Cependant, ce coût initial sera très vite compensé lors de la première mise en production ou la première fin de projet. Il est donc souvent avantageux pour une entreprise de considérer l’Intégration Continue comme un investissement à court terme.

Les outils de l’Intégration Continue sont très nombreux. Nous avons vu que beaucoup étaient open sources et avaient des communautés importantes pour les soutenir. Ces projets sont utilisées par de nombreuses entreprises dans des processus d’industrialisation. Il est donc tout à fait possible de mettre en place des processus d’Intégration Continue avec un coût logiciel nul. Les coûts restant sont principalement la formation et l’acquisition des processus par les équipes de développement qui sont très rapidement amorties par l’augmentation de la productivité.

Le problème qu’il reste à gérer est la complexité. Installer cinq logiciels pour en faire fonctionner un chez le client est assez compliqué à vendre et peu de petites entreprises ont véritablement l’envie de prendre le temps de le faire. L’acquisition du savoir-faire par les équipes de développement est assez rapide car elles y voient un intérêt lorsque le partage du collègue ne cause plus de régression sur son propre code.

Afin de répondre aux besoins des entreprises, je propose une solution se basant sur Docker et Docker-Compose et permettant aux entreprises d’expérimenter les processus d’Intégration Continue. La solution prend la forme d’un fichier de configuration Docker-Compose permettant le démarrage des Jenkins, Maven, SonarQube, Git et GitLab. Une documentation simple permet de commencer un projet en utilisant ces outils. La documentation ainsi que le fichier de configuration sont publiés sur mon instance publique de GitLab. Cette documentation présente le worflow de processus d’intégration continue simple permettant aux entreprises de les découvrir. Ils pourront être améliorés afin d’optimiser leur fonctionnement et de les appliquer de manière plus spécifique aux projets cibles.

Le seul prérequis de cette solution est de posséder une instance GNU/Linux avec un noyau dont la version est supérieure à 3.10. En dessous de ce seuil, les noyaux de GNU/Linux ne possèdent pas toutes les fonctionnalités nécessaires à l’utilisation de Docker. Une liste détaillée des distributions gérées est présente sur le site de Docker.

spacer

Laisser un commentaire