Connexion

Les outils de l’ingénieur DevOps

Le 26 May 2021
5/5 (2 votes)

Pour mener à bien sa mission de déploiement d’une solution applicative, l’ingénieur DevOps a à sa disposition une multitude d’outils spécifiques. 

Assez nouvelles sur le marché, ces solutions couvrent un maximum d’environnements possibles (comme AWS, le Cloud Amazon, le Cloud Microsoft Azure, Google Cloud Plateform, GCP, etc.) tout en s’adaptant aux différentes phases de déploiement, comme la phase de code, celle de tests continus, la mise en production ainsi que la sécurisation des données. 

En qualité de chef de projet et de manager, c’est à l’ingénieur DevOps que revient la responsabilité de choisir les outils adaptés pour la bonne mise du projet, au regard des solutions déjà en place, des compétences des équipes ainsi que des objectifs visés. Découvrons ensemble les principaux outils du DevOps en fonction de leur utilité.

Les outils de l’ingénieur DevOps

Les solutions de gestion de code source

L’ingénieur DevOps révolutionne les pratiques du développement applicatif dans la mesure où il sert de passerelle entre deux mondes informatiques bien distincts et aux intérêts opposés : les développeurs informatiques et les gestionnaires de la mise en production (administrateurs réseaux et systèmes).

Mais, pour pouvoir décloisonner deux métiers spécifiques, il convient d’utiliser les bons outils afin d’aligner les différentes équipes de développement sur un même outil de gestion de code source. L’intérêt de ce type d’outils, dit de visioning, est de permettre la création d’une nouvelle version à chaque modification du code afin de conserver un historique de la modification et son auteur. Deux outils sont principalement utilisés par les DevOps :

  • GitHub est un service d’hébergement de projet de programmation permettant d’enregistrer les modifications du code source et de suivre l’avancement des travaux tout en gardant accès à l’historique de travail ;
  • SourceForge permet de créer un projet en open source et propose une palette de fonctionnalités très complète, comme wikis de projets, accès à une BDD MySQL, URL de sous-domaine unique, métriques d’analyse, etc.

Les outils d’intégration et de déploiement continus type CI/CD

Le développement CI (Intégration Continue) et CD (Déploiement Continu) fait référence à la phase de tests du code source durant toute sa phase d’écriture.

L’intérêt de cette démarche est de réduire le temps nécessaire pour créer de nouvelles fonctions, puisque le code est livré au fur et mesure de sa rédaction à l’équipe opérationnelle chargée de sa mise en production, et non pas livré en un seul bloc en fin d’écriture.

Les outils d’intégration et de déploiement continus permettent donc de gérer le dépôt de code fonctionnel et vérifié et/ou les versions d’applications, en d’autres termes, il s’agit essentiellement de solutions de partage.

Pour ce faire, plusieurs outils sont à la disposition du DevOps, dont les principaux sont :

  • GitLab, de plus en plus populaire chez les DevOps, est un outil proposant un accès facilité à Azure DevOps ;
  • Jenkins permet de surveiller la réalisation des tâches répétées grâce à de nombreux plugins permettant de livrer une solution simple d’utilisation dans les configurations et les tests de régression d’automatisation ;
  • BitBucket propose un environnement complet et intègre un puissant outil de suivi et de résolution de problèmes et d’erreurs de code ;
  • Beanstalk permet d’écrire le code, de procéder aux tests et de le déployer directement depuis un navigateur.

Notons que d’autres solutions existent, le plus souvent payantes, telles que GitLabCI, TeamCity, Concourse, CircleCI, Bamboo, Travis CI, etc. Enfin, les Cloud provider (comme Google et Amazon (AWS) pour les principaux hébergeurs) proposent également leur outil intégré d’intégration et de déploiements continus.

Les outils de gestion de la configuration

La gestion des configurations rassemble les processus permettant de valider la conformité du livrable au regard des exigences attendues durant son cycle de vie, grâce au référencement des applications et des ressources informatiques à disposition de l’entreprise afin d’optimiser les mises en production de code.

Une bonne gestion de configuration est la garantie d’une cohérence des systèmes et des logiciels. De plus, combinée avec l’automatisation grâce aux outils d’infrastructure as a code, le processus de configuration permet d’améliorer l’efficacité en gérant plus de cibles avec moins de ressources.

En effet, une infrastructure de type as a code permet d’automatiser les tâches reproductibles au sein d’une infrastructure IT, comme le provisioning, la configuration ou les déploiements, grâce à codage de l’ensemble des processus à exécuter automatiquement.

La palette d’outils de gestion de la configuration ou d’infrastructure as a code est vaste, en voici quelques exemples :

  • Red Hat Ansible est l’outil de référence pour automatiser les tâches courantes, comme le provisioning dans le Cloud, tout en facilitant la configuration et la modification d’un ou plusieurs serveurs de manière déclarative ou prévisible ;
  • Chef, de plus en plus populaire, est un outil open source qui permet d’automatiser des infrastructures de type serveur ou poste de travail puisqu’il est compatible avec de nombreux OS (Windows, Linux, Solaris, etc.) ;
  • Puppet est une solution open source concurrente de Chef, particulièrement adaptée pour fonctionner avec le Cloud Amazon ;
  • Terraform est un outil particulièrement adapté pour le provisioning d’infrastructure puisqu’il automatise la construction des ressources et facilite la définition des typologies Cloud.

Les solutions de containers logiciels

Les outils de containers logiciels permettent d’isoler une application du reste des éléments dont elle a besoin pour fonctionner, afin de réduire les risques d’erreur lors de sa mise en production. Le but de ce type d’outils est de permettre au DevOps de rendre une application portable depuis l’environnement de développement aux serveurs de production.

L’outil le plus utilisé pour la mise en containers est Docker, car il permet une automatisation et une standardisation du déploiement d’application dans des containers virtuels afin de construire un environnement sain en ne faisant tourner qu’une seule application.

Cependant, la mise en containers implique de mettre en place en orchestration afin de gérer l’architecture de ces microservices et leur mise en réseau. De plus, l’orchestration des containers, compatible avec tous les environnements acceptant la gestion de microservices, permet de déployer la même application dans plusieurs environnements distincts, et cela sans en modifier la conception.

Kubernetes est l’orchestrateur de containers le plus utilisé sur le marché, car en plus d’abriter un nombre important de paquets, Kubernetes automatise le processus de gestion des containers.

Les outils de monitoring et d’alerte

Une fois le déploiement effectué, il est indispensable de faire une analyse de l’infrastructure et des applications afin d’en vérifier la qualité et la performance pour en tirer des pistes d’amélioration.

Trois outils sont principalement utilisés par les DevOps :

  • Grafana est un logiciel multiplateforme orienté sur la visualisation des données pour faciliter la lecture des informations et détecter les bugs à l’aide de tableaux de bord et de graphiques de monitoring ;
  • ELK stack centralise les données qu’il collecte afin de détecter et résoudre les erreurs rencontrées, mettre en place des audits de performance et créer un système d’alertes mails ou SMS ;
  • Prometheus enregistre les métriques en temps réel grâce à un langage de requête simple, mais puissant et permet de générer des alertes.

Le nombre d’outils à destination des DevOps ne cesse de se développer. Le choix des bons outils repose avant tout sur les besoins et les compétences des équipes et les objectifs du projet de déploiement.

Je note cette page
noter