Introduction

GitHub a connu des problèmes de disponibilité et de performance importants ces dernières semaines, affectant plusieurs services. L'entreprise a identifié les causes de ces incidents et met en place des mesures pour améliorer la résilience de ses systèmes.

Contexte Technique

Les incidents ont eu lieu pendant une période de croissance rapide de l'utilisation de la plateforme, mettant en évidence les limites de l'architecture actuelle. Les problèmes ont été causés par une croissance rapide de la charge, un couplage architectural qui a permis à des problèmes localisés de se propager à des services critiques, et l'incapacité du système à gérer correctement la charge provenant de clients dysfonctionnels.

Un incident notable s'est produit le 9 février, où un cluster de base de données qui prend en charge l'authentification et la gestion des utilisateurs a été surchargé en raison d'une augmentation de plus de dix fois du trafic en lecture généré par deux applications clientes populaires.

Analyse et Implications

Les incidents ont eu un impact important sur les équipes et les flux de travail des utilisateurs, et ont mis en évidence la nécessité d'améliorer la résilience et l'isolation des composants critiques de l'architecture. Les facteurs contributifs ont inclus une isolation insuffisante entre les composants critiques, des garanties inadéquates pour la gestion de la charge et des lacunes dans la validation et la surveillance.

Les incidents ont également mis en évidence l'importance de la planification de la capacité, de la gestion de la charge et de la protection des composants en aval pour prévenir les défaillances en cascade.

Perspective

GitHub met en place des mesures pour résoudre les problèmes de disponibilité, notamment la refonte du système de cache des utilisateurs, l'accélération de la planification de la capacité et l'isolement des dépendances clés. L'entreprise se concentre également sur la mise en place de mécanismes de résilience et d'isolation pour prévenir les défaillances localisées et améliorer la disponibilité de la plateforme.

Il est important de surveiller les prochaines étapes de GitHub pour améliorer la résilience et la disponibilité de sa plateforme, notamment la mise en place de nouvelles fonctionnalités et la résolution des problèmes de scalabilité.