Pourquoi votre processus de déploiement ressemble exactement à la structure de votre équipe
Vous avez probablement déjà observé ce scénario. Une équipe de développeurs termine une fonctionnalité. Ils la transmettent à l'équipe QA. L'équipe QA exécute les tests, trouve des problèmes, la renvoie. Après plusieurs allers-retours, l'équipe QA valide. Ensuite, le code part vers l'équipe infrastructure pour être déployé sur les serveurs. Si le changement implique une mise à jour du schéma de base de données, l'équipe DBA doit être impliquée quelque part au milieu. Chaque équipe a son propre calendrier, ses propres priorités, sa propre façon de travailler. Un simple déploiement prend des jours. Les multiples transferts créent des frictions. La communication se brise quelque part, et quelque chose tourne mal.
Ce schéma n'est pas une coïncidence. Ce n'est ni de la malchance ni un mauvais outillage. C'est le reflet direct de la façon dont l'équipe est organisée.
Le schéma que vous pouvez voir partout
Lorsque vous regardez des équipes divisées en groupes séparés, le processus de déploiement a tendance à refléter cette séparation. L'équipe applicative écrit le code mais ne peut pas le déployer. L'équipe base de données gère les schémas mais n'est impliquée que tard dans le processus. L'équipe infrastructure provisionne les serveurs mais ne comprend pas le comportement de l'application. L'équipe QA teste tout mais n'a pas son mot à dire sur la façon dont le système est construit.
Chaque groupe ajoute son propre point de contrôle. Chaque point de contrôle ajoute du temps d'attente. Le résultat est un processus de déploiement qui ressemble à une course de relais avec trop de coureurs et aucune ligne d'arrivée claire. Tout le monde est responsable de sa partie, mais personne n'est responsable du bon fonctionnement de l'ensemble.
Le diagramme suivant montre comment chaque équipe ajoute un point de contrôle, transformant le déploiement en une lente course de relais :
C'est la loi de Conway en action. Cette loi stipule que les organisations conçoivent des systèmes qui reflètent leurs structures de communication. Si vos équipes sont cloisonnées, votre système sera cloisonné. Si votre déploiement nécessite une coordination entre cinq groupes différents, ce n'est pas un problème de processus. C'est un problème organisationnel qui se manifeste dans votre pipeline.
Ce qui change quand la propriété est claire
Regardez maintenant un type d'équipe différent. Une équipe possède un service de bout en bout. Elle écrit le code. Elle gère le schéma de base de données. Elle gère l'infrastructure qui le fait fonctionner. Elle déploie elle-même en production. Lorsqu'elle doit publier un changement, elle n'attend pas qu'une autre équipe approuve ou exécute le déploiement. Elle comprend chaque couche impliquée parce qu'elle l'a construite et qu'elle la fait fonctionner.
Le processus de déploiement devient simple. L'équipe écrit un changement, exécute ses tests et déploie. Si quelque chose se casse, elle sait exactement qui doit le réparer. Les mêmes personnes qui ont écrit le code sont celles qui reçoivent l'alerte à 2 heures du matin. Cet alignement change leur façon de penser la qualité, les tests et les risques.
Une propriété claire ne signifie pas que chaque équipe doit tout construire à partir de zéro. Elles peuvent utiliser des plateformes et des services fournis par une équipe d'ingénierie de plateforme. L'essentiel est que l'équipe ait un contrôle total sur le déploiement de son propre service. Elle n'a pas besoin d'autorisation d'une autre équipe pour pousser une nouvelle version. Elle n'attend pas un créneau de déploiement partagé sur un calendrier partagé.
Comment la structure de l'équipe affecte la gestion des risques
La structure de l'équipe influence également la façon dont les risques sont gérés. Dans les équipes fragmentées, aucun groupe n'a une vision complète du système. Chaque équipe ajoute ses propres vérifications parce qu'elle ne peut pas entièrement faire confiance à ce qui se passe en dehors de son domaine. L'équipe applicative ajoute une étape d'approbation manuelle. L'équipe base de données en ajoute une autre. L'équipe infrastructure en ajoute encore une autre. Le résultat est un processus de déploiement lent, bureaucratique et plein de frictions.
Les équipes avec une propriété claire peuvent appliquer une gouvernance basée sur les risques plus efficacement. Elles comprennent l'impact de leurs changements parce qu'elles comprennent l'ensemble du système. Un petit changement sur un point d'accès non critique n'a pas besoin du même niveau de contrôle qu'une migration de base de données qui affecte tous les utilisateurs. L'équipe peut prendre cette décision parce qu'elle a le contexte.
Un moyen pratique de vérifier votre propre équipe
Si votre processus de déploiement semble lent et douloureux, commencez par regarder la structure de votre équipe. Posez-vous quelques questions :
- Qui peut déployer en production immédiatement sans demander la permission à une autre équipe ?
- Quand quelque chose se casse en production, l'équipe qui a écrit le code possède-t-elle également l'infrastructure et la base de données qui le font fonctionner ?
- Combien de transferts se produisent entre le moment où le code est fusionné et celui où il est exécuté en production ?
- Chaque transfert ajoute-t-il du temps d'attente, des reprises ou des problèmes de communication ?
Si les réponses pointent vers de multiples transferts et une propriété floue, la solution n'est pas un meilleur outil CI/CD. La solution est de réorganiser la structure de vos équipes.
Ce que cela signifie pour votre plateforme
Lorsque vous construisez une plateforme CI/CD, vous ne faites pas qu'automatiser des étapes de déploiement. Vous encodez la façon dont votre organisation fonctionne. Si vos équipes sont cloisonnées, votre plateforme reflétera cela avec des chaînes d'approbation complexes, plusieurs environnements que personne ne possède entièrement, et des processus de déploiement qui nécessitent une coordination entre des groupes qui communiquent rarement.
Si vous voulez des déploiements plus simples, commencez par des structures d'équipe plus simples. Donnez aux équipes une propriété claire sur les services qu'elles construisent. Laissez-les posséder l'infrastructure et la base de données qui supportent ces services. Donnez-leur l'autorité de déployer sans attendre les autres équipes.
La plateforme doit soutenir cette propriété, pas la remplacer. Une bonne plateforme donne aux équipes les outils pour déployer de manière indépendante tout en maintenant la cohérence et la sécurité. Elle n'ajoute pas de points de contrôle qui recréent les silos organisationnels sous forme logicielle.
L'essentiel à retenir
Votre processus de déploiement n'est pas seulement un pipeline technique. C'est un miroir tendu à votre organisation. Si le reflet montre de la complexité, des retards et des frictions, ne cherchez pas la réponse dans un nouvel outil ou un meilleur script. Regardez comment vos équipes sont structurées. Les déploiements simples et rapides viennent d'équipes qui possèdent leurs systèmes de bout en bout. Tout le reste n'est qu'un contournement.