24 capacités clés pour guider l'amélioration de la livraison logicielle
Auteur : IT Revolution
Source : 24 Key Capabilities to Drive Improvement in Software Delivery
Date : 01/09/2020
Traducteurs : Fabrice Aimetti
Date : 09/06/2023
Traduction :
Ce billet est adapté d'un extrait du livre Accelerate de Nicole Forsgren, PhD, Jez Humble et Gene Kim.
Nos recherches, basées sur quatre années de publication du rapport State of DevOps, ont permis de découvrir 24 capacités clés qui améliorent les performances de livraison de logiciels de manière statistiquement significative. Le livre Accelerate détaille ces résultats. Ce article vous fournit une liste pratique de ces capacités.
Nous avons classé ces capacités en cinq catégories. Dans chaque catégorie, les capacités sont présentées dans le désordre :
- Livraison continue
- Architecture
- Produit et processus
- Lean Management et Monitoring
- Culture
Capacités de livraison continue
Utiliser la gestion des versions pour tous les objets de production
La gestion des versions consiste à utiliser un système de gestion des versions, tel que GitHub ou Subversion, pour tous les objets de production, y compris le code de l'application, les configurations de l'application, les configurations du système et les scripts d'automatisation de la construction et de la configuration de l'environnement.
Automatiser votre processus de déploiement
L'automatisation du déploiement correspond à un niveau de déploiement entièrement automatisé et ne nécessitant pas d'intervention manuelle.
Mettre en place l'intégration continue
L'intégration continue (CI) est la première étape vers la livraison continue. Il s'agit d'une pratique de développement dans laquelle le code est régulièrement vérifié, et chaque vérification déclenche une série de tests rapides pour découvrir les régressions les plus graves, que les développeurs corrigent immédiatement. Le processus d'intégration continue crée des builds et des paquets standards qui sont ensuite déployés et publiés.
Utiliser les méthodes de développement basées sur les branches uniques
Il a été démontré que le développement par branches est un facteur de haute performance dans le développement et la livraison de logiciels. Il se caractérise par moins de trois branches actives dans un entrepôt de code sources, des branches et des forks ayant une durée de vie très courte (par exemple, moins d'un jour) avant d'être fusionnés dans le master, et des équipes d'application ayant rarement ou jamais de périodes de "verrouillage du code" pendant lesquelles personne ne peut intégrer (check-in) du code ou faire des pull requests en raison de conflits de merge dans la branche principale, de gel du code ou de phases de stabilisation.
Mettre en place l'automatisation des tests
L'automatisation des tests est une pratique qui consiste à exécuter automatiquement (et non manuellement) des tests logiciels en continu tout au long du processus de développement. Les suites de tests efficaces sont fiables, c'est-à-dire que les tests détectent les défaillances réelles et ne laissent passer que le code pouvant être publié. Il est à noter que les développeurs doivent être les premiers responsables de la création et de la maintenance des suites de tests automatisés.
Adoption de la gestion des données de test
Les données de test nécessitent une maintenance rigoureuse, et la gestion des données de test devient une part de plus en plus importante des tests automatisés. Parmi les pratiques efficaces, citons le fait de disposer de données adéquates pour exécuter votre suite de tests, la capacité d'acquérir les données nécessaires à la demande, la capacité de conditionner vos données de test dans votre pipeline et le fait que les données ne limitent pas le nombre de tests que vous pouvez exécuter. Nous recommandons toutefois aux équipes de minimiser, dans la mesure du possible, la quantité de données de test nécessaires à l'exécution des tests automatisés.
La sécurité au plus tôt
L'intégration de la sécurité dans les phases de conception et de test du processus de développement des logiciels est essentielle pour améliorer les performances informatiques. Il s'agit notamment d'examiner la sécurité des applications, d'inclure l'équipe infosec (sécurité des données) dans le processus de conception et de démonstration des applications, d'utiliser des bibliothèques et des progiciels de sécurité agréés au préalable et de tester les fonctions de sécurité dans le cadre de la suite d'essais automatisés.
Mettre en place la livraison continue (CD)
La livraison continue (CD) est une pratique de développement où le logiciel est dans un état déployable tout au long de son cycle de vie, et l'équipe donne la priorité au maintien du logiciel dans un état déployable plutôt qu'au travail sur de nouvelles fonctionnalités. Tous les membres de l'équipe disposent d'un retour d'information rapide sur la qualité et la déployabilité du système, et lorsqu'ils reçoivent des rapports indiquant que le système n'est pas déployable, des correctifs sont rapidement apportés. Enfin, le système peut être déployé en production ou auprès des utilisateurs finaux à tout moment, à la demande.