Comment contrôler la multiplication des logiciels
Trois signes de la multiplication des logiciels et solutions pour y remédier
Andrew Boyagi
Senior Evangelist
L'architecture monolithique disparaît rapidement. D'innombrables entreprises du monde entier adoptent désormais une architecture à couplage lâche pour développer leurs logiciels. Des équipes autonomes et distribuées décomposent les applications monolithiques en ensembles de composants, notamment des microservices.
Pourquoi ? Une architecture à couplage lâche permet de faire évoluer plus facilement les performances et la résilience des logiciels, tout en réduisant les risques et les délais d'exécution pour fournir de nouvelles fonctionnalités applicatives. Mais les avantages ne se limitent pas aux logiciels. Une telle architecture permet aux équipes de se déplacer de manière indépendante et de livrer fréquemment des changements bénéfiques pour les utilisateurs. Les équipes autonomes qui créent des logiciels dans une architecture à couplage lâche affichent des niveaux de satisfaction, d'engagement et de productivité plus élevés.
Cependant, les nouvelles méthodes de travail posent de nouveaux défis. En créant un environnement dynamique et évolutif dans lequel les différents composants sont créés indépendamment les uns des autres, la complexité augmente, faisant apparaître un nouveau type de défi : la multiplication des logiciels.
Essayez Compass gratuitement
Améliorez votre expérience de développement, cataloguez tous les services et améliorez l'intégrité des logiciels.
La multiplication des logiciels, qu'est-ce que c'est ?
On parle de multiplication des logiciels lorsque le nombre d'applications ou de composants logiciels d'un environnement augmente et évolue rapidement, complexifiant ainsi considérablement les méthodes traditionnelles de gestion des logiciels et entraînant leur échec. Ce scénario se produit généralement lorsque le rythme s'accélère dans une architecture logicielle distribuée.
La modernisation d'une seule application monolithique est susceptible de se traduire par la création de centaines de microservices gérés par plusieurs équipes qui lancent régulièrement et indépendamment de nouvelles fonctionnalités en production. La propagation de ce phénomène à un portefeuille d'applications pourrait entraîner l'introduction de milliers de microservices par de nombreuses équipes de développement. Rien d'étonnant à ce que les méthodes traditionnelles de gestion d'un portefeuille d'applications, même restreint, aient peu de chances de réussir sur le long terme. Tout au long de notre parcours vers les milliers de microservices qui sous-tendent nos produits actuels, nous avons compris l'importance de maîtriser la multiplication des logiciels pour tirer pleinement parti d'une architecture à couplage lâche et d'équipes autonomes.
Ressource connexe
Microservices et architecture monolithique
DÉCOUVRIR LA SOLUTION
Améliorez votre expérience de développement grâce à Compass
Au début, les symptômes de la multiplication des logiciels peuvent être difficiles à reconnaître. Il peut s'agir de problèmes mineurs qui sont mis de côté au profit de priorités plus importantes. Pourtant, si rien n'est fait, la multiplication des logiciels peut paralyser les équipes de développement en raison d'une charge cognitive plus élevée, réduire l'engagement des équipes et annuler les avantages associés à une architecture à couplage lâche. Comme le dit le proverbe : « Le meilleur moment pour planter un arbre était il y a 20 ans. Le deuxième, c'est maintenant. » La réussite future nécessite de maîtriser la multiplication des logiciels avant qu'elle ne pose problème.
Vous trouverez ci-dessous trois signes de la multiplication des logiciels et différentes solutions pour maîtriser le chaos tout en créant un environnement innovant et dynamique qui libère le potentiel de chaque équipe.
Les revues post-incident identifient les changements en amont comme étant la cause profonde
L'un des premiers symptômes de la multiplication des logiciels est la présence de plusieurs revues post-incident (PIR) indiquant que les changements en amont sont à l'origine d'un incident. Le nombre croissant de microservices et l'augmentation du volume de changements au sein d'un environnement peuvent mettre à rude épreuve les normes existantes en matière de collaboration des développeurs et de coordination des changements. Même une légère augmentation de la fréquence des changements de mensuelle à hebdomadaire pour une application modernisée peut se traduire par une multiplication par 100 des livraisons par mois. Rien d'étonnant à ce que les développeurs aient besoin d'adapter leur méthode de collaboration. Les incidents sont plus susceptibles de survenir en production lorsque les normes de collaboration des développeurs ne sont pas adaptées à un environnement dynamique.
Créer un moyen non intrusif permettant aux développeurs de se tenir informés des changements en amont et en aval constitue un excellent moyen de maîtriser l'impact de la multiplication des logiciels. Chez Atlassian, nous utilisons Compass (un portail de développement qui aide les équipes à comprendre les architectures distribuées) pour envoyer une notification dans l'app aux équipes de développement concernant les changements problématiques apportés aux services en amont et en aval. Lorsque les équipes responsables des services dépendants accusent réception de cette notification, elles indiquent à l'initiateur du changement qu'elles ont pris connaissance de ce dernier. Cela permet de collaborer sur le changement si des tickets sont prévus, afin de réduire le risque d'impacts imprévus sur la production. Comme les incidents sont inévitables dans un environnement dynamique, la collaboration des développeurs en cas d'incident est essentielle pour rétablir rapidement les services.
Dans les revues post-incident, où les changements en amont constituent la cause profonde, il est fréquent que le temps nécessaire pour restaurer les services soit affecté par le temps nécessaire pour identifier le changement en amont problématique, ainsi que l'équipe ou la personne propriétaire du service. Logiquement, la réduction du temps nécessaire pour identifier le changement en amont problématique réduit le temps moyen de reprise d'activité (MTTR) au fil du temps. Cela est d'autant plus difficile dans une architecture à couplage lâche, où les services présentent une hiérarchie de dépendances riche et où la cause profonde d'un incident peut se situer à n'importe quel niveau de la stack. Traditionnellement, les intervenants sur l'incident parcourent les journaux ou les enregistrements des changements pour identifier ceux susceptibles d'être à l'origine d'un incident. Dans un environnement dynamique, c'est comme détruire une fourmilière pour retrouver la fourmi qui vous a mordu.
Chez Atlassian, nous utilisons le flux d'activité de Compass pour réduire le MTTR. Il affiche tous les événements relatifs aux systèmes en amont ainsi que les informations sur l'équipe propriétaire. Cela réduit considérablement le temps de tri en favorisant la collaboration des développeurs en cas d'incident. Des incidents peuvent se produire, mais il est essentiel d'identifier rapidement un changement en amont comme étant la cause profonde d'un incident pour limiter l'impact et restaurer rapidement les services.
Le flux d'activité de Compass affiche tous les événements relatifs aux systèmes en amont, ce qui réduit le temps de tri en cas d'incident.
L'équipe est débordée, mais n'avance pas
L'adoption d'une architecture à couplage lâche est l'un des principaux ingrédients de la productivité et de la satisfaction de l'équipe : la possibilité d'agir avec un haut niveau d'autonomie. Si rien n'est fait, la multiplication des logiciels peut annuler certains de ces avantages, ce qui se traduit par une équipe débordée, mais non productive et mécontente. Les équipes de développement se plaignent souvent que tout fonctionne bien jusqu'à ce qu'elles doivent interagir avec une autre équipe. Cela est d'autant plus vrai lorsque la multiplication des logiciels devient un problème. Un environnement qui s'étend et se développe rapidement réduit la capacité des développeurs à savoir qui impliquer en cas de dépendances en amont ou en aval, ce qui entraîne un ralentissement et une frustration accrue pour les équipes qui essaient de garder le rythme.
À titre d'exemple, imaginons que les équipes Alpha et Bêta aient le même nombre de tickets et de story points terminés dans Jira chaque semaine. L'équipe Alpha consacre 90 % de ses efforts à livrer de nouvelles fonctionnalités en production, tandis que l'équipe Bêta consacre 30 % aux nouvelles fonctionnalités et 70 % à la recherche de moyens d'interagir avec les nombreux services en amont dont elle dépend. Les deux équipes affichent le même niveau de charge, mais seule l'équipe Alpha peut éventuellement être considérée comme productive. La multiplication des logiciels accentue la nécessité de collaboration entre les équipes. Il est essentiel de trouver des moyens intelligents permettant aux équipes autonomes d'interagir avec la demande pour tirer pleinement parti d'un environnement à couplage lâche.
Dans un environnement dynamique et en pleine croissance, la possibilité d'accéder à des informations en libre-service est importante pour la productivité et la satisfaction de l'équipe. L'un des moyens d'y parvenir est d'implémenter un catalogue centralisé de composants logiciels avec une gestion décentralisée. Il s'agit d'un catalogue centralisé dans lequel chaque équipe est chargée de créer et de mettre à jour les services dont elle est propriétaire. Les environnements traditionnels disposent généralement d'un catalogue centralisé géré par une équipe ou une fonction spécifique. Cependant, cette configuration ne permet pas de s'adapter aux changements dans un environnement distribué, ce qui oblige les équipes à créer des wikis fictifs pour savoir avec qui interagir et comment. Chez Atlassian, nous avons découvert qu'une approche décentralisée réduit les efforts invisibles et inutiles des équipes, améliore les fonctionnalités en libre-service et crée un environnement d'interaction à la demande. Maîtriser la multiplication des logiciels en fournissant des informations en libre-service sur les dépendances en amont et en aval est un excellent moyen d'améliorer non seulement la productivité, mais aussi la satisfaction et l'engagement de l'équipe.
Compass fournit un emplacement central contenant des informations spécifiques des développeurs sur les composants logiciels qu'ils possèdent et dont ils dépendent.
La gestion du changement devient un goulot d'étranglement
Un autre signe clé de la multiplication des logiciels ? Le fait que les fonctions de gouvernance, comme la gestion des changements et la cybersécurité, constituent de plus en plus un goulot d'étranglement lorsque vous apportez des changements aux systèmes de production. Ces fonctions jouent un rôle central en garantissant le respect des normes et des attentes organisationnelles avant que des changements ne soient déployés en production. Cependant, ils deviennent de moins en moins efficaces à mesure que les logiciels se multiplient. Dans un environnement marqué par la multiplication des logiciels, les fonctions de gouvernance sont progressivement débordées à mesure que les changements s'accélèrent, ce qui crée un backlog de changements et de demandes à passer en revue et retarde ainsi les déploiements en production. Le rapport State of DevOps 2022 révèle que 56 % des personnes interrogées estiment que les processus de sécurité logicielle de leur organisation ralentissent le processus de développement.
Idéalement, les pratiques de sécurité sont intégrées aux processus de développement. Mais en réalité, de nombreuses organisations font appel à l'humain pour examiner les changements avant le déploiement en production. Cette approche n'est pas efficace à l'échelle requise dans un environnement distribué. En plus de ralentir la capacité de l'organisation à apporter des changements, cela peut provoquer des frictions entre les équipes de développement et les personnes chargées de garantir le respect des normes organisationnelles.
Dans un environnement marqué par la multiplication des logiciels, il est essentiel de garantir la vélocité tout en respectant les normes organisationnelles souhaitées à grande échelle. Les cartes de performance automatisées ou semi-automatisées constituent un excellent moyen de communiquer les normes organisationnelles et de contrôler la conformité de l'environnement de manière non intrusive. Chez Atlassian, nous utilisons Compass pour définir les normes et les attentes de qualité de l'organisation. Cette dernière peut faire preuve de transparence en matière de conformité grâce à la carte de performance de chaque composant logiciel. Les équipes et les responsables de l'ingénierie peuvent ajouter des normes spécifiques des produits aux cartes de performance, ce qui fournit une vue complète des états et des attentes de l'organisation en matière de qualité, accessible à tous les membres de l'organisation. Il s'agit d'un changement significatif : nous passons des contrôles de gouvernance et de conformité en fin de cycle de livraison à la définition précoce des attentes et à la possibilité pour les équipes de les satisfaire au fil du processus de développement. Les équipes de gouvernance peuvent définir les attentes dans un environnement dynamique, tandis que les équipes de livraison ont la possibilité de comprendre et de satisfaire les exigences tout au long du cycle de livraison. Étant donné que la multiplication des logiciels peut être néfaste à la fois pour les équipes de gouvernance et de livraison des logiciels, les cartes de performance sont l'occasion de maîtriser ce phénomène.
La carte de performance Compass est utilisée pour déterminer l'intégrité des composants logiciels par rapport à un ensemble d'attentes définies.
Conclusion…
Il n'existe pas de solution miracle pour maîtriser la multiplication des logiciels. Pourtant, la réussite à long terme dépend de l'identification et de la prise en charge précoce des impacts de cette multiplication. Parmi les premiers indicateurs de ce phénomène, citons différents incidents causés par des changements en amont ou en aval, des équipes surchargées qui n'atteignent pas leurs objectifs et des goulots d'étranglement au niveau de la gouvernance. Pour identifier au mieux la multiplication des logiciels, discutez avec vos développeurs et cernez les défis auxquels ils sont confrontés.
Atlassian a développé Compass pour aider à maîtriser la multiplication des logiciels en gérant la complexité des architectures distribuées à mesure qu'elles évoluent. Il s'agit d'une plateforme de partage d'expériences extensible qui rassemble des informations déconnectées sur tous les résultats d'ingénierie et la collaboration des équipes dans un emplacement central et interrogeable.
Partager cet article
Thème suivant
Lectures recommandées
Ajoutez ces ressources à vos favoris pour en savoir plus sur les types d'équipes DevOps, ou pour les mises à jour continues de DevOps chez Atlassian.