SystimaNX
Retour aux études de cas
Médias et divertissementInfrastructure cloudConseil DevOps

Événements live et montée en charge du streaming

Absorber les pics de trafic lors de diffusions mondiales grâce à un edge résilient et une observabilité de bout en bout — transformer les grandes soirées de diffusion live d'une source d'angoisse en une opération répétée, mesurée et maîtrisée.

Flux stables et autoscaling prévisible sous charge maximale
Client
Confidentiel — médias et divertissement
Secteur
Médias et divertissement
Calendrier
3 mois
Technologies
7+ outils

Le défi

!Chaque diffusion phare générait une courbe de trafic redoutable : le nombre de spectateurs pouvait tripler en deux minutes avant le début du programme, sous l'effet conjugué des campagnes sociales et des notifications push, et les API d'origine servant les manifestes et les jetons de session n'avaient aucun moyen d'absorber ce type de pic corrélé sans commencer à rejeter des requêtes.
!Le comportement du cache variait énormément d'une région CDN à l'autre car les règles de clés de cache s'étaient empilées de façon organique au fil de plusieurs années d'ajouts de fonctionnalités, si bien qu'un spectateur d'une région obtenait un manifeste en moins d'une seconde pendant qu'un autre, à la même minute, déclenchait une tempête de requêtes vers l'origine.
!L'équipe ne disposait quasiment d'aucun signal temps réel sur l'expérience réelle des spectateurs — rebuffering, délai de démarrage, chutes de bitrate restaient invisibles jusqu'à ce que les tickets de support et les réseaux sociaux s'enflamment, bien après la fin du moment live qui en était la cause.
!L'autoscaling reposait presque exclusivement sur l'utilisation CPU des pods d'origine et d'API, un signal très en retard sur la demande réelle ; le temps que le CPU grimpe suffisamment pour déclencher de nouvelles capacités, le pic avait déjà causé des dégâts en latence et en taux d'erreur impossibles à rattraper.
!Les post-mortems après événement s'enlisaient régulièrement car personne ne pouvait affirmer avec certitude si un ralentissement donné provenait du edge CDN, du cluster d'origine ou du lecteur lui-même, ce qui gaspillait du temps d'ingénierie en débats de responsabilité plutôt qu'en correction de la cause racine.
!Le trafic de rattrapage (encore) — les spectateurs revenant regarder un segment live manqué juste après sa diffusion — n'était jamais modélisé séparément du trafic live, si bien que la planification de capacité sous-estimait systématiquement cette seconde vague qui suivait le pic principal.
!Il n'existait aucun playbook standard de dégradation progressive : lorsqu'une dépendance amont ralentissait (décision publicitaire, licences DRM, authentification), toute l'expérience de streaming se dégradait uniformément au lieu de désactiver d'abord les fonctionnalités non critiques.
!Les tests de charge, quand ils existaient, utilisaient des montées en charge linéaires et régulières qui ne ressemblaient en rien à la dispersion géographique en rafale d'une vraie diffusion mondiale, si bien que les tests passaient alors que les événements réels continuaient à produire des incidents.

Notre solution

Nous avons audité et reconstruit la stratégie de cache multi-couches, du edge CDN jusqu'à la couche shield d'origine, en standardisant la composition des clés de cache et en introduisant le stale-while-revalidate afin qu'une rafale de requêtes concurrentes pour le même manifeste ne déclenche plus qu'un seul appel à l'origine au lieu d'une ruée.
Nous avons remplacé l'autoscaling basé uniquement sur le CPU par des politiques pilotées par des métriques personnalisées — profondeur de file, taux de requêtes et latence P99 — alimentant les décisions du HPA Kubernetes et de l'autoscaler de cluster, de sorte que la nouvelle capacité arrive avant la courbe de demande plutôt qu'après.
Nous avons construit des tableaux de bord unifiés dans Grafana corrélant les métriques du edge CDN, la latence des API d'origine et la télémétrie du lecteur côté client sur une seule frise temporelle, permettant à l'ingénieur d'astreinte de déterminer en quelques secondes si un pic vient d'un cache-miss CDN, d'une saturation de l'origine ou du lecteur.
Nous avons défini des budgets d'erreur et des SLO explicites pour le temps de démarrage et le taux de rebuffering, avec des alertes de burn-rate donnant plusieurs minutes d'avance sur toute tendance de dégradation, avant que les spectateurs ne la remarquent.
Nous avons conçu et exécuté des tests de charge sous Locust modélisant spécifiquement la dispersion régionale et les vagues de rattrapage encore, en rejouant des courbes d'arrivée réalistes issues de diffusions précédentes plutôt que des montées linéaires génériques.
Nous avons utilisé les événements de répétition — des diffusions live plus modestes programmées en amont des grandes soirées — comme de véritables exercices grandeur nature, validant que l'autoscaling, le cache et les tableaux de bord se comportaient correctement sous charge de production réelle avant le moment décisif.
Nous avons rédigé des runbooks couvrant les scénarios de brownout, les procédures de bascule CDN ou origine, et des chemins de dégradation progressive désactivant d'abord les fonctionnalités non essentielles (personnalisation, certains formats publicitaires) tout en protégeant la diffusion vidéo cœur.
Nous avons codifié l'ensemble de la configuration réseau, cache et autoscaling en Terraform afin que cette topologie ajustée et testée puisse être reproduite à l'identique sur tous les environnements et rapidement annulée en cas de régression.

Impact mesurable

Capacité de pic
Pic de trafic x3 absorbé sans aucun rejet de requêtes

Les événements de répétition à échelle réaliste ont validé la marge de manœuvre pour un triplement des spectateurs en une fenêtre de deux minutes, bien avant les grandes diffusions, éliminant l'incertitude de la planification de capacité.

Clarté des incidents
Identification de la cause racine ramenée de plusieurs heures à moins de 10 minutes

Le temps moyen d'identification de la cause racine a fortement chuté une fois la télémétrie CDN, origine et lecteur réunie sur une frise commune.

Expérience spectateur
Taux de rebuffering maintenu sous 1 % lors des pics

Le taux de rebuffering et le temps de démarrage sont restés dans les SLO cibles, même durant les minutes de trafic les plus intenses.

Efficacité du cache
Tempêtes de requêtes vers l'origine réduites d'environ 80 %

La standardisation des clés de cache et le stale-while-revalidate ont éliminé la plupart des tempêtes de requêtes vers l'origine déclenchées par les arrivées simultanées de spectateurs.

Coût
Dépenses d'infrastructure d'origine réduites de 20 à 25 %

Des origines mieux dimensionnées et des TTL plus intelligents ont réduit le sur-provisionnement sans sacrifier la marge nécessaire aux pics.

Confiance de l'équipe
Zéro incident critique lors des 3 diffusions phares suivantes

Les ingénieurs d'astreinte sont passés de l'improvisation réactive à l'exécution de playbooks répétés et documentés pendant les événements live.

Notre plus grande soirée de l'année était une loterie. Cette fois, nous savions exactement à quoi ressemblait un système en bonne santé, nous avions répété les scénarios de panne à l'avance, et nous avions de vrais leviers à actionner quand Internet se comportait mal. Ce changement de confiance a transformé la façon dont toute l'équipe aborde désormais les événements live.

V
VP Ingénierie
VP Ingénierie, plateforme streaming (NDA)

Stack technologique

AWS CloudFrontFastlyKubernetesPrometheusGrafanaLocustTerraform
Réserver une consultation
Événements live et montée en charge du streaming | Case Study | SystimaNX