DevOps & Middleware : un nouveau projet pour faciliter la gestion de nos déploiements et renforcer leur fiabilité

Un nouveau projet de collaboration a été initié avec l'équipe Spirales de INRIA Lille laboratoire. Dans ce projet, nous souhaitons adresser les mécanismes de pilotage, d'orchestration et de maintenance des activités de packaging, de livraison et de déploiement de nos applications. Le manque de formalisation et de traçabilité sur les actions qui sont menées pour le déploiement de nos applications, et le fait que certaines d'entre elles soient manuelles ou doivent s'adapter à des spécificités techniques ou fonctionnelles, crée une complexité difficile à gérer uniquement en utilisant les plateformes traditionnelles d'intégration et de déploiement continus (CI/CD). De plus, ce manque de visibilité et de maîtrise d'un processus DevOps automatisé et contrôlé représente un réel obstacle à notre croissance, Berger-Levrault ayant toujours l'intention de gagner des clients à travers le monde.

Par conséquent, et dans le but d'améliorer continuellement notre niveau de service et la confiance de nos clients dans les ressources numériques que nous fournissons, nous envisageons, dans ce projet, la gestion et le suivi de nos activités de déploiement. L'objectif est de maîtriser le processus de déploiement, de faciliter sa mise en œuvre et d'améliorer sa fiabilité. Ci-après sont présentées certaines des approches scientifiques et techniques envisagées :

Un métamodèle et une base de connaissances pour l'exploitation des éléments de déploiement

De multiples informations décrivent un environnement de déploiement : modes de déploiement (sur site, SaaS, IaaS, PaaS, hybrides ou multi-clouds), environnements d'exploitation des clients, caractéristiques des systèmes à déployer (versions, prérequis, OS, espace, navigateurs, etc.), correctifs et mises à jour, etc. Ces informations ne doivent pas être connues uniquement par les équipes d'exploitation ou être stockées dans des fichiers de configuration. Nous cherchons donc à formaliser un méta-modèle pour représenter et manipuler les éléments qui constituent un déploiement. Cela permet la construction d'une base de connaissances qui peut être utilisée comme entrée pour les systèmes automatisés de gestion de configuration. Les pistes choisies pour étudier sont les approches automatiques pour découvrir et cataloguer les infrastructures de déploiement et les fichiers de configuration. l'infrastructure en tant que code des techniques qui permettent de définir et de stocker des contextes de déploiement.

Suivi du processus de déploiement

L'objectif ici est d'étudier les possibilités de récupérer des informations sur les actions qui sont effectuées, de les tracer et de les collecter pour avoir une vue d'ensemble de l'état des déploiements et des problèmes. Cela permet d'améliorer le retour d'information en cas de problème ou de suspendre le processus pour éviter la perte de données ou l'interruption de service pendant le déploiement. Les pipelines CI/CD peuvent être un moyen d'effectuer un tel suivi, mais ils permettent un suivi par projet. Nous avons donc testé des outils de suivi tels que la combinaison de Prometheus et Grafana pour fournir dans une seule vue un ensemble d'indicateurs sur les pipelines de plusieurs projets. Dans son état actuel, la pile testée nous permet de recueillir des informations sur les dépôts du projet, le versionnement du code et l'état de la construction. Il reste à surveiller l'état des actions de livraison et de déploiement. Nous devons également étudier les corrélations existantes entre les indicateurs décrits afin de faciliter le diagnostic en cas de problème. De plus, le lien avec les environnements de déploiement et les caractéristiques des applications déployées doit être mis en évidence.

En outre, nous projetons d'étudier la possibilité d'utiliser des techniques d'apprentissage automatique pour exploiter les données collectées afin d'effectuer des prédictions sur l'état du déploiement, de détecter les comportements inhabituels et d'apprendre à améliorer continuellement les activités de livraison et de déploiement. La surveillance est également essentielle si nous sommes disposés à réparer (ou réparer automatiquement) les actions (mise à jour des configurations, des infrastructures, etc.) en réaction aux événements perçus par le système de surveillance. Cela permettra de maintenir le système de livraison et de déploiement et d'en assurer la fiabilité.

Des moyens d'administration pour la configuration et le déploiement de nos applications

L'objectif ici est de faciliter la mise en œuvre de nouveaux déploiements, avec des moyens d'administration et de configuration. Pour ce faire, nous avons besoin d'une approche permettant de spécifier les environnements de déploiement, les applications à déployer et les moyens d'administration pour appliquer les éléments décrits. Cette approche peut être basée sur le métamodèle mentionné ci-dessus couplé à un DSL (Domain Specific Language). L'équipe de Spirals a travaillé sur de tels DSLs dans le cadre de ses recherches sur la gestion de la configuration des applications Cloud basée sur les modèles. Ces moyens doivent prendre en compte :

  • le regroupement de plusieurs de nos applications métier pour former une suite logicielle, tout en étant gérée par un seul administrateur, sans avoir à mobiliser un administrateur dédié pour chaque application de la suite
  • La distribution de nos applications, où une application peut être constituée de parties interconnectées fonctionnant sur des hôtes distribués.
  • Le déploiement d'un sous-ensemble des fonctionnalités de notre application dans le cas de lignes de produits par exemple, ou d'un sous-ensemble de composants permettant de construire des applications sur mesure.

L'infrastructure en tant que code s'est avérée être une bonne piste pour une manière systématique de créer et de maintenir une infrastructure et de déployer des applications. Une question pertinente que l'on peut se poser est la suivante : dans quelle mesure pouvons-nous alimenter nos propres applications avec des techniques d'infrastructure as code ?

Enfin, il est important de mentionner que BL-Forge, une plateforme d'intégration continue, a été mise en place par les équipes de BL-Tech, avec les outils DevOps les plus récents (GitLab, GitLab-CIGestionnaire de registre Docker, SonarQube, Nexus, Ansible, Jenkinsetc.). Ce travail sur une plateforme qui sera utilisée par toutes les instances de Berger Levrault montre un réel engagement dans la modernisation de nos méthodes de livraison et de déploiement. Nous nous interrogerons donc sur la conformité de toute proposition future au cours de ce projet avec les exigences de cette plateforme. Nous pouvons également nous interroger sur l'utilisation d'une plateforme aussi "moderne" dans le contexte de nos applications Legacy. Une analyse de faisabilité sera nécessaire ainsi que la définition du chemin à mettre en place pour atteindre cet objectif.

Plus ...

Retour en haut