Blog

Points de vue brûlants sur le gel du code

par Jeli 21 décembre 2022 | 11 min de lecture

Cet article a été initialement publié sur le blog Jeli. Jeli a été acquis par PagerDuty en 2023 et nous le republions ici pour apporter leur leadership éclairé à notre communauté.


Les paroles peuvent être controversées, mais nous connaissons tous le classique des fêtes « Bébé, il fait froid dehors »,

 

Je ne peux vraiment pas rester

Bébé, tu es toujours de garde

Je dois partir

Bébé, tu es toujours de garde

Cette année a été

Vous avez arrêté le déploiement

Tellement sympathique

Regardez votre code, c'est comme de la glace

 

Bon, ce ne sont peut-être pas les paroles, mais elles semblent familières à la plupart des organisations d'ingénierie à cette période de l'année. La période des fêtes approche et, dans le domaine de la technologie, cela signifie soit que la moitié de votre équipe est en vacances, soit que la disponibilité de votre produit est vitale pour les prochaines semaines. Ou les deux. Probablement les deux. Les entreprises du monde entier ont déjà commencé à geler les déploiements pendant les fêtes afin d'empêcher l'introduction de bugs dans leur code.

Vous pourriez penser que cet article de blog arrive trop tard, nous sommes déjà en plein milieu des congés et des périodes de congés liés aux déploiements de vacances. Considérez ceci comme une visite des fantômes des périodes de congés liés aux déploiements de vacances. Il n'est pas trop tard pour lancer une discussion rétrospective sur les congés passés et présents. Il y a toujours des moyens de s'améliorer, permettez-moi d'être votre fantôme du futur congélation des déploiements.

Comme pour tout ce qui se passe dans le monde moderne, il existe une grande part de nuances lorsqu'il s'agit de déterminer si les gels de déploiement sont bons ou mauvais. La vie serait beaucoup plus facile si nous pouvions quantifier avec certitude les choses comme bonnes ou mauvaises. Malheureusement, en réalité, rien n'est aussi simple. Il existe de nombreux sentiments mitigés à propos des gels de déploiement, comme en témoignent les critiques que l'on peut trouver sur Internet à ce sujet. Les gels de déploiement peuvent être bien faits, et les gels de déploiement peuvent être très mauvais. Ils peuvent être tout simplement corrects, ils peuvent entraîner beaucoup de travail supplémentaire et finir par devenir un casse-tête, ou ils peuvent n'être rien de plus qu'une série d'obstacles à franchir.

Commençons par examiner les raisons pour lesquelles la plupart des organisations mettent en œuvre un gel des déploiements : il peut s’agir de l’hypothèse selon laquelle elles préviennent complètement les incidents, ou du désir d’éviter un incident embarrassant pendant une période de pointe de l’année. Vous connaissez ce type d’incident, celui où « un petit déploiement a été effectué pour résoudre un bug, et il a involontairement provoqué un incident catastrophique dont nous ne pensions pas qu’il puisse se produire ».

Hot Take : Mettre en place un gel du déploiement ne signifie pas que vous serez à l'abri d'un incident.

Il existe bien trop de façons magnifiques et époustouflantes pour que des incidents se produisent sans qu'une seule modification du code ne soit déployée. Grâce aux changements soudains de trafic, aux expirations de certificats oubliées, aux incidents de fournisseurs, *tousse* aux vulnérabilités de journalisation des erreurs à grande échelle *tousse*, franchement, peu importe si vous n'apportez pas de modifications à votre code, des incidents se produiront quand même. Vous pouvez même découvrir que le fait de ne pas déployer pendant un certain temps expose des problèmes sous-jacents dont vous ignoriez l'existence. Honnêtement, c'est la raison pour laquelle toute la communauté Learning from Incidents existe, car un seul changement - une « cause profonde » - n'est jamais l'histoire complète. Les incidents sont une tempête parfaite de facteurs contributifs qui se combinent pour conduire à une perturbation.

Empêcher toute modification de votre base de code ne vous évitera pas d'incidents pendant la période des fêtes. Arrêt brutal.

De nombreuses personnes ont écrit des blogs expliquant pourquoi il ne faut pas mettre en place un gel du code pour les fêtes. Mais la discussion ici porte sur la façon dont les processus que nous mettons en place nous affectent. Facilitent-ils ou compliquent-ils notre vie ? C'est une question importante, qui dépend de nombreux facteurs nuancés autour de vos systèmes, de vos employés, de la culture de votre entreprise et de votre environnement de travail. Il n'existe pas de méthode unique et correcte pour y parvenir.

Nous proposons de reformuler cette discussion en passant de « devrions-nous geler les déploiements pendant les vacances ? » à « que pouvons-nous faire pour que les vacances se passent bien pour nos clients et nos employés ? »

