Budget d'erreur
PlanificationÉquilibre entre mises en production de faible qualité en fonction des circonstances liées à l'exploitation
Le concept de budget d'erreur
Le concept de budgétisation des erreurs (EB) a été popularisé dans l'industrie du logiciel par la vision DevOps de Google, appelée "Site Reliability Engineering" (SRE) [Beyer 2016].
L'EB a été introduite pour permettre au Product Owner ou au gestionnaire (PO ou PM) d'équilibrer les questions de qualité avec les situations où une livraison rapide est obligatoire, comme une réparation rapide en production pour faire face à une panne complète du système. Ainsi, l'EB est fortement liée à la disponibilité d'un service et cette disponibilité est souvent appelée"les neuf de la disponibilité", plus il y a de 9, plus la disponibilité est élevée. Ainsi, une disponibilité de 99% ("deux neuf") correspond à une disponibilité minimale de 23 heures 45 minutes et 36 secondes par jour. Pour faciliter la représentation, nous indiquons plutôt la durée d'indisponibilité (c'est-à-dire 14,40 minutes par jour). Habituellement, l'indisponibilité des services est couverte par des accords de niveau de service (SLA), des objectifs de niveau de service(SLO) pour garantir les SLA [Ross 2017] et le budget d'erreur est la quantité de temps que vous êtes prêt à permettre à vos systèmes d'être hors service.
La disponibilité peut être améliorée de différentes manières telles que la réplication, la redondance, l'auto-scaling, les sauvegardes et tout ce qui rend les systèmes plus robustes, mais la robustesse implique d'être conservateur et donc de réduire l'innovation ; d'un autre côté, personne n'achètera un système qui ne fournit pas de valeurs [Meléndez 2021] ou de caractéristiques innovantes alors que d'autres produits fourniront plus de valeur. C'est là que l'EB entre en ligne de compte, car il offre un certain espace pour laisser la qualité et l'innovation se produire :
- lorsque l'innovation est créée, l'EB diminue
- lorsque la consolidation est fournie, EB est soulevé
et en tant que "bon père de famille", l'EB doit rester positif avec une marge suffisante pour gérer les problèmes graves qui introduiront des défauts en même temps que la correction. L'EB est donc lié à la gestion des risques car il aide les équipes à gérer les risques pour [Watts 2020] [Jankovski 2021] :
- Tirer le meilleur parti de leurs ressources
- Améliorer la qualité du service sans sacrifier trop de fiabilité
L'EB permet aux organisations de se concentrer sur le client, de s'organiser autour de la valeur et d'adopter une vision économique.
De plus, pour garantir les SLA, les membres de l'équipe doivent collaborer pour les atteindre en accordant une attention particulière aux indicateurs pertinents avec une marge plus élevée, le SLO. Lorsque le seuil de l'ALS a été atteint, Andon peut être soulevé pour aboutir à un groupe de travail, par exemple dans la saveur 8D.
Si les équipes ont déjà l'habitude de travailler en mode task force, elles vont naturellement collaborer efficacement autour du problème qui heurte les objectifs du service. Ce faisant, les équipes démontreront qu'elles sont responsables de la qualité du produit.
Impact sur la maturité des tests
L'EB n'est pas quelque chose créé par Google. Ce terme est utilisé depuis longtemps dans la conception de systèmes aérospatiaux complexes, car le domaine exige une précision extrême [Briggs 2008]. Dans ce contexte, ce qui est géré est un peu différent des SLA et de la satisfaction des clients puisqu'il s'agit de la précision de certains engins spatiaux ; cependant, le concept reste le même : contrôler la tolérance accordée sur certaines parties du système pour faciliter la livraison sans compromettre le résultat. Dans le domaine des engins spatiaux, l'EB est introduit au moins dès la conception avec de multiples facteurs tels que la température, les vibrations, les matériaux impliqués, les approximations de modélisation des joints, etc. Cet EB est une approche préventive des erreurs auxquelles le vaisseau spatial sera confronté, ce qui semble plus intelligent que de simplement faire face à une déclaration sur une perte de qualité à corriger après coup.
Ainsi, dans une approche "Prevent bugs "appliquée à l'industrie du logiciel, de nombreux facteurs peuvent affecter la disponibilité du service mais aussi sa précision ou tout autre aspect qualitatif que le client peut attendre d'un service numérique. Ces multiples critères devraient mériter des techniques d'ingénierie appropriées :
- Capacité de charge
- Capacité à fournir de nouvelles fonctionnalités
- Précision du service
- Disponibilité du service
Ces facteurs peuvent varier en fonction de la situation, du temps et surtout de l'environnement concurrentiel [Seth 2004]. Ces facteurs attendus seront généralement des exigences non fonctionnelles (NFR) ou tout autre élément de test en décalage à gauche qui mériterait d'être testé et anticipé [Meléndez 2021]. Naturellement, ces éléments liés au décalage vers la gauche peuvent également être complétés par des éléments liés au décalage vers la droite et, éventuellement, faire quelques répétitions dans des situations extrêmes telles que l'effondrement d'un serveur/réseau ou même l'exécution de plans de reprise après sinistre.
L'EB doit également prendre en compte un point spécifique qui n'est pas particulièrement visible comme les SLA mais qui interfère sournoisement avec la réactivité d'une équipe et sa capacité à traiter les demandes, la dette technique car elle ralentit et finit par bloquer le lancement de nouvelles fonctionnalités et la correction de bug . Nous pouvons donc en déduire que la dette technique est liée au budget d'erreur [Hartmann 2020][Howard 2021][Gurumoorthi 2020] tout comme EB accélère la dette technique. De plus, les actions de remédiation doivent être planifiées de manière régulière afin d'éviter que d'énormes efforts soient faits dans l'urgence et introduisent des problèmes supplémentaires : " Lesproblèmes d'aujourd'hui proviennent des solutions d'hier" [Senge 2010].
Ainsi, pour éviter les baisses d'EB dues à une mauvaise libération, l'équipe doit définir une stratégie de déploiement telle que le Dark Launch, le Canary Releasing ou le Blue/Green deployment qui sont vraiment utiles pour déployer soigneusement une nouvelle version, mais l'analyse du trafic peut également être utilisée pour limiter l'impact d'une mauvaise libération si le déploiement a lieu en dehors des heures de pointe pour limiter les impacts sur l'EB [Climent 2020].
Les stratégies d'automatisation poussée et de petits lots de livraison (approche incrémentale) réduisent également l'impact sur l'EB car elles permettent des déploiements rapides de correctifs et réduisent le risque de faire face à d'énormes impacts négatifs.
Quelle que soit votre liste de critères, l'éternelle difficulté réside dans le dilemme entre l'urgence et l'importance. En règle générale, vous pouvez simplement garder à l'esprit que les questions importantes doivent être abordées de manière continue et progressive, à petit pas...
De plus, dans une équipe Scrum, si les développeurs sont responsables du maintien de l'EB à un niveau équitable, le Product Owner (PO) en sera responsable ; par conséquent, le PO doit toujours s'assurer qu'un espace suffisant est accordé aux développeurs pour leur permettre de maintenir l'EB à un niveau raisonnable.
Le point de vue d'Agilitest sur cette pratique
L'automatisation réduit le coût de la transaction [SAFe 2021-06] et évite d'introduire des erreurs de régression dans la production, diminuant ainsi l'EB. Chaque fois qu'une automatisation est sautée, elle devrait alors générer une "dette d'automatisation" qui pourrait également faire partie de l'EB.
Cependant, l'automatisation doit également prendre en compte
- sa propre dette technique [Wiklund 2012].
- impact sur le flux de livraison, notamment si les scripts génèrent des faux positifs
Heureusement, grâce à son approche #nocode [Forsyth 2021], le montant de la dette technique et de la dette dite "flaky tests" et de la dette technique est maintenu plus bas qu'avec le codage standard.
Pour découvrir l'ensemble des pratiques, cliquez ici.
Cartes connexes
Pour aller plus loin
- [Beyer 2016] : Betsy Beyer, Chris Jones, Jennifer Petoff et Niall Richard Murphy - " Site Reliability Engineering : How Google Runs Production Systems " - O'Reilly Media - 2016 - ISBN-13 : 978-1491929124 - https://landing.google.com/sre/sre-book/toc/index.html
- [Briggs 2008] : Hugh C. Briggs - APR 2008 - "Model Error Budgets" - https://trs.jpl.nasa.gov/bitstream/handle/2014/41445/08-0818.pdf
- [Climent 2020] : Jesus Climent - JUIN 2020 - "Budgets d'erreurs SRE et maintenance windows Google Cloud Blog" - https://cloud.google.com/blog/products/management-tools/sre-error-budgets-and-maintenance-windows
- [Forsyth 2021] : Alexander Forsyth - JAN 2021 - " Low-Code et No-Code: Quelle est la différence et quand utiliser quoi ? " - https://www.outsystems.com/blog/posts/low-code-vs-no-code/
- [Gurumoorthi 2020] : Hari Krishnan Gurumoorthi - MAI 2020 - "Site Reliability Engineering : 6 conseils pour regagner vos budgets d'erreurs" - https://www.devonblog.com/software-development/site-reliability-engineering-6-tips-to-regaining-your-error-budgets/
- [Hartmann 2020] : Andreas Hartmann - NOV 2020 - "Produits informatiques vieillissants, dette technologique et budgets d'erreur" - https://www.linkedin.com/pulse/aging-products-tech-debt-error-budgets-andreas-hartmann/
- [Howard 2021] : Joshua Howard - JAN 2021 - "L'erreur de budget le plus difficile" - https://thehardestwork.com/2021/01/21/the-error-budget/
- [Jankovski 2021] : Marin Jankovski & Rachel Nienaber - consulté le 19/AUG/2021 - "Budgets d'erreurs d'ingénierie" - https://about.gitlab.com/handbook/engineering/error-budgets/
- [Meléndez 2021] : Christian Meléndez - vu le 19/AUG/2021 - "Pourquoi vous avez besoin d'un budget d'erreur - et comment le faire fonctionner" - https://techbeacon.com/enterprise-it/why-you-need-error-budget-how-make-it-work
- [Reinertsen 2009] : Donald G. Reinertsen - FEB 2009 - "Les principes du flux de développement de produits : le développement de produits allégé de deuxième génération" - isbn:9781935401001
- [Ross 2017] : A. J. Ross & Adrian Hilton & Dave Rensin - JAN 2017 - "SRE at Google SLOs, SLIs, SLAs, oh my Google Cloud Blog" - https://cloud.google.com/blog/products/devops-sre/availability-part-deux-cre-life-lessons (en anglais)
- [SAFe 2021-06] : SAFe - FEV 2021 - " s Principe n°6 - Visualiser et limiter les encours, réduire la taille des lots et gérer les files d'attente " - https://www.scaledagileframework.com/visualize-and-limit-wip-reduce-batch-sizes-and-manage-queue-lengths/
- [Senge 2010] : Peter M. Senge - APR 2010 - "La Cinquième Discipline : L'art et la pratique de l'organisation apprenante" - ISBN:9781407060002
- [Seth 2004] : Nitin Seth & S.G. Deshmukh&Prem Vrat - JUL 2004 - "Service quality models : A review" - https://www.researchgate.net/publication/235286421_Service_quality_models_A_review
- [Watts 2020] : Stephen Watts - NOV 2020 - "Les budgets d'erreur expliqués : Le risque et la fiabilité en une seule mesure" - https://www.bmc.com/blogs/error-budgets/#
- [Wiklund 2012] : Kristian Wiklund & Sigrid Eldh & Daniel Sundmark & Kristina Lundqvist - APR 2012 - "La dette technique dans l'automatisation des tests" - https://www.researchgate.net/publication/254034665_Technical_Debt_in_Test_Automation