Entretien de conception système : Concevoir Netflix
« Concevoir Netflix » est un problème dominé par la lecture, régi par un seul fait : diffuser de la vidéo à l'échelle mondiale est bien plus un problème de diffusion de contenu et de stockage qu'un problème de calcul. Le recruteur veut vous voir séparer le plan de contrôle (navigation, recherche, recommandations) du plan de données (la diffusion effective des octets) et raisonner sur la livraison de pétaoctets près des utilisateurs.
Avancez dans l'ordre : clarifiez les exigences, estimez l'échelle, concevez le pipeline d'upload/transcodage, puis le chemin de lecture via un CDN, et terminez par le bitrate adaptatif et les compromis. Le guide ci-dessous suit cette structure pour que vous vous entraîniez au raisonnement, pas à mémoriser une architecture.
1. Clarifier les exigences
Séparez le fonctionnel du non-fonctionnel et délimitez précisément le périmètre. Le cœur est : les utilisateurs parcourent un catalogue et regardent de la vidéo de façon fluide sur différents appareils et conditions réseau.
- Fonctionnel : parcourir/rechercher le catalogue, démarrer la lecture, qualité adaptative, reprendre où l'on s'est arrêté, multi-appareils.
- Non fonctionnel : disponibilité très élevée, faible latence de démarrage, lecture fluide (sans mise en mémoire tampon), portée mondiale.
- Hors périmètre (dites-le) : les détails internes du ML de recommandation, la facturation, les spécificités du DRM — mentionnez-les, puis différez-les.
2. Estimer l'échelle
Les chiffres justifient une conception centrée sur le CDN. Supposons des centaines de millions d'abonnés et de nombreux millions de flux simultanés au pic. Un seul flux consomme plusieurs Mbps, donc la sortie agrégée atteint des dizaines de térabits par seconde — impossible à servir depuis quelques centres de données centraux, ce qui motive immédiatement la mise en cache en périphérie.
3. Pipeline d'ingestion et de transcodage
Les masters téléchargés sont traités hors ligne, pas sur le chemin de lecture. Chaque titre est transcodé en de nombreuses renditions — plusieurs résolutions et bitrates — et segmenté en petits morceaux (quelques secondes chacun) pour le streaming adaptatif.
- Ferme de transcodage : convertit le master en renditions H.264/H.265/AV1 à plusieurs bitrates ; c'est un travail par lots embarrassingly parallel.
- Segmentation et packaging : divise chaque rendition en segments courts avec un manifeste (HLS/DASH) qui les décrit.
- Stocke les sorties dans un stockage d'objets (type S3) comme source de vérité, puis distribue le contenu populaire vers la périphérie.
4. CDN et chemin de lecture
La lecture est servie depuis la périphérie, pas depuis l'origine. Les segments vidéo sont mis en cache sur des nœuds CDN physiquement proches des utilisateurs (Netflix exploite ses propres équipements Open Connect au sein des FAI). Le client récupère le manifeste puis extrait les segments du nœud de périphérie sain le plus proche.
Le plan de contrôle (catalogue, recherche, profils utilisateur, « continuer à regarder ») est un ensemble distinct de services API sans état adossés à leurs propres bases de données et caches — il renvoie des métadonnées et une URL de manifeste, et est totalement découplé de la livraison massive d'octets.
- Cache de périphérie (CDN/Open Connect) : sert l'immense majorité des octets ; pré-positionne les titres populaires par région avant la demande.
- Stockage d'origine : stockage d'objets qui gère les cache miss.
- API du plan de contrôle : catalogue, autorisation de lecture, favoris — petites charges utiles, mise à l'échelle horizontale, avec cache en amont.
5. Streaming à bitrate adaptatif
La lecture fluide sur des réseaux variables vient du client, pas du serveur. Le lecteur surveille le débit et le niveau du tampon, et bascule la qualité du segment vers le haut ou le bas entre les segments en utilisant la liste des renditions du manifeste — bitrate plus élevé sur les connexions rapides, plus bas pour éviter la mise en mémoire tampon sur les connexions lentes.
6. Compromis à verbaliser
Terminez sur les tensions qu'un recruteur écoute : le coût de stockage de précalculer toutes les renditions contre la latence du transcodage à la volée (Netflix précalcule — le stockage est moins cher que le délai de démarrage) ; tout cacher contre cacher le populaire en périphérie (un catalogue de longue traîne ne peut pas vivre entièrement à chaque périphérie) ; et cohérence forte contre éventuelle pour les données du plan de contrôle comme « continuer à regarder » (éventuelle convient). Nommer cela est ce qui rend la réponse senior.
Entraînez-vous à la conception système de Netflix avec une aide en temps réel
L'assistant d'entretien de conception système de Natively peut vous garder structuré pendant un entretien en direct — en suggérant la prochaine dimension à couvrir et en faisant apparaître les compromis en temps réel, tout sur votre propre appareil.