Si votre période de pointe coïncide avec la période des fêtes, cette question est particulièrement cruciale. Vous pouvez soit ignorer le fait que vos employés sont également des personnes qui aimeraient profiter des fêtes en ne travaillant pas tout le temps, soit l'accepter et accorder des vacances à leurs employés. Votre entreprise pourrait même accorder à tout le monde le même temps de congé ! Incroyable ! Mais savez-vous qui n'a pas le droit de prendre pleinement ce temps de congé ? Les ingénieurs d'astreinte et le support de première ligne. Les lumières sont maintenues allumées par les ingénieurs d'astreinte qui répondent aux alertes depuis leur téléphone au centre commercial, et les employés les moins bien payés de l'entreprise sont assis avec leur ordinateur portable à la table du dîner, prenant des tickets ou discutant, à moitié présents, pendant que les fêtes se déroulent autour d'eux.

Les astreintes pendant les vacances sont pénibles. Nous avons déjà vécu cette situation. Être assis dans sa voiture avec son ordinateur portable sur le parking d'un centre commercial est bizarre, et les gens qui discutent avec le support à Noël sont généralement incroyablement en colère et vous le font ressentir.

Prise de position à chaud : Toute personne qui est de garde ou qui fournit du soutien pendant les vacances doit bénéficier d'un temps de congé supplémentaire obligatoire et recevoir une indemnité de vacances.

Le fait de travailler pendant les vacances ne fait pas de vous un héros, mais un travailleur qui enregistre des heures de travail un jour férié. Si vous êtes de garde pendant les vacances, prenez d’autres congés, être de garde n’est pas être en vacances. Nous sommes tous fatigués. Nous sommes sur le point de terminer deux des années consécutives les plus stupides de mémoire récente. Faites une pause. Une vraie pause, sans travailler, sans ouvrir votre ordinateur portable. (Et à toute entreprise qui ne peut pas fermer ses opérations de support pendant les vacances, devinez quoi ? Votre personnel de support est un travailleur essentiel. Il devrait gagner plus d’argent.)

CONSEIL : pour ceux qui sont déployés pendant les vacances : n’oubliez pas que l’ingénierie n’existe pas dans le vide.

Il est essentiel de communiquer sur ce que vous déployez et sur les résultats potentiels pour les clients, dans un endroit visible en interne. Considérez ces déploiements réussis :

  • Un bug est corrigé.
  • Désormais, les solutions de contournement adoptées par quelques comptes importants selon leur gestionnaire de compte ne fonctionnent plus.
  • Une mise à jour rapide du frontend a également modifié les options du menu pour les classer par ordre alphabétique.
  • Désormais, les clients bombardent le support de questions sur l’emplacement des « paramètres ».
  • Une augmentation du taux de demande est mise en place pour un outil interne afin d'extraire des données pour un tableau de bord.
  • Déclenche désormais des alertes pour un DBA, rien n'est cassé, l'augmentation des demandes est juste au-dessus du seuil existant pour les alertes

Ces incidents ne seront probablement pas déclarés comme des incidents, car la production n'est pas interrompue. Et ce sont tous des correctifs raisonnables et mineurs mis en place par des ingénieurs qui travaillent pendant les vacances. Mais ce responsable de compte est en vacances et il essaie de répondre aux clients depuis une remontée mécanique, il n'y a que 3 personnes chargées du support en ce moment et elles sont noyées dans les chats, et le téléavertisseur de cet administrateur de base de données de garde explose alors qu'elle gère trois enfants à la maison et une maison pleine de parents. Ces personnes résolvent désormais les problèmes en mode difficile. Des problèmes qui auraient pu facilement être escaladés en interne lorsque la moitié de l'entreprise n'était pas en vacances, sont maintenant une chasse ardue pour voir si quelque chose a changé, ce que c'était, qui peut aider et ce qui peut être fait à ce sujet.

Communiquer sur les changements ne concerne pas le code déployé, mais la gestion des attentes de l’ensemble de l’écosystème des travailleurs dont les emplois sont impactés par ces changements.
Les semaines précédant et suivant le gel des déploiements sont les plus propices aux incidents. Avant un gel des déploiements, vous pouvez assister à une course folle pour sortir les choses tant qu'il est encore possible de le faire. Après un gel, cela peut ressembler à un embouteillage de déploiements, prêts à interagir de manière inattendue.

Et voici la prise de position la plus brûlante jusqu'à présent : cela va arriver, que l'on déploie le gel ou non.

