Cours > Module > Chapitre

Panorama des outils DevOps

Introduction

On a vu précédemment que le DevOps agit d’abord sur les personnes en mettant en place une philosophie commune de collaboration entre les développeurs et les opérationnels rendue possible par la mise en place d’un ensemble de pratiques tels que le CI/CD. Cette pratique n’est rendue possible qu’avec la mise en place d’un ensemble d’outils et de techniques permettant d’automatiser la livraison d’applications, de la production de code à la construction, au test, au packaging jusqu’au déploiement. Ces outils sont au cœur de la pratique DevOps et un choix judicieux de ces derniers est essentiel pour implémenter au maximum cette philosophie au sein d’une équipe. De nombreux outils sont disponibles sur le marché et chacun répond à un objectif unique, agissant sur une ou plusieurs phases du cycle DevOps, tout en offrant diverses fonctionnalités. Etant donné la richesse de l’écosystème DevOps en matière d’outils et possibilités, on pourra retrouver ci-dessous quelques exemples d’outils non exhaustifs parmi les plus populaires utilisés actuellement sur le marché et qui peuvent être actionnés via un pipeline CI/CD.

Exemple d'outils populaires sur chaque phase du cycle CI/CD

 est un outil de planification puissant de la suite atlassian offrant des fonctionnalités de gestion de projet (notamment agiles)

 

Slack est un outil de communication collaborative intégrable facilement dans un écosystème d’automatisation

 

Teams est un outil de communication collaborative de la suite Microsoft offrant multiples possibilités notamment de pouvoir recevoir des notifications provenant des autres outils 

 
 Trello est un outil de de planification et gestion de projet (en mode Kanban) de la suite atlassian (comme Jira mais disponible en mode freemium avec moins de fonctionnalités)

Outils de gestion du code source

Github est une plateforme web d’hébergement de code et de référentiels GIT open source et privé. Il permet la collaboration de l’équipe lors de la phase de code de manière plus centralisée et efficace. Il offre une version gratuite et open-source en mode SaaS mais également des versions payantes permettant plus de cloisonnement et de sécurité.

 

Gitlab est un concurrent de GitHub avec les mêmes fonctionnalités d’hébergement et de collaboration du code source. Il offre des versions en mode SaaS et self-managed pour plus d’indépendance et de confidentialité dans la gestion des données hébergées.

 

Outils de build du code source

En fonction du langage de programmation utilisé, on peut retrouver plusieurs outils populaires s’intégrant facilement dans la partie CI de notre cycle d’automatisation comme :

Apache Maven est un outil d’automatisation de build utilisé principalement pour les projets JAVA pour gérer la compilation du code ainsi que toutes les dépendances

Gradle est également un outil d’automatisation de build pour les langages de programmation JAVA, Kotlin et Groovy

 NPM est le gestionnaire de paquets par défaut des projets Node JS et permet l’automatisation du build de ces types de projet

Nexus est un outil Open source d’hébergement de packages et dépendances nécessaires aux applications (rpm, jar, war, sql, zip,.exe,…)

Harbor est un outil open source d’hébergement et gestion privée des images Docker et de package HELM.

Outils de tests

Lors de la phase de test, on peut retrouver plusieurs outils de tests automatisés permettant des tests unitaires, de performance, de qualité, de sécurité et d’intégration comme :

Sonarqube est un outil open-source populaire de test de la qualité du code (qualimétrie). Il permet de mesurer la qualité du code pour identifier les défauts, duplications, problèmes de performance, éventuelles failles de sécurité ainsi

que la mise en place de barrières qualité qui peuvent bloquer un pipeline si les exigences ne sont pas remplies

Selenium est un outil automatisé de tests fonctionnels d’IHM afin de s’assurer que l’application est conforme aux exigences métiers et qu’il n’y a pas des écarts de comportement

 Appium est un outil d’automatisation de tests sur les applications mobiles (Android et IOS)

Apache Jmeter est un outil d’automatisation des tests de performance (tests de charge) d’applications et de serveurs

 Octoperf est un outil de test de performance automatisé comme Jmeter, en mode SaaS et self-managed mais payant

Junit est un framework open source de tests unitaires pour le langage de programmation JAVA. On peut citer également PHPUnit pour du code PHP ou PyUnit pour du code Python

Trivy est un outil de scan des vulnérabilités d’images Docker, Git, Système etc.. On peut citer aussi l’outil Snyk qui rentre dans la même catégorie

 

Checkmarx SAST un outil de test de sécurité applicatif spécialisé dans le SAST (Static Application Security Testing)

 

Jenkins est un outil open source permettant d’automatiser et d’orchestrer l’ensemble des tâches allant du code, build, tests jusqu’au déploiement à l’aide de pipelines

Gitlab CI est une fonctionnalité de Gitlab permettant l’automatisation des tâches via des pipelines CI/CD. L’avantage par rapport à Jenkins est qu’il est un outil devops complet de bout en bout

 

Github Actions est une fonctionnalité de Github permettant l’automatisation des taches CI/CD via des workflows

On peut citer également des outils propriétaires comme AWS CodeCatalyst et AWS Codepipeline 

 

Outils de release management

Cette phase marque un contrôle de la fin de phase de l’intégration continue avant de procéder au déploiement du produit vers les environnements de production. Un ensemble d’outils peut être utilisé pour favoriser une meilleure synchronisation des équipes de développement et de déploiement tels que :

