Question d'entretien pour Développeur backend

Vous exploitez six instances d'un service et un travail nocturne doit tourner exactement une fois. Comment organisez-vous ça ?

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

Réponse rapide

Ne comptez pas sur un cron local exécuté par chaque instance. Utilisez un verrou de leader, comme une ligne ou une clé acquise avec un bail et une durée de vie, pour que seul le détenteur exécute le travail, ou déléguez la planification à un cron au niveau plateforme qui met en file un seul travail qu'un worker viendra prendre. Dans les deux cas, rendez le travail idempotent et observable, parce qu'un bail peut expirer en pleine exécution et provoquer un chevauchement.

Pourquoi les recruteurs posent cette question

C'est un petit problème de systèmes distribués avec beaucoup de modes de défaillance subtils. Le recruteur veut voir que vous ne supposeriez pas que des planificateurs en processus sur des instances identiques se déclenchent une seule fois, que vous savez que les verrous ont besoin d'expiration pour survivre à un plantage, et que l'idempotence reste le vrai filet de sécurité. La surveillance d'un travail qui cesse silencieusement de tourner est le détail que la plupart des candidats oublient.

Comment structurer votre réponse

  • Énoncez le problème : des instances identiques déclenchent chacune leur propre minuterie.
  • Donnez les deux approches viables, par verrou et par planification plateforme.
  • Traitez l'expiration du bail, le chevauchement et la reprise après plantage.
  • Ajoutez la surveillance du travail qui n'a jamais tourné.

Exemple de réponse

Exemple parlé, à la première personne

La version naïve tourne six fois, et la version où une instance spéciale est désignée cesse de marcher le jour où cette instance est en mauvaise santé. Donc soit j'utilise un verrou, soit je sors complètement la planification de l'application. Avec un verrou, chaque instance tente d'acquérir un bail à l'heure prévue, typiquement une insertion ou une mise à jour conditionnelle sur une table de travaux avec une expiration, et seul le gagnant s'exécute en renouvelant le bail pendant qu'il travaille. La subtilité, c'est qu'un bail peut expirer pendant une longue exécution, et alors une seconde instance démarre, donc le travail doit quand même pouvoir tourner deux fois sans risque. Ma préférence à toute échelle, c'est la seconde approche : une planification au niveau plateforme qui met en file un seul message, et des workers ordinaires le consomment. Ça donne gratuitement les reprises, la visibilité et l'historique, et le code applicatif devient un simple gestionnaire. Dans tous les cas, j'enregistre les heures de début et de fin et j'alerte quand un travail ne s'est pas terminé dans sa fenêtre attendue, parce qu'un travail qui cesse discrètement de tourner est le genre d'échec que les gens remarquent des semaines plus tard.

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

  • Que se passe-t-il si le travail dure plus longtemps que l'intervalle entre exécutions ?
  • Comment rendriez-vous idempotent un travail de rapport nocturne ?
  • Comment gérez-vous un travail qui doit tourner une fois par tenant sur des milliers de tenants ?

Autres questions pour Développeur backend

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