Deep Dive de conception : Chat, Notifications et Feed
Dans cette leçon, on s'entraîne à répondre en entretien à des questions comme : construire un chat, un feed (feed — la liste des mises à jour de tes amis, comme sur les réseaux sociaux) et des notifications (notifications — les messages qui apparaissent sur le téléphone). On parle simplement de fano
System Design (la conception de systèmes — comment construire un logiciel de grande taille qui fonctionne) c'est comme planifier une ville : des routes qui font circuler le trafic, des entrepôts pour stocker, des feux de circulation qui gèrent la charge, et des équipes de maintenance qui réparent les pannes — pour que la ville continue de bien fonctionner même aux heures de pointe les plus chargées.
- Real-time et feed
- La question classique qu'on pratique dans cette leçon : concevoir des systèmes en temps réel — chat, feed (feed — la liste des mises à jour des amis) et notifications. On passe en revue le fanout (diffuser une mise à jour à beaucoup de gens à la fois), l'ordering (l'ordre dans lequel les messages apparaissent), les delivery guarantees (comment s'assurer qu'un message est arrivé) et le push (pousser une notification vers le téléphone).
- Trade-off
- Un trade-off (compromis) est un choix conscient entre deux bonnes choses, quand on ne peut pas avoir pleinement les deux — exactement comme choisir entre rapide et bon marché. Il y a toujours un prix à payer, et en entretien on l'explique à voix haute à la personne qui mène l'entretien.
- Métrique opérationnelle
- Un chiffre qui montre si la décision fonctionne vraiment pour les utilisateurs réels (en production — le système en direct). Par exemple : la latency (latence — combien de temps il faut pour recevoir une réponse), l'error rate (taux d'erreur — le pourcentage de requêtes qui échouent), le queue lag (retard de file — combien de travail s'est accumulé dans la file d'attente), ou le cache hit ratio (taux de succès du cache — combien de fois la mémoire rapide connaissait déjà la réponse).