Agilité et devops : la combinaison gagnante - Partie 2

DevOps est une approche de travail en collaboration et confiance avec mise en place du juste nécessaire d’automatisation et de supervision.

2/ Qu’est-ce DevOps

L’origine du nom

DevOps est la concaténation des 3 premières lettres du mot anglais « development » et de l’abréviation usuelle (ops) du mot anglais « operations » (exploitation). Le mot a été inventé par Patrick Debois (consultant Belge) en 2009.

Son objectif est de diminuer la durée comprise entre la demande de création/de modification d’un produit ou service IT et sa mise en production / sa mise en ligne.

Cette concaténation marque l’impérieuse obligation de collaborer étroitement entre les dev / les études et les opérations / l’exploitation.

DevOps = « Un ensemble de pratiques multidisciplinaires consacrées à l’étude de la construction, de la maintenance évolutive et de l’exploitation des systèmes informatiques à grande échelle qui doivent pouvoir être modifiés rapidement, sans défaillir » (Jez Humble)

Les fondamentaux de la démarche

La collaboration est une nécessité mais collaborer étroitement en partageant largement jusque dans la responsabilité de l’échec ou du succès est la philosophie DevOps. Un véritable choc culturel !

 

En effet, les préoccupations des études et de la production sont distinctes et valables.

Les dev recherchent plus de réactivité et d’innovation pour répondre à la pression du Métier et du marché. Il faut aller vite, ajouter de nouvelles fonctionnalités, déployer rapidement.

Les ops, à l’inverse, veulent de la stabilité car il est souvent difficile d’anticiper les impacts d’une modification de code, d’architecture ou d’infrastructure. Ils veulent aussi de la standardisation, des règles définies (configuration de machines, versions logicielles, sécurité réseau, fichiers de logs…) et uniformément respectées pour assurer la qualité de service.

Mais les dev et les ops ont un objectif commun : rendre le service attendu par le client, faire en sorte que le produit réponde aux attentes des utilisateurs.

L’idée de DevOps est donc de supprimer le mur qui sépare les équipes de développement des équipes de production afin de faire en sorte qu’une mise en production d’un nouveau produit ou service soit un « non évènement », que les évolutions et mises à jour s’effectuent de manière continue sans aucun impact (arrêt de service) pour l’utilisateur.

Alors sur quoi s’appuie cette démarche ?

 

La démarche DevOps est basée sur 4 fondements :

1/ Réduire les cycles de livraison :

  • Effectuer des mises en production (mises en service) fréquentes, déployer sans arrêt de service
  • Par l’industrialisation de la chaine complète de production logicielle, et la livraison d’évolutions de petites tailles.

2/ Optimiser les ressources :

  • Par la standardisation, l’automatisation du déclenchement et de l’exécution du plus grand nombre de tâches (configuration, développement, déploiement…).

3/Améliorer la qualité :

  • Le produit, le service rendu, correspond aux attentes de l’utilisateur et il est disponible
  • Par des tests tout le temps et l’arrêt du processus en cas de défaut, par la refonte du logiciel sans altérer le service
  • Par l’instrumentation et la supervision.

4/Mettre l’humain au centre du dispositif :

  • Par la mise en place d’une nouvelle culture fondée sur la collaboration et une recherche permanente de l’amélioration continue par l’apprentissage.

Ce dernier fondement DevOps est à la fois le plus important mais aussi le plus difficile à mettre en place.

Le framework DevOps

 

Concrètement se lancer dans la mise en place de DevOps consiste à mettre en place 3 piliers :

  • Une gouvernance digitale
  • Une architecture & infrastructure informatiques
  • Un cycle de vie produit / service de livraison en continue de valeur au client final.

Le tout cimenté par une culture humaine de collaboration, de partage et de confiance mutuelle. 

 

Une gouvernance digitale :

  • Orientée adaptation permanente et collaboration

Connectant les décisions de financement et d’exécution de projets informatiques au marché et à la valeur apportée au client final.

 

Une architecture & infrastructure informatiques :

  • Une architecture modulaire et orientée services applicatifs

Une infrastructure permettant une mise à disposition rapide d’environnements.

 

Un cycle de vie du produit ou du service s’appuyant sur un processus de livraison en continue de valeur pour le client, les utilisateurs finaux.

Cette surveillance permettant d’améliorer et d’apporter de nouvelles évolutions au produit et ainsi entamer un nouveau tour de cycle du produit.

Ce cycle de vie est constitué de 3 étapes :

  • Le développement de nouvelles fonctionnalités (création d’un nouveau produit ou modification de celui-ci) via :
    • Développement Agile : méthode itérative et incrémentale, participative et orientée besoin client/utilisateur final
    • Intégration continue des nouvelles fonctionnalités
    • Automatisation des tests en vérifiant la bonne qualité.

 

  • La mise en service, le déploiement en production via :
    • Déploiement continu pour mise à disposition régulière des nouvelles fonctionnalités aux clients et utilisateurs finaux
    • Automatisation du déploiement
    • Déploiement sans arrêt de service pour les utilisateurs.

 

  • Une surveillance de fonctionnement et suivi des affaires :
    • Information en continue sur le fonctionnement du produit en production
    • Vérification du bon fonctionnement et détection des défaillances
    • Le Business Activity Monitoring (BAM) : supervision des processus et activités métiers.

 

DevOps est donc une approche de travail en collaboration et confiance avec mise en place du juste nécessaire d’automatisation et de supervision afin de pérenniser ce mode de fonctionnement.

L’objectif est de disposer d’un flux continu permettant de délivrer régulièrement, petit à petit, de nouvelles fonctionnalités au produit/service afin qu’il apporte de plus en plus de valeur à l‘utilisateur final.

 

Ce processus de livraison continue s’organise autour de différentes phases qui s’inscrivent dans un cycle agile :

  • La définition du besoin
  • La conception, l’implémentation et les tests, l’intégration
  • Le déploiement et le recueil d’informations sur le fonctionnement de l’application pour en tirer un enseignement précieux dans la définition de nouvelles évolutions à lui apporter.      

Conclusion

DevOps est donc une démarche de collaboration agile entre

  • Les études, les dev,
  • La production, les infras (ops) et
  • Les métiers (business).

du recueil du besoin au suivi en production de la solution et ce dans un cycle itératif et incrémental d’amélioration continue qui se poursuit tant que le produit existe.

 

Mais son adoption demande de repenser l’organisation complète de l’entreprise.

En effet la mise en œuvre de DevOps signifie clairement mettre en œuvre les pratiques Agiles et donc améliorer la collaboration et la confiance entre l’ensemble des équipes parties prenantes du produit / service IT. Mais il faut noter que l’ensemble de l’entreprise, ou presque, fait partie de ces parties prenantes. 

Se lancer dans une démarche DevOps signifie rendre Agile une entreprise, et ce au travers de pratiques et d’une organisation adaptée pour aller vers plus de collaboration et de réactivité (casser les silos de l’organisation). Un véritable changement de culture est nécessaire.

Ce changement devra se faire en douceur, un pas après l’autre.