Question d'entretien pour Ingénieur SRE

Une clé de cache très sollicitée expire et votre base de données s'écroule. Que s'est-il passé, et comment l'évitez-vous ?

Ce que le recruteur cherche à évaluer, comment structurer votre réponse et un exemple parlé à adapter.

Réponse rapide

C'est une ruée sur le cache, parfois appelée thundering herd. Des milliers de requêtes concurrentes ratent le cache au même instant et recalculent toutes la même valeur. Corrigez avec un verrou single flight pour qu'un seul worker recalcule pendant que les autres attendent ou servent des données périmées. Ajoutez du jitter aux TTL pour que les clés n'expirent pas ensemble, rafraîchissez les clés chaudes en arrière-plan avant expiration, et servez du périmé en cas d'erreur.

Pourquoi les recruteurs posent cette question

C'est une question favorite parce que la réponse naïve (augmenter le TTL) ne corrige rien, elle rend juste l'événement plus rare et plus gros. Les recruteurs veulent voir le regroupement des requêtes, l'expiration anticipée probabiliste, et la sémantique stale while revalidate. Elle révèle aussi si vous pensez en termes de défaillance corrélée, ce qui est le thème sous-jacent de la plupart des questions de fiabilité.

Comment structurer votre réponse

  • Nommez le mode de défaillance et expliquez pourquoi les échecs de cache se corrèlent dans le temps.
  • Donnez le correctif principal : regrouper les recalculs concurrents.
  • Ajoutez le jitter sur les TTL et le rafraîchissement de fond pour les clés chaudes.
  • Décrivez le service de données périmées comme un mode dégradé délibéré.
  • Mentionnez un cache négatif pour les recherches qui ne renvoient rien.

Exemple de réponse

Exemple parlé, à la première personne

C'est une ruée. La clé expire, dix mille requêtes en vol ratent le cache simultanément, et elles exécutent toutes la même requête coûteuse, donc la base voit dix mille copies d'une requête qu'elle voit normalement une fois par minute. Le premier correctif, c'est le regroupement : un verrou single flight dans le cache fait qu'un seul worker recalcule et que tous les autres attendent ce résultat ou reçoivent la valeur périmée. On a utilisé un verrou Redis SETNX avec un TTL court pour ça, et la charge base sur ce chemin a chuté d'environ deux ordres de grandeur. Par-dessus, j'ajoute du jitter à chaque TTL, donc au lieu de 300 secondes pile c'est 300 plus ou moins 10%, ce qui décorrèle les expirations entre clés. Pour les clés vraiment chaudes, je préfère le recalcul anticipé probabiliste, où une requête proche de la fin du TTL rafraîchit en arrière-plan tout en servant encore la valeur en cache. Et je mets toujours les résultats négatifs en cache, sinon une ligne absente devient une boucle de requêtes sans limite.

Vous passez cet entretien bientôt ? GhostPilot écoute votre appel en direct, repère la question dès qu'elle est posée et affiche une réponse structurée à l'écran en temps réel. Essayez-le lors de votre prochain entretien blanc, ou prenez un Session Pass à $29, sans abonnement, pour le jour J.

Voir comment ça marche

Questions de relance à prévoir

  • Comment implémenteriez-vous le single flight sans verrou distribué ?
  • Quel est le risque de servir des données périmées, et où est-ce inacceptable ?
  • Comment gérez-vous la mort d'un nœud de cache plutôt que l'expiration d'une clé ?

Autres questions pour Ingénieur SRE

Votre recruteur posera sa propre version de celle-ci. Collez votre véritable fiche de poste dans le Question Predictor gratuit et obtenez les 20 questions que ce poste a le plus de chances de poser, avec ce que chacune cherche vraiment à sonder.

Prédire mes questions

Répétez les questions difficiles avant qu'on vous les pose

Entraînez-vous avec un copilote en direct, puis présentez-vous prêt. Un Session Pass à $29 vous accompagne pendant l'entretien, sans abonnement et sans engagement.

Obtenir GhostPilot