XL Release est un outil payant qui offre une gestion complète de mise en production. Il s’intègre aux pipelines CI/CD et permet aux équipes de surveiller et d’automatiser le déploiement des applications ainsi que la synchronisation entre les différentes équipes

Harness est un outil payant proposant les mêmes fonctionnalités que XLRelease

Azure DevOps est une solution SaaS de gestion de release permettant aux équipes de gérer les livraisons de bout en bout via des pipelines

 

Outils de provisionnement de ressources

Terraform est un outil d’instanciation et de provisioning automatisé d’infrastructures multi cloud et environnements (AWS, Azure, GCP, Openstack, On-Premise,..)

Open Tofu est un fork de l’outil Terraform qui est open-source et offre les mêmes fonctionnalités que ce dernier en matière de provision d’infrastructure

AWS Cloudformation est un outil propriétaire pour l’automatisation des infrastructures AWS

Vagrant est un outil Open source pour la création et configuration d’environnements

Outils d'orchestration et de management de la configuration

Kubernetes est un outil Open Source de gestion de l’orchestration des conteneurs Docker (automatise le déploiement, la gestion et la mise en échelle,…)

Openshift est une plateforme d’orchestration de conteneurs. La différence avec Kubernetes est que c’est un outil propriétaire de Red Hat et non open source.

Ansible est un outil open source d’automatisation de la gestion de configuration des infrastructures

Puppet est identique à Ansible à la  différence majeure que la méthode d’application des configurations est en mode pull avec la mise en place d’agents puppet

Chef est identique à Puppet. La différence majeure réside dans l’approche impérative du code.

Outils d'exploitation et de surveillance

Prometheus est un outil open source de surveillance des infrastructures et applications. Il collecte, organise et stocke les données (métriques) dans une base de données

Grafana est un outil open source pour l’analyse et la visualisation de données collectées (par exemple données collectées depuis Prometheus)

AlertManager est un outil d’alerting et d’envoi de notifications vers des outils de communication collaborative comme Slack, Teams,…

Centreon est un outil de surveillance complet permettant la collecte des données, leur visualisation et l’envoi de notifications vers des canaux correspondants

 

ELK (ElasticSearch Logstash Kibana) Suite d’outils permettant l’analyse, l’exploitation et le management centralisé des logs applicatifs et serveurs

Grafana Loki est identique à ELK pour la gestion centralisée des logs. Les deux sont gratuits mais celui ci est entièrement Open Source et s’intègre nativement avec Grafana

 

est un outil propriétaire de gestion centralisé de logs et de sécurité

Rundeck est un outil open source d’automatisation des tâches d’administration de serveurs

 

Hashicorp Vault est un outil de la suite Hashicorp permettant de stocker et sécuriser les informations sensibles telles que les identifiants/mot de passe de nos applications. Il propose une API et des intégrations avec la plupart des autres outils pour la récupération et mise à jour de ces credentials. 

 

AWS Secret Manager permet le stockage et la sécurisation de secrets sur AWS. Il offre aussi la possibilité d’auto-rotation de ces identifiants tout en prenant le soin de les mettre à jour au niveau des services AWS correspondants

 

Azure Key Vault est un outil de gestion de secret comme les deux précédents mais sur Azure

Outils pipeline CI-CD

En reprenant l’exemple de processus CI-CD du cours précédent, on peut retrouver pour chaque étape un ensemble d’outils populaires.

Plus d’outils

  • Tableau périodique des outils DevOps

 

Exemple avec la Stack CI/CD de Netflix

Points Clés

Il est à noter que le choix de ces outils doit passer par une phase de compréhension des besoins spécifiques de l’entreprise pour éviter au maximum la multiplicité d’outils et usages. 

Il sera donc essentiel de prendre en compte quelques facteurs lors de la sélection de ces différents outils DevOps :

  • Identification des étapes clés de développement de notre produit afin de maîtriser le cycle de vie de notre application
  • Analyse et évaluation des ressources existantes afin de s’assurer que les outils choisis seront compatibles avec notre infrastructure et éviter de dupliquer les outils
  • Évaluation des compétences de l’équipe afin de choisir les meilleurs outils leur correspondant. Ce qui permettra de mener une conduite du changement efficace sur l’usage de ces nouveaux outils
  • Evaluation des Coûts afin de choisir les bons outils correspondant aux contraintes budgétaires de l’entreprise
  • Adaptabilité et évolutivité des outils choisis afin de s’assurer qu’ils pourront s’adapter au contexte changeant de l’écosystème et de l’entreprise. Par exemple choisir des outils provider agnostique (ne dépendant pas d’un seul provider cloud) 

 

Conclusion

L’écosystème des outils DevOps est actuellement l’un des plus dynamiques sur le marché et est en perpétuel expansion. Ceci étant dû à plusieurs facteurs :

  • Besoins croissants des différents acteurs du marché
  • Obsolescence rapide de certaines technologies 
  • Retrait des licences Open source et/ou rachat de certaines technos par les grosses entreprises

 

Une bonne application des principes DevOps passera donc forcément par une utilisation avec parcimonie de quelques-uns de ces outils qu’on pourra découvrir dans la suite de ce parcours.



×

Panier