Dans un contexte de transformation globale, le modèle opérationnel de l’entreprise est à son tour remis en question : l’agilité gagne aussi la chaîne de production.
Permettant d’aligner le développement sur les opérations grâce à l’automatisation et au désilotage, le DevOps peut même ouvrir la voie à une nouvelle approche conceptuelle : voir un projet comme un « produit ».
Les méthodes agiles sont connues de longue date. La première est venue du Japon. Le Kanban (« étiquettes »), gestion de la production en flux tendu, remonte aux années 1950. Déjà, chez Toyota, il s’agissait d’asservir la production d'un poste amont aux besoins d’un poste aval. Mais il était purement question d’organisation. D’autres, plus récentes et concomitantes du digital, comme le Scrum (un cadre de développement logiciel), l’XP (Extreme programming) ou même le Xanpan (la combinaison du Kanban et de l’XP) rapprochent encore métiers et développement. Le time-to-market est raccourci, de la valeur supplémentaire est créée…
Un nouveau pas est franchi avec le DevOps qui étend l’agilité à la production. Il aligne véritablement les développements sur les besoins métiers. Cela est rendu possible par la nature même du DevOps, intrinsèquement agile.
Automatisation et désilotage
Le DevOps est facteur d’automatisation et de désilotage à la fois : cycles courts, déploiements et livraisons continus. Il facilite la transformation. Son extension aux opérations injecte de l’ADN agile dans l’ensemble de la chaine produit, permettant une meilleure réactivité et de fait un alignement plus fort avec le marché.
Le DevOps répond à cette problématique en rapprochant le développement et les opérations, étendant l’agilité aux équipes de production et en automatisant au maximum le cycle de vie des produits. Cette automatisation permet notamment la responsabilisation des équipes de développement en leur déléguant, via les actes automatisés, des activités de run.
La clé : standardiser les services proposés par le DevOps
Il était temps, car les équipes de production ont toujours été séparées du développement, avec des pratiques et des objectifs différents. Sans compter que tout naturellement les « équipes dév » ont gagné en autonomie.
Le DevOps va aider à décloisonner : en créant des structures agiles pluridisciplinaires, les « dév » reliés aux équipes de production vont pouvoir traiter l’ensemble du cycle - métier, développement en lui-même, mais aussi test, run, sécurité, architecture, etc. La mise à disposition de services et de pratiques DevOps auront aussi un effet d’accélération dans le développement du produit et rationaliseront des compétences nécessaires dans chaque équipe.
Pour cela, la standardisation des services proposés par le DevOps est essentielle. Par exemple, pour garantir uniformisation des usages et meilleure adaptabilité au changement, il faut mettre en place des « team devops » qui fourniront les services et pratiques d’automatisation. Avantage : établir des stratégies transverses de test de bout en bout du SI, mais également déployer des exigences non fonctionnelles comme des normes de sécurité ou des principes d’architectures.
L’automatisation : un produit développé comme un autre
Mais la mise à disposition de services permettant l’automatisation du cycle de vie du SI ne suffit pas à l’implémentation du DevOps. Il faut également produire ces automatisations elles-mêmes.
Le DevOps est d’abord en effet synonyme de nouveau paradigme : les infrastructures et l’exploitation étant automatisées, le rôle des équipes se transforme. En automatisant, les opérations deviennent en quelque sorte des développeurs. En effet, l’automatisation du cycle de vie du SI, via l’intégration continue et le déploiement continu (CI/CD), nécessite la production de code. Hors, il n’y a pas de raison pour que ce code soit traité avec moins d’exigence de qualité que le code des applications « métier ». C’est l’essence même de la pratique « d’Infrastructure as Code » ou IaC, qui peut d’ailleurs s’étendre à toute automatisation nécessaire à la mise en place du CI/CD (déploiement, test, etc.) : « Everything as Code ».
Par conséquent, les acteurs en charge de l’automatisation des infrastructures et de l’exploitation doivent être pleinement intégrés aux équipes de développement. Ils doivent, comme les développeurs des applications du SI, adopter une démarche agile, autonome et responsable en s’assurant de leur alignement avec les objectifs de l’entreprise !