Les différentes étapes du cycle DevOps expliquées

DevOps impose différentes étapes à suivre tout au long de ses projets.

Ces étapes sont à suivre dans un ordre bien défini et se répètent continuellement afin de suivre les évolutions du projet dans le temps.

Dans cet article nous détaillons chaque étape une à une.

1. Planification

La planification permet de définir la valeur commerciale et les exigences attendues avant de lancer les développements.

Cette phase permet ainsi d’identifier et de suivre les travaux dans le temps. L’idée est d’avoir une vision claire des actions à réaliser pour atteindre les objectifs business fixés.

Les entreprises appliquant cette phase s’appuient fréquemment sur des pratiques Agiles. Des outils comme Jira, Trello ou ClickUp sont de bons supports pour assurer la sérénité de la phase dans le temps

2. Création

La création inclut la conception logicielle et la création du code. En d’autres mots, c’est la phase de développement du produit.

Durant cette phase les développeurs conçoivent le produit en équipe et s’appuient sur des outils de gestion de code tels que GitHub, GitLab ou Bitbucket. Des good practices de gestion de code existent comme les principes de GitFlow.

Ces good practices assure la pérennité du code dans le temps et facilite le travail en équipe.

3. Test

La phase de test consiste à vérifier le bon fonctionnement et faire la recette des développements réalisés durant l’étape de création.

Il existe différents types de test:

  • Les tests unitaires : Ces tests vérifient le bon fonctionnement d’une partie précise d’un logiciel ou d’une portion d’un programme
  • Les tests d’intégration : Ces tests vérifient que chacun des modules indépendants du logiciel est assemblé et fonctionne bien dans l’ensemble.
  • Les tests de validation : Ces tests vérifient si toutes les exigences client, décrites dans le document de spécification du logiciel sont respectées.

Dans la culture DevOps, il est fortement recommandé d’automatiser ces tests au maximum avec des outils tels que que Selenium, Karaté…

Cette phase souvent négligée est le socle d’une production de qualité. Des méthodologies de développement comme le TDD permettent d’assurer cette phase.

Réaliser des tests est une façon de détecter rapidement les bogues et d’éviter tout impact business non désiré.

4. Versionnage

Le versionnage aussi appelé distribution continu consiste à publier le code validé dans un référentiel de façon continue.

Cette phase permet ainsi de gérer les versions logicielles et à exploiter des outils automatisés pour compiler et intégrer le code en vue de sa mise en production.

Des référentiels de code source ou de package « empaquettent » aussi l’infrastructure requise pour la livraison du produit à l’aide des logiciels Docker, Ansible, Puppet, Chef, Gradle, Maven ou JFrog Artifactory, par exemple.

Aussi, pour garantir l’efficacité du processus de distribution continue, il faut d’abord introduire le processus d’intégration continue (Création + Test) dans le pipeline de développement. La distribution continue permet de disposer d’une base de code toujours prête à être déployée dans un environnement de production.

Dans le cadre du versionnage, chaque étape (de la fusion des modifications de code jusqu’à la distribution des versions prêtes pour la production) implique l’automatisation des processus de test et de publication du code. À la fin de ce processus, l’équipe d’exploitation est en mesure de déployer facilement et rapidement une application dans un environnement de production.

5. Déploiement

Le déploiement aussi appelé déploiement continue,. en complément du processus de distribution continue, automatise la publication d’une version prête pour la production dans un référentiel de code. 

Le déploiement continu automatise le lancement d’une application dans un environnement de production.

En l’absence de passerelle manuelle entre la production et l’étape précédente du pipeline, le déploiement continu dépend surtout de la conception de l’automatisation des processus de test.

Dans le cadre du déploiement continu, une modification apportée par un développeur à une application peut être publiée quelques minutes seulement après la rédaction du code en question (en supposant qu’elle passe les tests automatisés). Il est ainsi beaucoup plus facile de recevoir et d’intégrer en continu les retours des utilisateurs.

Combiné avec le test et le versionnage, le déploiement continue réduit les risques liés au déploiement des applications, puisqu’il est plus simple de publier des modifications par petites touches qu’en un seul bloc.

Cette approche nécessite néanmoins un investissement de départ considérable, car les tests automatisés devront être rédigés de manière à s’adapter à un large éventail d’étapes de test et de lancement dans le pipeline CI/CD.

Des outils de planification et d’automatisation existe pour réaliser cette phase comme: Ansible, Puppet, Chef, Keltio, Jenkins, Kubernetes, OpenShift, OpenStack, Docker, par exemple.

6. Exploitation

L’exploitation intervient une fois le logiciel déployé. La phase d’exploitation implique la maintenance et le dépannage des applications dans les environnements de production.

En adoptant les pratiques DevOps, les équipes veillent à assurer la fiabilité, la haute disponibilité du système, et visent à éliminer les temps d’arrêt tout en renforçant la sécurité et la gouvernance. Les équipes DevOps entendent identifier les problèmes avant qu’ils n’affectent l’expérience client, et à les atténuer rapidement lorsqu’ils se surviennent.

Des solutions comme Ansible, Puppet, PowerShell, Chef, Keltio, existe pour opérer sur les produits de façon automatisée.

7. Surpervision

Les produits ont, vis-à-vis de leurs utilisateurs, un SLA (Service Level Agreement), de ce fait, ils doivent être supervisés continuellement afin de détecter tout problème. C’est la dernière phase du cycle DevOps.

Elle consiste à monitorer l’activité des produits et de définir des actions à réaliser par les équipes support ou produit (indicent, feedback…)

Maintenir cette vigilance nécessite une riche télémétrie, des alertes exploitables et une visibilité totale sur les applications et le système sous-jacent.

Des solutions de monitoring et de supervision comme Grafana, Prometheus, ElasticSearch peuvent être utilisés dans cette phase.

En découvrir plus sur le DevOps
Comment Keltio m'aide sur le DevOps ?