Agilité et DevOps : la combinaison gagnante - Partie 1

La transformation digitale ne peut réussir que si elle s’inscrit dans une démarche globale d’adaptabilité et d’agilité dont DevOps est peut-être la solution.

La transformation digitale est la réponse de chaque entreprise au défi que représente l’essor des technologies numériques. Concrètement cela suppose des évolutions centrées sur l’innovation, l’adaptation et l’agilité, le cloud, le big data, la mobilité, l’automatisation … Le digital (le numérique) et donc l’informatique, l’IT sont désormais les principaux vecteurs de création de valeur pour une entreprise. Les organisations se doivent d’être en capacité à mieux collaborer et à mieux s’adapter aux changements et ce dans un cycle d’innovation continue. Qu’elles soient des entreprises du Net ou non. Toute entreprise doit être capable de détecter et répondre à un besoin, de changer rapidement et en toute confiance. Elle doit être capable d’optimiser sa vitesse de livraison d’un produit ou service. Toutes les étapes de l’identification d’une opportunité à la réalisation des premiers bénéfices doivent être optimisées. Toute entreprise doit réduire le temps de mise à disposition (lead time) de ses produits ou services.

 

Il est désormais nécessaire pour toute entreprise de gagner en réactivité et donc d’optimiser la collaboration entre toutes les parties prenantes. Ce n’est qu’ainsi qu’elle peut tirer profit rapidement des innovations indispensables pour survivre, vivre et grandir dans un contexte concurrentiel.

 

Mais comment effectuer cette transformation digitale ? Celle-ci ne peut réussir que si elle s’inscrit dans une démarche globale d’adaptabilité et d’agilité dont DevOps est peut-être la solution… En effet DevOps est une démarche de collaboration agile entre :

  • Les études & développement
  • La production, l’exploitation et l’infrastructure
  • Les métiers, le business.

Et ce de la création du produit, sa conception jusqu’à son suivi en production. DevOps permet à une entreprise d’optimiser la rapidité de livraison d’un produit ou d’un service, en toute sérénité et en toute confiance qu’en à sa qualité. DevOps est donc l’extension des principes agiles à toute la chaine de valeur produit. DevOps permet de rendre la DSI agile.

NB : Au second semestre 2015, IDC a réalisé une étude, pour le compte de la société Automic, auprès de 201 sociétés basées en France. Elle montre que pour 52% des entreprises, l’élément déclenchant la mise en place de DevOps est la transformation numérique. De plus, 44% des entreprises interrogées avaient entamé la démarche DevOps ou projetaient de le faire. DevOps est agile mais il ne suffit pas de l’affirmer, il faut comprendre en quoi. Pour comprendre en quoi DevOps est Agile, permet de rendre une DSI Agile, il faut d’abord comprendre ce qui se cache derrière l’agilité.

 

1 - Qu’est-ce que l’agilité

Pourquoi l'agilité ?

L’agilité est un terme venant de l’IT et lié au développement logiciel. L’agilité a été conçue par des développeurs pour des développeurs qui cherchaient à mettre en place une autre forme de gestion de projet, plus efficace et plus satisfaisante pour le client. En effet les retours d’expérience de ces informaticiens montraient la limite des approches classiques de développement (méthode de développement cycle en V, en cascade) qui ne répondaient plus aux contraintes et aux exigences des organisations en évolution rapide :

  • Un marché de plus en plus concurrentiel
  • Un marché de plus en plus réactif
  • Un environnement métier, technique, fonctionnel complexifié
  • Un besoin de proximité et de visibilité sur l’avancement
  • Importance des délais de mise en marché, couts, flexibilité, qualité …

Les limites des méthodes de développement sont mises en lumière :

  • Non adéquation au besoin client
  • Non-respect des délais
  • Non-respect du budget
  • Utopie de vouloir tout figer dès le démarrage du projet : spécifications complètes et immuables, justesse d’un planning détaillé dès le lancement du projet.

Fin des années 80, début années 90 plusieurs nouvelles méthodes de développement ont ainsi vu le jour. Elles cherchaient toutes à répondre mieux aux enjeux clients en termes de mise à disposition :

  • Plus rapidement de solutions informatiques
  • De qualité irréprochable pour l’utilisateur
  • Dans un budget maitrisé.

Restée relativement confidentielle pendant une dizaine d’années, l’agilité sort désormais de plus en plus du cadre informatique pour s’adresser de façon générale à tous les niveaux de l’entreprise. En effet, désormais une entreprise souhaite devenir agile pour :

  • Conserver ses parts de marché
  • Se renouveler en période de crise
  • Conquérir de nouvelles opportunités
  • Répondre à l’incertitude et l’instabilité
  • Adapter son comportement et son offre aux besoins des clients
  • Se mettre dans une posture d’innovation et de bien-être


Qu'est ce que l'agilité?

En février 2001, aux Etats Unis, 17 spécialistes du développement logiciel se sont réunis pour débattre du thème unificateur de leurs méthodes respectives, dites méthodes agiles. De cette réunion a émergé le Manifeste Agile considéré comme la définition canonique du développement Agile et de ses principes sous-jacents. Le manifeste est constitué de 4 valeurs et 12 principes fondateurs.

 

