Est-ce qu'on déploie aujourd'hui ?

Où il est question de déploiement le vendredi.

Aujourd'hui nous sommes vendredi. Vu que j'ai déjà épuisé l'un de mes marronniers pour la semaine (les estimations), je me suis dit que c'était l'occasion d'en attaquer un autre : alors, on déploie le vendredi ou pas ?

Ce sujet est source d’innombrables mèmes et blagues dans le milieu. Vous connaissez peut-être le site "est-que qu’on met en prod aujourd’hui, qui répond invariablement le vendredi par un grand... non.

Ne pas déployer le vendredi semble être encore un adage sage, qu'il serait bien avisé de suivre.

De mon côté, je suis très attaché au déploiement continu, ou au moins à ce que les organisations dans lesquelles j’évolue essaient de s’en approcher au maximum. C’est une des pratiques sur lesquelles j’essaye de ne pas céder : les contraintes mises sur le système ne doivent pas nous empêcher, ou nous inciter, à déployer moins souvent. Nous devons trouver d’autres solutions pour réduire les risques liés à des déploiements multiples, souvent plusieurs fois par jour.

Difficile dans ce cadre de dire qu'il ne faut pas déployer le vendredi. Surtout dans le cadre d'un produit très international et orienté utilisateur final comme Mee6.

Il y a pourtant des raisons tout à fait justifiées à ne pas vouloir déployer le vendredi. J'en ai notamment deux en têtes, qu'il faut traiter attentivement.

D'abord, le point de vue de l'ingénierie. S'il y a un problème suite au déploiement le vendredi (en fin de journée bien sûr), qui sera là pour régler les incidents ? C'est d'autant plus vrai dans le contexte de Mee6, avec à la fois une base utilisateur mondiale, et une petite équipe.

Il n'y a pas de réponse facile à ce point. Il convient d'améliorer nos pratiques - cette crainte provient d'abord de l'habitude de livrer des bugs - ce qui permet de réduire les occurrences. Mais personne n'est à l'abri d'une mauvaise surprise. Disposer d'un système très simple de rollback en cas de problème permet de réduire le risque. Au pire, on revient à la version précédente, et on s'attaque au problème. Finalement, si le risque est trop grand pour telle ou telle nouvelle fonctionnalité, et bien, parfois, tant pis... on ne met pas en prod le vendredi.

La deuxième raison est liée au support client. Déployer une nouvelle fonctionnalité un vendredi, pour un produit comme Mee6, c'est avoir un pic d'activité pour le support et les personnes qui sont en lien direct avec la communauté d'utilisateurs tout le week-end. Ce n'est pas le bon moment, cela peut se comprendre. Dans ce cas, la solution qui me semble la plus adaptée est encore de séparer la release aux utilisateurs du déploiement, avec un système de feature flag. L'ingénierie peut continuer son déploiement continu, et le support maîtriser l'ouverture d'une nouvelle fonctionnalité à la horde des utilisateurs.

Alors, est-ce qu'on met en prod aujourd'hui ?