Question d'entretien pour Développeur backend

Vous devez mettre à jour la base de données et publier un événement. Comment évitez-vous qu'ils se désynchronisent ?

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

Réponse rapide

Utilisez le motif outbox transactionnel : écrivez l'événement dans une table outbox dans la même transaction que le changement d'état, puis laissez un relais séparé la sonder ou suivre le journal pour publier l'événement et le marquer envoyé. Ainsi il n'y a qu'une seule validation, donc vous ne pouvez jamais avoir une ligne sans événement ni un événement sans ligne. Le relais donne une livraison au moins une fois, donc les consommateurs doivent rester idempotents.

Pourquoi les recruteurs posent cette question

Le problème de la double écriture est l'un des modes de défaillance emblématiques des systèmes distribués, et beaucoup de candidats ne l'ont jamais nommé. Le recruteur veut voir que vous reconnaissez que publier après la validation peut perdre des événements et que publier avant peut en inventer. Connaître l'outbox, et savoir que la capture de données modifiées est la même idée pilotée par le journal des écritures, signale une vraie expérience de l'événementiel.

Comment structurer votre réponse

  • Nommez le problème de la double écriture et ses deux sens d'échec.
  • Décrivez l'outbox mécaniquement : une transaction, un relais séparé.
  • Mentionnez la capture de données modifiées comme variante fondée sur le journal.
  • Notez les conséquences : ordonnancement, at least once, nettoyage de l'outbox.

Exemple de réponse

Exemple parlé, à la première personne

Le piège, c'est qu'une validation en base et une publication dans un broker sont deux systèmes séparés, donc n'importe quel ordre choisi a un mode de défaillance. Publiez d'abord et la transaction peut être annulée, donc les consommateurs agissent sur quelque chose qui n'a jamais eu lieu. Validez d'abord et le processus peut mourir avant la publication, donc l'événement est perdu et rien ne le rejoue. Le motif outbox supprime l'écart : la ligne d'événement est insérée dans une table outbox à l'intérieur de la même transaction que le changement métier, donc soit les deux atterrissent, soit aucun. Ensuite un relais lit les lignes non envoyées dans l'ordre et les publie en les marquant envoyées, et s'il plante en pleine publication il republie simplement, ce qui est la raison pour laquelle les consommateurs doivent être idempotents. Si je suis sur Postgres et que je veux moins de sondage, j'utilise la capture de données modifiées à partir du journal des écritures avec quelque chose comme Debezium, ce qui donne la même garantie avec moins de code maison. Les détails opérationnels à prévoir sont l'élagage de l'outbox et la surveillance du retard du relais, parce qu'une outbox qui cesse de se vider a l'air parfaitement saine côté application.

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 surveilleriez-vous que le relais suit le rythme ?
  • Quelles garanties d'ordre l'outbox vous donne-t-elle vraiment ?
  • Quand choisiriez-vous la capture de données modifiées plutôt qu'une outbox écrite dans l'application ?

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