Depuis un certain temps, j’entends régulièrement parler de DevOps et je crois que cette notion mérite d’être clarifiée, ne serait-ce que pour moi. En effet, il semble y avoir une compréhension et une utilisation variables de cette expression et il m’apparaît important de m’y attarder afin d’en circonscrire les bases et d’en préciser le sens. Tout comme l’Agilité, DevOps regroupe un ensemble de concepts qui revêtent une signification différente selon le point de vue et les circonstances. Il est tout de même possible d’en donner un aperçu et c’est ce que je me propose de faire ici.

Développement et opérations

Notons d’abord que le terme DevOps juxtapose le développement (Dev) et les opérations (Ops). Cette juxtaposition est au cœur même de ce que l’on entend généralement en l’employant. DevOps est notamment le fruit de la rencontre entre deux tendances. La première peut être qualifiée d’opérations Agiles. Il s’agit d’appliquer des approches Agiles et Lean à tout ce qui concerne la dimension opérationnelle de l’entreprise. La seconde est une compréhension élargie de l’importance de la collaboration entre les responsables du développement et ceux des opérations durant toutes les étapes de création et d’exploitation d’un produit ou d’un service.

Une des caractéristiques que l’on peut identifier est l’utilisation de techniques comparables à celles des développeurs par les équipes responsables des opérations. Par exemple, cela peut signifier du contrôle à la source ou encore l’utilisation d’une méthode comme Scrum dans le cadre des opérations. Plus simplement, on peut définir DevOps comme l’implication active des responsables du développement et de ceux des opérations qui participent conjointement à l’ensemble du cycle, du design au soutien à la production en passant évidemment par le processus de développement en soi.

Le développement Agile préconise une collaboration étroite entre le client, le responsable de produit, les développeurs et les responsables de l’assurance qualité afin de toujours ajuster le produit pour en maximiser la valeur. Dans le cas de DevOps, il s’agit d’étendre cette notion au-delà du code à l’ensemble du service en s’assurant d’inclure la livraison du logiciel développé, son intégration dans les opérations courantes et aussi ses interactions avec celles-ci, car cela devient une part fondamentale de la proposition de valeur faite au client.

Élargir les valeurs Agiles

On pourrait voir DevOps comme la collaboration entre le développement et les opérations, mais c’est aussi beaucoup plus que cela. Il s’agit d’élargir l’ensemble des principes et valeurs Agiles pour inclure les systèmes déjà en place et les opérations.

Au sens le plus large, c’est une philosophie opérationnelle qui met de l’avant une meilleure communication entre le développement et les opérations et instaure souvent une automatisation de certains éléments des opérations. De façon plus restreinte, DevOps peut se référer aux membres de l’équipe des TI qui créent et entretiennent l’infrastructure ou encore à une équipe qui examine l’ensemble de la chaîne de production de logiciel de façon stratégique et supervise les services partagés tout en faisant la promotion d’outils de développement et des meilleures pratiques.

Traditionnellement, dans la plupart des entreprises, l’équipe de développement teste le nouveau code dans un environnement de développement indépendant afin de s’assurer de la qualité et, lorsque les exigences sont satisfaites, elle le remet aux opérations pour qu’il soit utilisé. Un problème avec cette façon de faire est qu’il y a généralement un long délai entre les livraisons. De plus, les équipes travaillant séparément, cela ne permet pas à l’équipe de développement d’être informée des bloqueurs qui empêchent le logiciel de fonctionner comme prévu.

Briser les silos

DevOps peut chercher à amalgamer le développement et le déploiement des applications en un processus rationalisé qui ramène une partie des responsabilités des opérations vers l’équipe de développement pour faciliter le développement, l’intégration et la livraison continus et permettre de bien surveiller ces processus. La nécessité de briser les silos est augmentée par le besoin de livrer plus rapidement et fréquemment pour aider l’organisation à répondre de façon plus Agile aux besoins d’affaires changeants.

Rappelons qu’un élément clé de DevOps semble être la communication. Il est essentiel que les différentes équipes soient en mesure de bien communiquer entre elles afin de prendre les bonnes décisions. La compréhension du domaine d’affaires est également primordiale tout comme un souci marqué de la part de tous les gens impliqués d’assurer le succès du produit ou du service.

Résumons les avantages que l’on associe généralement à DevOps :

tableau-fr

Une chose me paraît maintenant certaine : un souci accentué d’harmoniser l’ensemble du processus de production, d’intégration et d’exploitation d’un logiciel en gardant le focus sur la valeur d’affaires et en mettant l’accent sur les valeurs Agiles et Lean peut sans aucun doute contribuer grandement à l’amélioration du retour sur investissement tout en créant des processus de travail plus harmonieux. Reste à découvrir comment s’y prendre exactement…

gabriel bélanger

Billet précédent

Le bon sens

Billet suivant

L’écosystème du développement logiciel : quelles seront les tendances en 2017 ?

1 Commentaire

  1. jtouchette@absolunet.com'
    05/01/2017 at 13:36 — Répondre

    Très intéressant comme explication!

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.