Traditionnellement, les développeurs et les opérationnels ont des objectifs et des intérêts plutôt opposés. Les « Dev » ont pour but de créer de la valeur et proposer de l’innovation au produit/service, alors que les « Ops » cherchent à maintenir la stabilité des infrastructures.
La culture DevOps est conçue comme une réponse à cette dualité entre « Dev » et « Ops ». Elle permet aux deux équipes de travailler ensemble dans un même état d’esprit et une dynamique d’amélioration continue afin d’effectuer des mises en production plus rapidement et de meilleure qualité, servant ainsi au mieux le client. Cette collaboration DevOps s’étend de jour en jour et prend place dans la majorité des entreprises mondiales.
Les équipes DevOps utilisent quotidiennement des outils divers pour des tâches et missions variées. Nous vous faisons part des principaux outils utilisés dans la liste ci-dessous.
Le développement CI/CD
CI/CD signifie « Intégration Continue/Déploiement Continu ». Au lieu de livrer le code source aux opérationnels en un seul bloc et à un moment donné, le code est testé au fur et à mesure de son écriture et de ses modifications. Les outils d’intégration et de déploiement permettent de moderniser les applications en réduisant le temps nécessaire pour créer de nouvelles fonctions. Le code, fonctionnel puisque vérifié, servira de base aux opérationnels.
Jenkins est l’une des plateformes les plus utilisées comme outil open source de CI/CD. D’autres solutions payantes englobent GitLabCI et Concourse etc.
Outils de versionning
Ces outils permettent de connaître les différentes modifications du code et les auteurs de celles-ci, car toute modification du code entraîne la création d’une nouvelle version. Github est l’outil de versionning qui détient le monopole. Il permet de suivre l’avancement des travaux et d’avoir un aperçu sur l’historique de travail. Très avantageux pour une équipe, GitHub fusionne les codes source. Gitlab est également un outil de versionning qui devient de plus en plus populaire, notamment grâce à Gitlab CI qui est efficace.
Les conteneurs
Les conteneurs permettent d’isoler une application avec l’ensemble des éléments dont elle a besoin pour fonctionner.
- Docker
Docker est un logiciel libre en open source qui se concentre sur la normalisation et la spécification des conteneurs afin de construire un écosystème sain afin de ne faire tourner qu’une seule application.
- Kubernetes
Kubernetes est une plateforme d’orchestration des conteneurs, permettant de simplifier leur déploiement et leur gestion et qui abrite une quantité importante de paquets.
Automatisation et gestion de configuration
L’automatisation permet d’éliminer les tâches répétitives des équipes DevOps.
Plusieurs types d’automatisation en DevOps existent :
- Mettre en place des configurations automatiques sur les serveurs
- Automatiser les actions des serveurs
Plusieurs outils existent en fonction de l’infrastructure existante et des besoins de l’entreprise :
- Ansible
Ansible automatise des tâches courantes telles que le provisioning dans le cloud, le déploiement d’application et l’orchestration IT. Il facilite l’installation, la configuration et la modification d’un ou plusieurs serveurs de manière prévisible et déclarative.
- Terraform
L’environnement logiciel Terraform se concentre principalement sur le provisioning d’infrastructure. Il automatise la construction des ressources et facilite la définition des typologies cloud pour les principaux fournisseurs d’infrastructure.
Cloud providers
Les Cloud providers proposent aux entreprises et particuliers des solutions de stockage distant. Aujourd’hui, trois importants players se partagent le marché du service cloud : Google Cloud Platform, Azure et AWS. En proposant le plus large éventail de services, AWS est sans conteste le leader mondial de ce marché.
Le monitoring de l’infrastructure
Utilisé en fin de parcours, le monitoring permet d’analyser et de tirer les enseignements du déploiement des architectures et développement. Son but : trouver et extraire les pistes d’amélioration. L’application open source Prometheus et le service Grafana permettent de monitorer les clusters Kubernetes. En couplant trois outils, ELK (Elasticsearch, Logstash et Kibana) est une solution d’analyse de logs performante.
Chez Pisquare, nous sommes des experts sur la stack technique suivante :
- Conteneurisation : Docker, Kubernetes, Openshift
- Hébergement : AWS, GCP, Azure
- Versionning : Github, Gitlab
- Monitoring : Grafana, Prometheus
- CI/CD : Jenkins, Gitlab CI
- Automatisation et IaC : Terraform, Ansible