Suite à notre article publié il y a quelque temps présentant Devops, nous détaillons ici quelques initiatives Devops concrètes.
Initiatives Devops : réinventer la communication
D’un côté, nous avons les développeurs qui produisent le code, et de l’autre les administrateurs systèmes qui maintiennent les serveurs sur lesquels va tourner ce code. Le développement prend rarement en compte les contraintes des environnements gérés par l’administration système. Des lignes de code fonctionnant sur un ordinateur personnel faisant tourner son propre serveur web ne seront peut-être pas aussi « dociles » sur un gros système multi-serveurs devant adresser des configurations différentes ou divers systèmes d’exploitation.
Le mur d’incompréhension bâti entre ces deux entités gêne la communication et laisse penser que le travail est terminé « une fois le paquet livré à son voisin », sans se soucier de ce qui peut se passer chez ledit voisin. Pour autant, ne peut-on pas s’empêcher de penser que :
- si les échanges ont lieu dès les premiers instants (le plus en amont possible) afin de s’assurer que le code est bien en phase avec l’architecture mise en place (co-conception voire éco conception),
- si le changement d’architecture permettant de supporter une nouvelle fonctionnalité est défini et validé conjointement,
- si la compréhension du besoin sous-jacent est partagée et que la répartition des rôles et des responsabilités est clairement établie,
- si chacun se rend acteur du changement à opérer (échangeant sur les idées et leur faisabilité)
… alors l’ensemble du procédé de mise en production gagnerait certainement en efficacité et très probablement en souplesse ? L’objectif commun doit être une amélioration à la fois du contenu fonctionnel des applications, mais également de leur qualité de service. Pour cela, les procédures liées aux méthodes agiles sont parfaitement reproductibles. L’utilisation de Kanban ou Scrum doit permettre de mieux partager les actions et les contraintes, et ainsi faire de chacun une partie prenante de l’ensemble, créant cet esprit d’équipe si nécessaire à l’avancée d’un projet. Il convient toutefois de bien identifier toutes les parties prenantes et de disposer d’outils de communication (à défaut de co-localisation).
Initiatives Devops : réinventer la livraison des fonctionnalités
La crainte de modifier les environnements de production entraîne une méthode de livraison aussi familière que dysfonctionnelle : groupements des fonctionnalités pour limiter le nombre de modifications sur l’environnement, le développement de toutes ces fonctionnalités prend donc du temps, la recette est par conséquent longue, le délai reste quant à lui serré pour passer à la prochaine version, des bugs sont constatés par la suite, il faut donc appliquer un correctif et donc attendre la prochaine date de montée de version… On entre dans une logique de projets à plusieurs mois, où la livraison se fait attendre et où celle-ci ne satisfait :
- ni le client qui ne retrouve pas l’ensemble des fonctionnalités demandées malgré le temps depuis lequel il a exprimé son besoin,
- ni le développeur qui se retrouve face à des problèmes qu’il n’a jamais rencontrés lors de création du code,
- ni l’administrateur système qui doit souvent sortir de ses processus pour appliquer un correctif en urgence.
Il faut donc transformer ce cercle vicieux en cercle vertueux et, pour ce faire, modifier la façon de penser la livraison en production. Le mythe à attaquer siège dans la préférence envers les mises en production peu fréquentes. Car plus le rythme des mises en production devient élevé et plus le processus peut être, peu à peu, maîtrisé. De plus, la masse de code est moins importante, donc plus facile à recetter, limitant les risques d’erreurs nécessitant un correctif postérieur. Côté client, l’ensemble donnera une image de plus grande réactivité et de fiabilité. Tout cela n’est possible que par l’automatisation de l’ensemble (intégration de tests dans le code – Tests Unitaires, Tests Fonctionnels (TU,TF) – automatisation des tests – Tests de Non Régression (TNR)– automatisation des livraisons, gestion efficace des remontées de production, …), autant d’étapes clés qui contribuent avantageusement au déploiement continu (intégration continue, livraison continue). Il est néanmoins important de garder en tête que cette mise en place est dépendante de l’ensemble des acteurs du système d’information de l’entreprise et qu’elle nécessite un sponsorship important.
Initiatives Devops : réinventer l’outillage
Mettre en place DevOps dans son entreprise, c’est avant tout changer sa manière de travailler, repenser son organisation, modifier les mentalités et abattre les murs construits depuis des années. Ce n’est pas une mince affaire et l’ampleur de la tâche peut en décourager certains. Quelques outils aident néanmoins à industrialiser les processus et à accompagner les changements d’organisation. En voici quelques exemples :
- Puppet, qui permet la gestion de configurations systèmes dynamiques
- Capistrano, qui permet l’exécution de plusieurs scripts sur différents serveurs, ouvrant la possibilité du déploiement automatique
- Jenkins, application d’intégration continue
One Response
RépondreTrackbacks/Pingbacks