Pourquoi HBO a choisi Kubernetes pour diffuser Game of Thrones

Pour gérer les pics d’audience de la série Game of Thrones, son diffuseur HBO s’est tourné vers les technologies de conteneurs et son orchestrateur phare Kubernetes.

Game of Thrones est l’une des séries TV les plus populaires du moment. Et chaque diffusion d’une nouvelle saison est surveillée par ses aficionados comme le lait sur le feu. Un succès que le diffuseur HBO doit gérer habilement tant sur le réseau TV traditionnel qu’en streaming (HBO Go).

Pour maitriser au mieux la diffusion en ligne, HBO a choisi de s’appuyer sur une plate-forme Kubernetes de gestion de conteneurs, ont expliqué des ingénieurs du diffuseur à l’occasion du KubeCon North America 2017 la semaine dernière. Un choix dont a bénéficié la saison 7 de la série pleine de dragons programmée à partir du 16 juillet 2017.

Rappelons que Kubernetes est un orchestrateur de conteneurs à l’origine développé par Google qui l’a livré en Open Source. Depuis juillet 2015, le projet est hébergé par la Cloud Native Computing Foundation (CNCF).

« Nous sommes passés de zéro services deconteneur à l’hébergement complet de la saison 7 avec Kubernetes », a déclaré Illya Chekrygin. Autrement dit, un basculement total. Le responsable de l’équipe d’ingénieurs chez HBO a expliqué que le service de streaming HBO Go s’apparentait à un maillage de différents services API tous écrits en node.js et en go.

Déployée sur Amazon Web Services (AWS), la plate-forme de streaming avait initialement été construite en utilisant des instances virtuelles EC2, configurées avec des capacités de mise à l’échelle automatique et utilisait des équilibreurs de charge pour faciliter la répartition du trafic.

Des capacités sous-évaluées

Mais, au fil de la popularité croissante de la série désormais culte, les ingénieurs ont émis des doutes sur la capacité de cette architecture à tenir la charge. Qui plus est, ils ont constaté que l’ensemble des capacités de calcul n’étaient pleinement pas exploitées.

Le code node.js tend en effet à n’utiliser qu’un seul noyau CPU, a détaillé Illya Chekrygin, alors que les instances AWS EC2 étaient basées sur des CPU à double cœur. HBO n’utilisait donc que 50% de la capacité processeur pour l’ensemble de son déploiement.

Par ailleurs, le déploiement de nouvelles instances EC2 n’était pas suffisamment rapide pour HBO, ce qui obligeait les équipes à surprovisionner les besoins de capacités pour faire face à des modèles de trafic imprévisibles.

« Nous sous-exploitions 50% de nos processeurs et pourtant, nous avons constaté que nous étions à court de toutes nos autres ressources », a souligné le responsable.

« Donc, pour rester informés de la consommation, nous avions des alertes dédiées qui étaient envoyées chaque fois que nous franchissions le seuil de 80% d’utilisation sur ELB [Elastic Block Storage, NDLR] et d’autres ressources. »

Pour couronner le tout, en période de pic d’audience, HBO manquait d’adresses IP pour diffuser le contenu aux téléspectateurs.

Kubernetes plus rapide

Si Illya Chekrygin était convaincu de la pertinence de Kubernetes, l’ingénieur a néanmoins évalué les autres outils d’orchestration, Mesos, Swarm (Docker) et ECS (Elastic Container Service). Mais Kubernetes s’est imposé pour son amélioration des capacités d’utilisation et d’introspection. A ses yeux, la technologie s’est également avérée plus rapide et plus sûre que l’offre concurrentielle.

La décision a été prise en 2016 alors qu’AWS annonçait, le 29 novembre, le lancement de Elastic Container Service for Kubernetes (EKS). Un délai très court avant la diffusion du premier épisode de la nouvelle saison l’été suivant que HBO a géré en s’appuyant sur Teraform.

Cette solution Open Source, développée par HashiCorp, propose des modèles de gestion et déploiement de cluster Kubernetes.

Sur la partie réseau, l’ingénieur Zihao Yu a expliqué avoir porté son choix sur le SDN (Software Defined Networks ou réseaux programmables) Open Source Flannel pour créer des groupes de sécurité personnalisés afin de faciliter la gestion de prestation des services.

Le rôle primordial de la communauté

Les premiers essais de diffusion massive moins de trois mois avant l’inauguration de la nouvelle saison se révèlent « pitoyables ». Les ingénieurs ont dû réaliser de nombreux ajustements.

Illya Chekrygin reconnaît que, sans toutes les ressources en ligne, les événements communautaires et les canaux de discussion sur Kubernetes, le projet de HBO se serait mal terminé.

« Nous avons constaté que de nombreux problèmes avec nos services n’étaient pas causés par Kubernetes. Ils étaient là depuis le début et Kubernetes les a rendus plus visibles », a expliqué le responsable.

« Nous avons examiné des alternatives, mais la principale raison pour laquelle nous avons choisi Kubernetes était le dynamisme et l’activisme de la communauté. »

Adaptation d’un article publié sur Silicon.co.uk


Lire également
AWS adoube Kubernetes en adhérant à la Cloud Native Computing Foundation
Avec Draft, Microsoft facilite l’adoption de Kubernetes
Avec TessMaster, Ebay optimise Kubernetes dans OpenStack