Un projet digital n’est jamais terminé. Pour rester performant et dans l’aire du temps, il demandera un suivi permanent de mises à jour et d’adaptation des fonctionnalités aux besoins des utilisateurs. Il faudra donc, dès la première ligne de code, réfléchir à l’organisation de la gestion opérationnelle du projet. Pour distribuer plus vite et efficacement les tâches entre les développeurs (qui ajoutent des fonctionnalités) et les opérateurs (qui gèrent le système), et ce, sur toute la vie du projet, on a conçu le modèle du DevOps. Pas de panique, on vous explique ce que c’est.
Development + Operations
DevOps est la contraction des mots anglais «development » (« développement ») et « operations » (« exploitation »). Ce terme est un mouvement regroupant un ensemble de pratiques qui vise à rapprocher le développement et la gestion opérationnelle d’un système. Il a est né du besoin de grandes entreprises, à la fin des années 2000. Avant cela, dans les premières années du développement, l’expert technique (codeur), gérait aussi l’infrastructure informatique et la maintenance. Il n’y avait pas de distinction entre les deux, mais la complexification croissante des systèmes a changé la donne et a séparé les deux rôles. Les développeurs travaillaient pour modifier le système et les opérateurs, pour le maintenir stable. Ces objectifs contradictoires donnaient lieu à des tensions et des mésententes entre les équipes. Le déploiement des modifications était difficile et long (une ou deux mises à jour par an tout au plus), les bugs étaient fréquents… Le mouvement du DevOps se propose de résoudre ces problèmes. Comment ce miracle se produit-il ? Vous n’allez pas tarder à savoir…
Des équipes en étroite collaboration
La clé du DevOps est.. une bonne communication entre les équipes. Déçu par cette révélation ? Mais non, attendez d’en savoir plus. Dans le DevOps, les développeurs sont impliqués dans les opérations, et les opérateurs s’impliquent dans le développement. Travailler ensemble permet de produire sur un cycle très court. Entre la création d’une nouvelle version, sa mise en production et l’émergence de bugs et de corrections, plus besoin d’attendre une année, on compte plutôt en jours ou en heures.
Pour permettre cette rapidité, les équipes s’attachent à rester proche de la production. Les développements sont testés le plus tôt possible en conditions réelles par le développeur. Ainsi, il n’y a pas à attendre la fin du développement pour qu’une autre équipe de testeurs le valident, avant de le mettre en production. On empruntera là la notion de « fail fast » (« échec rapide »). C’est l’idée de faire émerger rapidement les problèmes, avant d’être allé trop loin dans une mauvaise direction. Cela implique le développement par petits lots, livrés chacun leur tour, et dont les retours successifs permettent de limiter les risques d’un échec à plus grande échelle. D’une philosophie de mise à jour profonde et rare, le DevOps passe à de la livraison continue. Les mises à jour sont beaucoup plus fréquentes, mais s’étendent sur de plus petites échelles. Cela rend les bugs plus faciles à identifier, l’application plus fiable. De même, les services fournis par la plateforme n’ont pas à être paralysés le temps de la mise en production. Donc pas de perte de productivité et de compétitivité.
L’automatisation
Le DevOps s’appuie, au-delà des idées, sur un ensemble d’outils qui vont aider les équipes à automatiser les tâches, tout en permettant aux parties prenantes de garder la main sur la grande vitesse que cette automatisation permet d’atteindre. Les bonnes configurations permettent d’enlever les tâches répétitives des plannings des équipes et de leur libérer du temps pour autre chose. On utilisera par exemple des outils d’intégration et de développement continu, de versionning, ou encore des applications de monitoring pour mieux diagnostiquer les problèmes et les résoudre plus vite. Ces outils existaient pour la plupart lors de l’apparition de la mentalité du DevOps, mais cette dernière a jeté un nouveau regard sur la manière de les utiliser.
Un des effets notables de ces changements est l’augmentation de la cadence de déploiement. On passe d’un ou deux déploiements par an à plusieurs chaque jour. Un exemple, la plateforme Spinnaker évoque plus de 4000 déploiements par jour chez Netflix ( https://spinnaker.io/workshops/ ), toujours parfaitement invisibles aux yeux des binge-watchers utilisateurs acharnés du site de streaming. Cette rapidité permise par le DevOps répond aux besoins du client dans des délais très courts. Cela diminue les tensions entre les équipes tout comme les coûts, et augmente la productivité des équipes et la qualité du code qu’elles produisent.
Pour résumer, les avantages du DevOps sont nombreux et non négligeables en termes de compétitivité pour une entreprise. Mais est-ce adapté à toutes les tailles de structures ?
Une philosophie pour toutes les tailles d’entreprises
Toutes les sociétés n’ont pas d’équipes de développeurs séparées des équipes de gestionnaires et d’administrateurs du produit. Dans les petites et moyennes entreprises, les techniciens se font souvent rares. On peut donc penser que le concept du DevOps n’est pas pertinent dans de telles configurations, car impossibles à mettre en pratique. Mais la philosophie et les méthodes du mouvement s’appliquent tout aussi bien à de petites structures. Et avec de grands profits aussi. On peut être le seul codeur d’une entreprise et penser « DevOps ». Avec cette méthode, il s’agit avant tout de comprendre l’importance d’aller vite vers les utilisateurs, de déployer rapidement pour corriger les erreurs au plus tôt, et éviter ainsi de s’engager trop longtemps dans une mauvaise direction.
Après la révolution des méthodes Agiles dans les années 2000, le DevOps s’est placé dans la continuité et a fait franchir un nouveau cap au développement des projets digitaux. Il a permis, en unifiant l’administration système et le développement du logiciel, de dynamiser le processus de création sans pénaliser les performances, la compétitivité et la fiabilité des programmes. Il s’agit aujourd’hui d’un outil incontournable pour créer du logiciel de qualité et sur le long terme.