DevOps chez OUI.sncf

Publié le 3 avril 2017

#Devops#Agilité

Dans les services informatiques, les méthodes Agiles ont permis de rationaliser la production et rapprocher les développeurs des experts métiers. La démarche DevOps va plus loin : le but est de resserrer les liens entre les développeurs et les exploitants. Par nature, leurs objectifs sont opposés. Les développeurs conçoivent des fonctionnalités qui peuvent potentiellement porter préjudice à la stabilité du système, assuré par l’exploitation. .

L’intégration des Ops dans les équipes de développement

L’application d’une démarche DevOps implique une réorganisation des équipes de développement. On y ajoute un exploitant, en charge de déployer en production et d’effectuer le suivi de production. OUI.sncf est allé encore plus loin, en mettant en place des process afin que l’absence de l’Ops ne soit pas préjudiciable pour le reste de l’équipe (Zero Truck Factor).
"Quand l’Ops est absent, l’équipe doit être capable de mettre en production et recevoir des feedbacks."

Pour réussir ce pari, le Directeur Technique Philippe Martin (responsable des Ops) et le Directeur du Delivery Jean-Philippe Hervé (responsable du développement logiciel) ont conçu une « autoroute de déploiement » pour fluidifier le passage du développement à la production des applicatifs.
• Première étape :Normaliser les environnements d’exécution, du développement à la production (même typologie, même architecture). Ces environnements ISO permettent d’identifier très tôt d’éventuels problèmes à résoudre. Objectif : éviter les déconvenues lors des mises en production.
• Deuxième étape :Concevoir une usine logicielle, mettre en place des outils pour mettre en production de manière très fluide et sécurisée.
Ces outils ont permis à OUI.sncf de réaliser plus de 230 mises en production l’an dernier. Pour réussir une telle démarche, et pour que les développeurs et les exploitants l’acceptent, Philippe Martin conseille de confier la mission à une équipe constituée à 50% de développeurs et à 50% d’exploitants. C’est de cette manière que l’usine logicielle a été construite chez OUI.sncf, pour prendre en compte les besoins et les contraintes des deux parties.

« Agile et DevOps sont les enfants des démarches Lean »

Ce sont les mots choisis par Christophe Rochefolle, Directeur Excellence Opérationnelle, pour introduire les démarches Agiles et DevOps. L’Agilité permet de « proposer un maximum de valeurs aux parties prenantes » en les rapprochant des équipes de conception. Mais la valeur d’un produit ne se mesure qu’en production.
"L’Agilité amène au potentiellement livrable, DevOps permet que le « potentiellement livrable » soit livré et que des feedbacks soient envoyés."
Faire travailler les développeurs et les exploitants ensemble permet d’optimiser l’expérience utilisateur (au-delà de la qualité de service) et d’assurer la sûreté de fonctionnement. Cocher une liste de tâches « Exploitabilité » ne veut pas dire que tout se passera bien en production. La démarche permet de tout mettre en place pour qu’en production, le système puisse détecter ou diagnostiquer une panne, voire s’auto-réparer.
"Des incidents, il y en aura toujours : perte de datacenter, de machine virtuelle, de flux réseau… Cette démarche permet de passer d’un mode « on croise les doigts » à un développement d’applications résilientes, capables de résister et de continuer à fonctionner.""

Des expériences pour sensibiliser les équipes

Pour que les équipes comprennent les enjeux d’une telle démarche, Netflix a créé un Chaos Monkey : il s’agit d’une application, en production, qui débranche des flux réseau ou des machines aléatoirement, sans que personne ne puisse le contrôler. Avec un tel programme en environnement de production, les équipes sont obligées d’imaginer tous les scénarios et les démarches à appliquer en cas de problème. La sûreté de fonctionnement devient un vrai enjeu.
OUI.sncf vient de déployer un tel programme en production. L’entreprise s’est également inspirée des GameDays d’AWS pour tester la résilience de ses applications. Le vendredi 13 janvier (sic), les équipes applicatives volontaires ont participé à un Day of Chaos. Toutes les 30 minutes, des exploitants simulaient des pannes en pré-production. Les équipes obtenaient des points en fonction des détections, des diagnostics et des résolutions. Ce type d’événement gamifié permet d’initier les équipes de développement à ces concepts.

Les métiers se transforment avec DevOps

Philippe Martin insiste sur un point : les Ops ne vont pas disparaître.
On fait du DevOps, pas du NoOps : l’exploitant est intégré à l’équipe. Sa valeur ajoutée n’est plus dans la mise en production. Le rôle de l’Ops est de sensibiliser et former les personnes de son équipe à la sureté de fonctionnement d’un système d’information.

Ainsi, plutôt qu’intervenir à la fin uniquement lors de la mise en production, il peut contribuer à la conception de l’application dès le début du projet puis tout au long de la vie du produit afin que l’application soit :
• testable : prévoir les tests techniques (performance, charge)
• simple à installer : préparation de l’autoroute de déploiement
• facile à superviser : mettre en place les éléments nécessaires à une supervision et un alerting pertinent et adapté
• facile à diagnostiquer : mettre en place les différents moyens (Centralisation des logs, APM, …)
• résiliente : mettre en place les patterns et les tests nécessaires

Frédéric Arnal, Responsable MAD (Mission Agilité et DevOps) chez OUI.sncf, veille à ce que les salariés du groupe vivent au mieux ces changements. Il insiste sur l’importance de « savoir pourquoi on fait telle ou telle chose », sur la bienveillance en entreprise et sur l’accompagnement des salariés. Il identifie plusieurs problématiques à anticiper pour que les salariés apprécient dans la démarche :
• Le savoir : ce sont de nouvelles pratiques, il faut sensibiliser les salariés aux bienfaits d’une telle démarche. Ces freins disparaissent rapidement.
• La reconnaissance : certains salariés pourraient penser qu’il s’agit d’une remise en cause de leur travail, ce n’est pas le cas.
• Le management : les fonctions managériales évoluent profondément. Les managers peuvent appréhender la gestion d’équipes auto-organisées. On ne gère pas les équipes de la même manière que dans un monde hiérarchique.

Pour anticiper ces frictions, il est important d’accompagner les professionnels concernés par ces changements et rappeler que les postes sont amenés à évoluer, non à disparaitre.

La démarche DevOps permet de valoriser les professionnels techniques, tant pour leur carrière professionnelle que leur épanouissement personnel, et permet de les accompagner pour devenir des experts accomplis. Cette transformation permet à l’entreprise de se préparer aux enjeux de « Time to market » tout en se garantissant une qualité d’expérience et une stabilité durable : « les méthodes doivent évoluer pour permettre à l’entreprise de s’adapter. Ce type de démarche donne la capacité aux salariés d’être innovants ».

Vous pouvez retrouver cet article sur le Blog du Modérateur http://bit.ly/2mWEgHS