« Non ! Nous ne faisons pas de gel des déploiements pour cette raison ! » Nous sommes désolés de vous l'apprendre, mais cela se produit toujours. La cohue avant les vacances se produira toujours, de même que la lenteur du nettoyage des toiles d'araignées, puis l'accélération du rythme lorsque les gens reviennent. C'est juste moins apparent parce qu'au lieu des limites nettes d'un gel des déploiements, ce sont les dates décalées des départs et des retours de vacances des gens.

La transition entre une semaine de vacances d'entreprise, un gel des déploiements ou toute autre période de temps est une question de gestion des attentes. Dans le langage du gel des déploiements, nous appelons cette période « l'arrivée du gel ». Nous ne disons pas qu'il faut considérer le mois de décembre comme un échec et s'attendre à ne faire aucun progrès au cours du dernier mois de l'année. Mais de manière réaliste, le rythme de travail sera modifié, les choses ralentiront lorsque les gens commenceront leurs vacances, mais il y aura aussi une ruée pour terminer les choses avant la fin de l'année. Cette période est la plus tendue lorsqu'elle est entourée de délais importants, en particulier juste après, au début du mois de janvier.

Conseil pratique : votre planification annuelle/trimestrielle doit s’adapter à la réalité du mois de décembre.

Il est impératif de s'assurer que le travail prévu est raisonnablement réalisable dans ce laps de temps, puis de peut-être le réduire un peu plus.

La clé pour revenir en janvier n’est pas différente de ce qui est nécessaire en décembre. Il s’agit simplement d’ajouter le zèle et l’engagement renouvelés dont nous faisons tous preuve au début de l’année : communiquez ce que vous déployez, avant de le déployer, dans un lieu public interne. Parlez de ce que vous êtes censé faire et des choses que cela pourrait toucher. Coordonnez-vous pour savoir si vous allez continuer pendant les deux premières semaines de janvier comme d’habitude, ou si vous voulez avancer plus lentement et faciliter le retour des différentes équipes à des déploiements selon des calendriers différents. Et lorsque nous disons « lieu public interne », je veux dire dans un espace où des personnes extérieures à l’ingénierie et à la planification sont impliquées et incluses. Communiquer sur les changements ne concerne pas le code déployé, mais la gestion des attentes de l’ensemble de l’écosystème des travailleurs dont les emplois sont impactés par ces changements.

Exemple de réponse si un gel de déploiement complet est votre problème : un gel de déploiement signifie que les gens n'essaient pas activement de progresser sur un projet de développement qui doit être déployé. Les gels de déploiement doivent correspondre soit à du temps libre, soit au temps passé sur des éléments qui n'ont pas besoin d'être déployés une fois terminés.

Cela inclut les spécifications pour la planification à venir, la coordination, le développement d'outils pour prendre en charge les processus et d'autres tâches au-delà des changements face aux clients. C'est tout. C'est la recette secrète. Les gels de déploiement ne doivent pas signifier des ingénieurs inactifs. Cela devrait signifier que les ingénieurs effectuent tout le travail que le travail exige au-delà de la simple écriture de code. Vous ne trébucherez pas sur trop de déploiements après un dégel si la majorité du gel n'a pas été consacrée à travailler sur le code.

Les conseils ci-dessus sont également pertinents pour ceux qui n'appliquent pas de gel des déploiements. Peut-être que vos semaines avant et après les vacances sont également consacrées à vous concentrer sur d'autres tâches en dehors du déploiement. Cela ne signifie pas nécessairement zéro déploiement, mais cela peut aider à reprendre le rythme lorsque les gens retournent au travail après les vacances.

Une fois que vous êtes de retour dans le coup, il est temps de revoir votre approche de déploiement pendant les vacances. Entamez une conversation sur ce qui a fonctionné et ce qui n'a pas fonctionné. Parlez aux personnes qui étaient de garde, à celles qui ont été retirées en ligne de leurs vacances, aux organisateurs du processus et même aux clients de leurs expériences. Discutez des changements qui peuvent être apportés pour que l'ensemble du processus fonctionne mieux pour les personnes concernées.

Nous le répétons : déploiement, gel ou non, des incidents se produiront toujours pendant les vacances. Envoyez une aide-mémoire, un guichet unique pour trouver les horaires d'astreinte, les processus d'incident et les plans de secours avant les vacances pour aider les gens à se sentir préparés. Et n'oubliez pas que les incidents sont des opportunités. Ils créent un environnement dans lequel les équipes improvisent, réagissent, apprennent et travaillent ensemble pour comprendre et résoudre les problèmes en temps réel. Prenez soin les uns des autres, soyez indulgents avec vous-même et préparez-vous à apprendre des choses incroyables ensemble.

Ceci étant dit, nous vous laissons à vos propres chants de Noël codés.