À 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 de logiciels 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 de logiciels) constitue un baromètre puissant de l'agilité pour les développeurs de logiciels. Chaque effort consenti pour accélérer la planification, la programmation et les tests est voué à l'échec si la livraison n'est pas fluide. C'est pourquoi les équipes Agile et DevOps se tournent vers l'automatisation, rassemblent le développement et les opérations dès le début de la phase de développement, adoptent l'intégration continue et résolvent immédiatement les défauts.
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 les logiciels 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 de logiciels 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 des opérations 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 des opérations au moyen des techniques suivantes :
- Faire en sorte que la nomenclature soit claire pour chaque livraison de logiciels. Les équipes opérationnelles ne disposent pas toujours du même niveau de contexte entourant la livraison que l'équipe de développement.
- Pour chaque ticket résolu dans la livraison, fournir un lien qui renvoie vers votre outil de suivi des tickets et à votre système de contrôle des sources afin que l'équipe des opérations dispose du même niveau de contexte en cas de problème pendant le déploiement.
- Certains problèmes apparaissent parfois lorsque vous poussez le code depuis l'environnement de développement vers l'environnement de simulation. Formuler ces problèmes, étant donné qu'ils peuvent surgir à nouveau lors du push vers la production.
- Certains bogues peuvent apparaître lors du déploiement. Par conséquent, toujours fournir à l'équipe des opérations une procédure de remontée claire afin de résoudre les problèmes de façon fluide.
Les équipes des opérations peuvent aider leurs homologues du développement via les suggestions suivantes :
- Lorsque des problèmes surviennent en production, prendre 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.
- Re-migrer les données de configuration de l'environnement de production vers les environnements de simulation et de développement afin d'éviter toute dérive de configuration.
Lorsque le code migre depuis le développement vers la simulation, puis vers la production, la configuration clé et les données utilisateur migrent dans l'autre sens : de la production vers la simulation 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 bogues et moins de surprises le jour de la livraison.
Les versions de logiciel d'excellence sont simples en termes de « push »
Automatisez ! Automatisez ! Automatisez !
L'automatisation d'une livraison de logiciels 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 de logiciels 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 de logiciels 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 dans un état « livrable ».
Nous estimons que, pour nos propriétés SaaS, les livraisons de logiciels 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 de logiciels et adapter, de façon proactive, l'automatisation aux changements qui seront apportés ultérieurement aux produits. Chez Atlassian, de nombreuses équipes déploient automatiquement chaque build réussi de la branche principale dans un environnement de test. Lorsque vient le moment d'envoyer une livraison de logiciels 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 de logiciels 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 ! ».
Lancez-vous gratuitement avec le modèle de plan de projet DevOps
Développez, déployez et gérez des applications grâce à une approche basée sur des outils ouverts.