Il y a de la valeur dans les items situés à droite, mais la préférence se porte sur les items qui se trouvent à gauche. Pour réaliser leurs projets, les agilistes privilégient :

  • Les interactions entre les individus plutôt que les outils et les processus
  • La collaboration avec les clients plutôt que la négociation contractuelle
  • La fourniture du produit attendu utilisable au plus tôt versus sa documentation exhaustive
  • L’acceptation du changement des besoins et la réactivité plutôt que la planification rigide.

Ils ont pris conscience de la nécessité de privilégier ce qui fait du sens : création de la valeur métier ET valorisation des individus, au service du projet collectif. Et ils ont œuvré dans ce sens. Scrum : un exemple concret de mise en pratiques des valeurs agiles dans la méthodologie de gestion projet. Scrum est la méthodologie Agile de gestion de projet la plus utilisée sur le marché, basée sur un cycle de vie projet itératif et incrémentale. Ici, l’agilité emprunte au rugby la notion de mêlée (ou « scrum » en anglais). Celle-ci est intéressante puisqu’en mêlée, l’essentiel est d’être lié aux autres joueurs pour pouvoir pousser dans l’axe et ne pas tuer le jeu. C’est donc dans l’interaction et la compréhension mutuelle et la collaboration  que se joue la performance de l’équipe (et donc le gain du match).

En Scrum, l’équipe projet est auto-organisée, disposant de toutes les compétences pour décider seule du meilleur moyen de répondre au besoin du client. On y distingue uniquement trois rôles, types de participants, et tous partie prenante dans le projet :

  • L’équipe Scrum :  à savoir toutes les personnes qui réalisent le produit
  • Le Scrum master n’est pas le chef de projet, il est responsable de l’application de la méthodologie Scrum. Coach de l’équipe, il l’aide à être auto-organisée, à garder le cap, et fait le lien avec le reste de l’entreprise. Il aide l’équipe à être hyper-motivée, à construire son autonomie, à trouver du sens, à coopérer, et lui donne la possibilité d’apprendre en produisant
  • Le Product owner est le représentant des utilisateurs/clients. Il exprime leurs besoins et exigences. Il est directement impliqué par le produit ou service.

 


Un cycle de vie projet court, itératif et incrémental permet de livrer régulièrement (toutes les 1 à 4 semaines au maximum) et petit à petit le produit au client. Des réunions régulières (rituels) facilitent l’auto-organisation, la transparence et le partage d’informations, la confiance ainsi que les prises de feed back. Avant de démarrer le cycle des itérations successives de développement, une phase de cadrage, appelée aussi itération 0. Durant cette étape, le catalogue produit (ou Product backlog) est initialisé. Il contient la 1ère liste des exigences, attentes, envies du Métier. Ce catalogue sera régulièrement enrichi, complété tout au long du projet. Au démarrage, de chaque itération, les besoins à développer sont sélectionnés et répertoriés dans le catalogue d’itération (ou Sprint backlog) lors de la réunion de planification. Pendant toute la durée de l’itération, un point d’avancement est effectué quotidiennement par l’équipe. En fin d’itération, ce qui a été développé est montré à tous (démonstration) et l’équipe se réunit pour améliorer son mode de fonctionnement (rétrospective). Et c’est reparti, pour une nouvelle itération. A la fin de chaque itération, une partie du produit est livré. Il fonctionne et peut être mis à disposition des utilisateurs. Itération après itération le produit est complété, les fonctionnalités attendues sont ajoutées les unes après les autres. Les fonctionnalités les plus importantes pour le client, les utilisateurs étant développées en priorité.
 

Retour d'expérience

Concrètement, les retours d’expérience montrent les avantages et les limites des méthodes de développement Agile. Les avantages d’une DSI disposant d’une bonne maturité Agile pour le développement de ces produits (change) sont :

  • Une haute qualité du produit ou service
  • La prise en compte des besoins Métier, utilisateurs et ce de manière continue
  • Des livraisons régulières des nouvelles fonctionnalités (développements réguliers).

Cependant, il reste encore des points d’amélioration afin d’étendre les principes agiles jusqu’aux équipes d’exploitation (Run).

  • Les mises en production (donc mises à disposition du produit aux utilisateurs) dépendent de plans de déploiement, de releases planifiées tous les mois, 3 mois, 6 mois …
  • Une fois en production, le produit n’est que peu étudié afin de s’assurer qu’il correspond réellement aux attentes des utilisateurs finaux. On note une faible réactivité face aux retours.

Voilà tout le challenge d’une entreprise, d’une DSI souhaitant se lancer dans DevOps. Il s’agira pour elle d’étendre les principes agiles à toute la chaine de création d’un produit ou service IT. A savoir :

  • Réduire le délai de mise en production, de mise en ligne, de mise sur le marché du produit
  • Mieux gérer les mises en production et la stabilité du SI
  • Améliorer la qualité de service pour les utilisateurs finaux.