object.title
Le DevOps en pratique

Par J.Gross - The Expert Développeur PHP DevOps chez SQUAD

Quelles sont les bonnes pratiques du Devops ? Découvrez à travers ce papier des exemples concrets de process et outils !

Une bonne communication, pour mieux coopérer

  • Inviter les Ops dès le début des projets, et régulièrement lors des revues de sprint (plutôt qu’en cas de crises seulement)
  • Maintenir une relation entre les Devs, les Ops, la Métrologie et la Sécurité
  • Outil Kanban : pour plus de transparence et d’anticipation dans les tâches de chacun. Principe de ne pas encombrer l’étape suivante de la chaîne de réalisation, et donc de fluidifier les étapes jusqu’à la mise en production
  • Outil Mattermost : pour créer des salons par thèmes (ex: “livraisons”, “featureX”, “intégration”, “blabla”, etc…), et recevoir les notifications d’outils (ex: Jenkins pour notifier les builds en erreur)

Mise en place d’une intégration continue, pour augmenter la confiance dans le livrable

Le but est de mettre en prod plus vite et plus souvent, pour répondre rapidement aux besoins clients, et augmenter le business. Ceci passe par l’automatisation de tout ce qui n’a pas de valeur ajoutée à être fait par un Dev/Ops “à la main”.

Mettre en prod plus vite et plus souvent, c’est possible si on a un bon niveau confiance dans le livrable : la mise en place d’une Intégration Continue permet de repérer au plus vite les possibles problèmes : régressions, développement testé mais non qualifié, problèmes de performances, etc…

Ensuite une stratégie de branches en « features branches » tel que GitFlow permettra d’être souple sur la liste des items à livrer.

Voici une chaîne d’intégration continue possible :

  • intégration d’une branche de développement (changement à intégrer) sur une branche d’intégration (automatiser par Jenkins ou merge request dans GitLab)
  • déploiement du code de la branche d’intégration sur un environnement d’intégration (automatiser par Jenkins ou GitLab CI)
  • lancement des tests unitaires (PHPUnit pour PHP) et des tests fonctionnels sur l’interface (Selenium) sur cet environnement
  • analyse de code statique sur la branche d’intégration (outils Jenkins / Sonar)
  • si les ressources machines le permettent, lancer les tests et faire un code review avant l’intégration de la branche de développement. Et oui, cela permettra d’obtenir des retours encore plus tôt et sans « polluer » potentiellement la branche d’intégration

Un déploiement automatisé, pour préparer le déploiement continu

Le déploiement en recette et preprod devrait être le plus possible automatisé, car a priori cela ne demande pas de réflexion/choix de la part des Devs/Ops?

  • Déployer en recette via Jenkins, par un simple « press button »
  • Automatisation de la création du changelog, qui sera publié à chaque livraison.
  • Notifier les Qualifieurs/Analystes/Devs/Ops par mail/Mattermost de cette nouvelle livraison

“On ne peut améliorer que ce que l’on mesure”

Une expression simple à retenir et qui énonce une idée plein de bon sens : suivre des KPIs (Key Performance Indicator) sur différents sujets, aide à faire évoluer le produit dans le bon sens.

En effet, à l’image d’un monitoring d’exploitation, mettre en place un dashboard web qui présente les KPIs retenus, affichable idéalement sur une TV présente dans les bureaux pour que chacun s’y intéresse.

Quelques exemples de KPIs :

  • technique : dette technique, code coverage
  • opérationnel : uptime, nombre d’incidents de prod, nombre de rollbacks
  • business : CA journalier, pages vues, taux de transformation
  • client : nombre d’appels au support téléphonique, nombre d’inscriptions/désinscriptions, temps passé sur le site
  • équipe : satisfaction, burndown chart

Partager les enjeux et les contraintes, pour développer une dynamique d’amélioration continue

  • Faire des rétrospectives régulières de ce qui est mis en production (systématique en méthodologie SCRUM)
  • La revue de code entre pair, outre la détection d’erreurs, permet de diffuser la connaissance du code auprès de tous
  • Faciliter l’accès aux mesures de tous types (business, techniques, opérationnel…) grâce des outils web. L’idéal étant d’avoir un dashboard web qui les regroupent
  • La stack d’outils ELK ouvre l’accès aux logs de tous les environnements : les Devs pourront debugger plus efficacement

Nous espérons que cet article vous aura fourni quelques pistes pour mettre en place les bonnes pratiques DevOps !