Un rapport d’incident Google intitulé « Confidentiel – Pas pour publication»À propos d’une panne de Google Chat a apparemment été divulgué. Le document fournit un aperçu rare de la façon dont le backend de Google peut échouer. Bien que cela ne soit pas lié aux récents échecs d’indexation de Google, cela donne une vue de la complexité des systèmes de Google et du genre de choses qui peuvent mal tourner.
Contexte de la panne de Google Chat
Environ deux semaines avant les problèmes d’indexation de Google, il y avait un problème de backend avec Google Chat. Une mise à jour a été déployée qui comprenait ce qu’ils appelaient un «post-processeur» qui était censé démarrer après un préprocesseur spécifique.
Publicité
Continuer la lecture ci-dessous
Apparemment, l’équipe d’ingénierie ignorait qu’il y avait une erreur préexistante qui a déclenché une panne majeure après une mise à jour le 17 septembre 2020.
Il est sous-entendu que l’erreur n’a pas été détectée, mais le rapport d’incident ne l’indique jamais explicitement.
La mise à jour de septembre incluait un post-processeur qui recherchait une sortie d’un préprocesseur. Mais comme cette sortie n’existait pas, une autre erreur s’est produite, déclenchant la panne.
Voici comment le rapport d’incident de Google le décrit:
«Les backends de Google Chat utilisent un certain nombre de fonctions de prétraitement avant de traiter une demande entrante. Ces pré-processeurs effectuent un certain nombre d’appels vers différents services (tels que le service d’identité interne de Google) et stockent ces résultats dans un cache local.
L’un de ces préprocesseurs avait rencontré une erreur d’accès en raison d’une demande de backend mal configurée, ce qui l’a empêché de se terminer correctement.
Cette erreur n’a pas causé d’autres problèmes au départ. »
Une fois que le post-processeur a été introduit dans la mise à jour du 17 septembre, l’erreur préexistante (dans le préprocesseur) a provoqué un problème de post-processeur, entraînant ce que Google a appelé un «blocage» qui a ensuite entraîné des erreurs d’application, à savoir le Google Panne de chat.
Publicité
Continuer la lecture ci-dessous
Google a été obligé d’annuler la mise à jour, puis de rééditer une nouvelle mise à jour pour compenser l’erreur (apparemment) précédemment non détectée.
Description de Google de la cause première de la panne de Google Chat:
«Le 17 septembre, une nouvelle version du backend de Google Chat a été déployée. Cette version incluait une modification exigeant qu’un post-processeur ait accès aux résultats du préprocesseur défaillant ci-dessus. Cependant, comme ce préprocesseur a interrompu son traitement en raison de l’erreur d’accès, le cache n’a jamais été rempli.
Initialement, ce post-processeur a tenté de récupérer la valeur requise, mais comme le cache ne contenait pas la valeur requise, cela a engendré un nouveau thread qui a tenté de récupérer la valeur, mais avait une dépendance sur le post-processeur qui détenait un verrou . Cela a créé une condition de blocage qui n’a pas pu être exécutée.
Ce blocage a provoqué un conflit de threads élevé dans les tâches binaires du backend, ce qui a finalement conduit à des erreurs d’application. »
Leçon apprise de Google
Le rapport d’incident de Google a noté que sa réponse à l’incident était d’améliorer la détection de ce problème spécifique, d’augmenter la capacité du backend et d’améliorer les tests de pré-publication pour ce type de problème spécifique afin qu’il ne se reproduise plus.
Conclusion de Google:
«Pour éviter que ce problème ne se reproduise et réduire l’impact d’événements similaires, les mesures suivantes sont prises:
- Ajustement du système d’alerte automatisé pour améliorer la détection des problèmes de contention de verrouillage.
- Augmenter le nombre de threads disponibles pour les services backend de Google Chat afin de réduire l’impact potentiel des événements de contention de verrouillage.
- Définir de nouveaux tests qui déclenchent ce chemin de code particulier et identifier ce problème avant d’atteindre la production. »
Trois aperçus de la panne de Google
- Une erreur a été introduite dans le backend du chat Google en direct et n’a apparemment pas été détectée jusqu’à ce qu’une mise à jour ultérieure se produise.
- Les tests de mise à jour pré-version n’ont apparemment pas identifié que l’erreur non détectée existait ou causerait des erreurs d’application.
- L’erreur non détectée n’a été découverte qu’après le transfert de la mise à jour vers l’environnement en direct, produisant un conflit de codage qui a conduit à une panne.
Nous aimons penser à Google comme une entreprise monolithique qui crée des expériences incroyables sur le Web, apparemment avec une vague. Mais cet incident montre comment un petit bogue en apparence pourrait être introduit dans l’un des services de Google et se traduire par une panne.
Google ne propose pas de rapports d’incidents détaillés liés aux pannes dans l’index de recherche.
Publicité
Continuer la lecture ci-dessous
Cela dit, Gary Illyes de Google a fait des commentaires francs sur une panne de recherche Google en avril 2019 due à une erreur humaine. Et en août 2020, il a décrit la complexité de la caféine de Google, peu de temps après une autre panne d’index de recherche dans le monde cet été.
Le rapport d’incident de Google Chat montre comment quelque chose d’apparemment mineur et presque sans conséquence pourrait se transformer en une panne majeure et on ne peut qu’imaginer que des problèmes similaires ont perturbé l’index de recherche de Google au cours de l’année écoulée.
Citation
Résumé des problèmes Google Cloud (PDF)