Trois ingrédients pour des versions de logiciel d'excellence

Versez une dose d'architecture et deux doses de travail d'équipe. Ajoutez de l'automatisation et mélangez.

Dan Radigan Dan Radigan
Parcourir les rubriques

À un moment ou à un autre de votre carrière, si ce n'est pas déjà le cas, vous serez impliqué dans une livraison de logiciel monolithique. Autrement dit, une livraison avec des interdépendances et des bugs récalcitrants, qui oblige l'ensemble de l'équipe à rester sur le pont en permanence. Sans parler du fait qu'une fois en production, elle nécessitera probablement plusieurs correctifs.

L'expédition du code (la livraison) constitue un baromètre puissant de l'agilité pour les développeurs. Chaque effort consenti pour accélérer la planification, la programmation et les tests est voué à l'échec si la livraison n'est pas un processus fluide. Pour que la livraison devienne une étape agile, l'automatisation est essentielle. De même, il est crucial de réunir, dès le début de la phase de développement, les programmateurs et les opérateurs. Enfin, il convient de mettre en pratique l'intégration continue et de traiter les défauts immédiatement.

L'une des caractéristiques du développement Agile consiste à garder le code à un état « livrable ». Toute la planification Lean et tout le développement itératif du monde ne signifieront rien si vous n'êtes pas en mesure de livrer le code au moment où vous décidez qu'il est prêt à l'être. 

Les versions de logiciel d'excellence commencent par une architecture modulaire

Dans n'importe quel programme de développement, il est recommandé de pouvoir livrer facilement et souvent. L'équipe peut faire en sorte que la livraison devienne une étape naturelle de sa culture Agile en développant une architecture modulaire ou en faisant un refactoring vers celle-ci. Au lieu d'avoir une seule grande application (comme l'application monolithique mentionnée plus haut), vous pouvez la modulariser en plusieurs parties au début du programme. Regroupez les fonctionnalités similaires en applications ou composants plus petits, et définissez des contrats d'API clairs entre chacun de ces composants et applications. Ces API peuvent être testées automatiquement avec chaque build afin d'en assurer la compatibilité et de réduire les risques lors de la livraison du logiciel.

La modularité de l'architecture signifie que vous n'êtes pas obligé de livrer la pile logicielle dans son intégralité dans une livraison de style « big bang ». De plus, les contrats d'API simplifient l'actualisation des composants et garantissent la compatibilité entre les versions. En bref, les livraisons modulaires nécessitent moins de parties mobiles. Et cela se traduit par des livraisons plus simples.

Les versions de logiciel d'excellence s'appuient sur d'excellentes relations

Le développement se fait rarement dans le vide. En effet, un développement d'excellence implique toute l'équipe, depuis la gestion de produit jusqu'aux opérations. Par exemple, l'équipe opérationnelle est un partenaire clé pour la livraison du logiciel en production, étant donné qu'elle contribue à le transmettre aux utilisateurs.

Les équipes de développement peuvent aider à informer et à habiliter les équipes opérationnelles au moyen des techniques suivantes :

  • Faites en sorte que la nomenclature soit claire pour chaque livraison. Les équipes opérationnelles ne disposent pas toujours du même niveau de contexte que l'équipe de développement à propos de la livraison.
  • Pour chaque ticket résolu dans la livraison, fournissez un lien qui renvoie vers votre outil de suivi des tickets et à votre système de contrôle des sources afin que l'équipe opérationnelle dispose du même niveau de contexte en cas de problème pendant le déploiement.
  • Certains problèmes apparaissent parfois lorsque vous faites un push du code depuis l'environnement de développement vers l'environnement de staging. Formulez ces problèmes, étant donné qu'ils peuvent surgir à nouveau lors du push en production.
  • Certains bugs peuvent apparaître lors du déploiement. Par conséquent, fournissez toujours à l'équipe opérationnelle une procédure de remontée claire afin de résoudre les problèmes de façon fluide.

Les équipes opérationnelles peuvent aider leurs homologues du développement via les suggestions suivantes :

  • Lorsque des problèmes surviennent en production, prenez le temps d'en comprendre les causes premières et les solutions. Ainsi, ces problèmes seront évités (ou gérés plus facilement) à l'avenir.
  • Migrez de nouveau les données de configuration de l'environnement de production vers les environnements de staging et de développement afin d'éviter toute dérive de configuration.

Lorsque le code migre du développement vers le staging, puis vers la production, la configuration clé et les données utilisateur migrent dans l'autre sens : de la production vers le staging et vers le développement. Cette relation bidirectionnelle permet à l'environnement de développement de modéliser étroitement l'environnement de production. Il y a ainsi moins de bugs et moins de surprises le jour de la livraison.

Livraison de logiciels exceptionnels | Atlassian – Le coach Agile

Les versions de logiciel d'excellence sont simples en termes de « push »

Automatisez ! Automatisez ! Automatisez !

L'automatisation d'une livraison est la meilleure façon d'améliorer la culture de la livraison. Si le processus n'est pas encore automatisé, commencez par automatiser la livraison vers l'environnement de staging. Une fois que tout le monde en constatera la simplicité, l'étape suivante viendra tout naturellement : automatiser les déploiements en production.

Si les livraisons sont difficiles, faites en sorte qu'elles deviennent une pratique fréquente, même s'il ne s'agit que de livraisons vers le staging. Si elle ressent les difficultés liées à la livraison, l'équipe de développement favorisera l'innovation afin de la faciliter (et de l'automatiser).

Les tests automatisés et l'intégration continue sont des disciplines clés, qui favorisent des livraisons d'excellence. Assurez-vous que les délais restent aussi courts que possible pour les builds et les tests. Et souvenez-vous que les builds qui sont faciles à valider sont plus simples à livrer. Cela est dû au fait que le cycle de validation suit plus étroitement l'équipe. 

Les versions de logiciel d'excellence sont formidables !

L'une des caractéristiques du développement agile consiste à garder le code à un état « livrable ».

Notre méthode

Nous estimons que, pour nos propriétés SaaS, les livraisons sont plus faciles à gérer si elles sont limitées et fréquentes. Pour les produits téléchargeables, une collaboration étroite entre les équipes de développement, opérationnelles et d'ingénierie de build est extrêmement utile. Ces groupes doivent travailler ensemble pour automatiser les livraisons et adapter, de façon proactive, l'automatisation aux changements qui seront apportés ultérieurement aux produits. Chez Atlassian, beaucoup d'équipes déploient automatiquement chaque build de la branche principale réussi dans un environnement de test. Lorsque le moment est venu d'envoyer une version vers l'environnement de staging ou aux clients, ces équipes peuvent déclencher l'automatisation du déploiement via un simple bouton. 

Pour les développeurs que nous sommes, la livraison doit être le point d'orgue du cycle d'innovation. Nous pouvons enfin observer les clients interagir avec le code que nous avons écrit et nous fournir leur feedback. Voilà ! En faisant en sorte que la livraison devienne une étape naturelle de votre journée de travail, vous simplifiez le transfert du code vers la production. Et c'est tellement satisfaisant de pouvoir dire : « C'est mon code ! ».