DevOps : une culture de la performance

5 bonnes pratiques pour favoriser la transversalité des équipes, améliorer les performances de la DSI et rendre l’entreprise plus agile.

Bien plus qu’un simple « buzzword », le DevOps est aujourd’hui au cœur des stratégies des DSI. Véritable prolongement des méthodes agiles, il vise à réduire les cycles de déploiement et à favoriser les mises en production en continu (continuous delivery), tout en garantissant la qualité, la stabilité et la sécurité des applications délivrées. Une tendance à laquelle les entreprises peuvent difficilement échapper aujourd’hui, dès lors qu’elles veulent rester performantes et compétitives, dans une économie digitale de l’instantanéité, en perpétuelle mutation, et où la concurrence s'intensifie.

Des sociétés comme Google, Amazon, Facebook ou encore Twitter l’ont bien compris, et sont depuis longtemps passées maîtres dans l’art du DevOps et du continuous delivery : Amazon peut ainsi se vanter de réaliser jusqu’à 23 000 déploiements par jour ! Une vélocité inégalée, qui permet à ces géants du web de largement dominer le marché.

Mais à l’instar des méthodes agiles, le DevOps implique une transformation profonde des pratiques traditionnellement observées au sein des DSI. Le DevOps repose en effet sur une étroite collaboration entre les équipes de développement, de tests et d’exploitation, qui peinent habituellement à coordonner leurs actions – faute d’une communication suffisante. Plus qu’une méthode, le DevOps est une véritable culture, que tous les acteurs de la DSI doivent progressivement intégrer. Un certain nombre de bonnes pratiques, assorties des bons outils, peuvent toutefois accélérer ce processus « d’apprentissage » et aider les entreprises à devenir plus agiles.


1. Enrichir les environnements de développement

Réduire les cycles de mise en production ne doit pas se faire au détriment de la qualité du code produit. C’est donc dès la phase de développement qu’il faut se poser la question de la qualité, et anticiper les risques. Résoudre des bugs en production coûte en effet jusqu’à 150 fois plus cher que de les résoudre plus tôt dans le cycle de développement[1].

Mieux vaut donc détecter les erreurs le plus tôt possible, en permettant aux développeurs d’affiner leur capacité d’analyse de leur code, grâce à des outils spécifiques. Visibilité sur les flux applicatifs de transaction, temps de réponses, exceptions, requêtes en base de données, nombre d’appels à distance, diagrammes de séquences, etc. De nombreux indicateurs de performance, intégrés au sein même de l’environnement de développement, permettent ainsi d’évaluer l’impact du code sur la disponibilité et la performance, et de l’optimiser, le cas échéant, avant la phase de déploiement.

 

2. Prioriser les tâches

Il n’est pas rare de voir un développeur s’obstiner à résoudre un problème… qui n’impacte en réalité qu’une infime partie des utilisateurs ! Prioriser les tâches, c’est se concentrer sur un facteur clé de création de valeur pour l’entreprise : la satisfaction des utilisateurs. Observer le comportement de l’utilisateur, connaître la qualité de son expérience, identifier les problèmes récurrents dans son utilisation de l’application et évaluer leur criticité en fonction de leur conséquence sur le chiffre d’affaires ou l’image de marque de l’entreprise : autant de données permettant de déterminer quelles corrections et évolutions doivent être réalisées en priorité au niveau du code. C’est la garantie de réduire le time to market en étant à la fois efficace et qualitatif.

 

3. Encourager la transparence et la communication

C’est l’une des pierres angulaires du DevOps : la collaboration de l’ensemble des équipes de la chaîne applicative. Une démarche DevOps nécessite de casser les silos organisationnels qui handicapent les DSI. Cela passe notamment par la mise en œuvre de processus de communication et d’outils partagés, permettant à chacun d’avoir une visibilité totale et de suivre l’état d’avancement de chaque phase d’un déploiement. Cette transparence évite en particulier d’avoir une DSI à deux vitesses, où les développements, déjà « agiles », s’enchaînent à toute allure, sans pour autant passer l’étape de mise en production, faute d’une visibilité suffisante de la part des équipes d’exploitation.

Partager des tableaux de bords et des indicateurs de performance, mettre en place des systèmes d’alertes ciblées en fonction de la nature du problème identifié, systématiser les feedbacks entre les équipes, ou encore garantir la traçabilité des opérations, sont quelques-uns des moyens que les DSI doivent déployer pour favoriser la transversalité et la communication au sein de leurs équipes.

 

4. Automatiser les tests et les configurations

L’automatisation permet de sécuriser, de fiabiliser et d’accélérer le traitement de l’énorme volume de données qui afflue quotidiennement dans une entreprise. Pour, à terme, gagner en qualité et en réactivité dans les déploiements. Les développeurs peuvent par exemple s’appuyer sur des outils permettant d’automatiser l’exécution de scripts de tests unitaires : au niveau du code lui-même, afin d’en identifier les points potentiels d’amélioration ; ou au niveau du serveur d’intégration, afin de tester et d’assembler l’ensemble des actifs nécessaires au déploiement. Des outils de gestion des tests (Test Case Manager) permettent également de gérer, suivre et mettre automatiquement à jour les tests de recette, en fonction des spécifications initiales, de telle sorte que les équipes de tests puissent se concentrer sur les problématiques critiques qui requièrent une intervention manuelle.

Pour s’assurer que les tests menés soient pertinents et permettent de réellement anticiper le comportement de l’application en production, il faut également veiller à ce que l’infrastructure soit correctement configurée, et de manière identique en recette et en production. Là aussi, la communication entre les équipes est primordiale. Au même titre d'ailleurs que l’automatisation de la configuration de l’infrastructure, de façon, notamment, à coordonner des évolutions simultanées sur de multiples serveurs et environnements.

 

5. Surveiller les performances en continu

Le DevOps, à l’instar des méthodes agiles, doit permettre d’être plus efficace dans l’identification des incidents et de réduire les temps moyens de résolution (MTTR – Mean Time to Resolution). C’est pourquoi la mise en œuvre de processus de surveillance de la performance applicative est indispensable, afin de disposer d'une visibilité totale et continue sur l’ensemble de la chaîne applicative, et d’identifier instantanément la cause et l’impact potentiel d’un dysfonctionnement.

Il va sans dire que l’ensemble des équipes doit partager le même outil de surveillance, afin de disposer des mêmes analyses et des mêmes indicateurs, de parler le même langage et de pouvoir faire intervenir l’équipe compétente, en fonction de la nature du problème.

 

Le DevOps est avant tout une démarche de collaboration et de transparence, où chaque équipe doit gagner en agilité en se concentrant d’abord sur les tâches à valeur ajoutée. Automatiser l’analyse du code, les scripts de tests, les configurations ou encore l’analyse des performances peut aider la DSI à développer une culture DevOps, et à garantir, grâce à une identification et une résolution plus rapide des problèmes, des mises en production en continu, à la fois plus sûres, plus stables et plus performantes.


[1]          Barry Boehm, 2007 Equity Keynote Address