Over 10 years we help companies reach their financial and branding goals. Engitech is a values-driven technology agency dedicated.

Gallery

Contacts

411 University St, Seattle, USA

engitech@oceanthemes.net

+1 -800-456-478-23

Publié :
Décembre, 2023
Catégorie :
Étude de cas

Histoire technique

Lors de son lancement, Forza Horizon 5 a enregistré plus de 10 millions de joueurs simultanés, la plus grande première semaine de l’histoire des Xbox Game Studios. Les joueurs ont parcouru des paysages virtuels vibrants et ont participé à des tournois et des défis palpitants. Forza Horizon 5 est également une victoire impressionnante en coulisses, où la plateforme Azure en tant que service (PaaS) fournit un équipage virtuel, et une architecture de conteneur basée sur Windows s’adapte rapidement à une demande changeante. Les développeurs de jeux s’appuient sur des clusters Azure Kubernetes Service (AKS) qui ajustent automatiquement leur échelle pour répondre aux exigences de performance les plus difficiles, tandis que les services Azure entièrement gérés libèrent l’équipe des tâches fastidieuses de gestion de l’infrastructure.

Ce que les développeurs de jeux ont appris à propos d’AKS s’applique au commerce de détail, aux services financiers, au streaming, et à d’autres charges de travail nécessitant des performances de Grand Prix pour gérer la concurrence avec une latence faible et des pics importants de demande.

Une course à grande vitesse et faible latence vers la ligne d'arrivée

Développée par Turn 10 Studios et Playground Games, et éditée par Xbox Game Studios, la série Forza Horizon a gagné en popularité avec chaque nouveau titre. À mesure que la série a explosé en taille, l’infrastructure nécessaire pour la prendre en charge a également augmenté. Initialement, l’équipe de développement basée sur Windows hébergeait le jeu sur site, en achetant et empruntant des serveurs au besoin.

“Chaque fois que nous lancions le prochain titre, nous utilisions des serveurs des titres précédents, jouant essentiellement à ce jeu matériel”, rapporte Tyler Hennessy, Principal Software Engineering Lead chez Turn 10 Studios avec ForzaTech, l’équipe responsable de la technologie derrière la série de jeux Forza. Un passage à Azure a tout changé. Au début, ForzaTech a déplacé son code, basé sur le framework .NET et Internet Information Services (IIS), vers les services cloud Azure (classique) et des machines virtuelles (VM). Avec le contrôle de son infrastructure virtuelle, l’équipe bénéficiait d’une “scalabilité beaucoup plus facile”, note Hennessy. La question était de savoir si une approche différente pourrait offrir des gains encore plus importants.

Comme la plupart des acteurs de l’industrie du jeu, la base de code de Forza Horizon est entièrement construite sous Windows. Selon Madden Osei, le responsable du programme chez Turn 10, “nous voulions offrir plus d’agilité et de rapidité pour mettre à l’échelle pour des millions de joueurs tout en abstrayant les couches inférieures de la gestion des machines virtuelles. Mais notre solution préférée devait prendre en charge les images basées sur Windows.”

“Avec nos piles de calcul, de stockage et de données toutes hébergées sur Azure, nos équipes d’ingénierie peuvent désormais consacrer plus de temps à la création de nouvelles expériences pour nos joueurs plutôt qu’à la gestion de notre infrastructure.”

– DANIEL ADENT : DIRECTEUR GÉNÉRAL DE FORZATECH

Une course à grande vitesse et faible latence vers la ligne d'arrivée

Développée par Turn 10 Studios et Playground Games, et éditée par Xbox Game Studios, la série Forza Horizon a gagné en popularité avec chaque nouveau titre. À mesure que la série a explosé en taille, l’infrastructure nécessaire pour la prendre en charge a également augmenté. Initialement, l’équipe de développement basée sur Windows hébergeait le jeu sur site, en achetant et empruntant des serveurs au besoin.

“Chaque fois que nous lancions le prochain titre, nous utilisions des serveurs des titres précédents, jouant essentiellement à ce jeu matériel”, rapporte Tyler Hennessy, Principal Software Engineering Lead chez Turn 10 Studios avec ForzaTech, l’équipe responsable de la technologie derrière la série de jeux Forza. Un passage à Azure a tout changé. Au début, ForzaTech a déplacé son code, basé sur le framework .NET et Internet Information Services (IIS), vers les services cloud Azure (classique) et des machines virtuelles (VM). Avec le contrôle de son infrastructure virtuelle, l’équipe bénéficiait d’une “scalabilité beaucoup plus facile”, note Hennessy. La question était de savoir si une approche différente pourrait offrir des gains encore plus importants.

Comme la plupart des acteurs de l’industrie du jeu, la base de code de Forza Horizon est entièrement construite sous Windows. Selon Madden Osei, le responsable du programme chez Turn 10, “nous voulions offrir plus d’agilité et de rapidité pour mettre à l’échelle pour des millions de joueurs tout en abstrayant les couches inférieures de la gestion des machines virtuelles. Mais notre solution préférée devait prendre en charge les images basées sur Windows.”

Passer de 600 000 à 3 millions d'utilisateurs simultanés

La réponse est venue d’une technologie à laquelle ForzaTech ne s’attendait pas : Kubernetes, la populaire plateforme d’orchestration de conteneurs. “Nous n’avions jamais utilisé la technologie des conteneurs. Il n’y avait jamais eu de raison de se pencher sur Kubernetes”, se souvient Hennessy. Mais l’équipe s’est adaptée. “En l’espace d’un mois, nous avions essentiellement converti nos services vers AKS et tout faisait tourner.”

Hennessy rapporte que la transition des services cloud Azure vers AKS s’est déroulée “bien et facilement”. Plutôt que de réécrire l’ensemble de la plateforme, une option redoutable à un moment donné, ForzaTech a profité du support d’AKS pour exécuter des applications conteneurisées natives Windows, telles que celles construites sur le framework .NET, comme Forza Horizon 5. La combinaison de .NET et d’IIS “se prêtait parfaitement aux images Windows AKS. Depuis le tout début, c’est une excellente histoire de transition de l’on-premises et de la possession du matériel à AKS”, selon Hennessy.

C’était aussi une meilleure histoire qu’une refonte complète de la plateforme. “Nous ne savions pas que Kubernetes et Windows pouvaient fonctionner ensemble”, admet Hennessy. Heureusement, l’équipe a tiré parti de l’enthousiasme de la communauté Kubernetes et a appris comment AKS prend en charge les conteneurs Windows. “Il y a une richesse de connaissances là-bas. Cela nous a aidés à démarrer rapidement”, dit-il.

AKS a également permis à l’équipe d’itérer beaucoup plus rapidement lors des tests de stress, une étape cruciale dans la préparation du grand jour du lancement. Avant de passer à AKS, les développeurs de ForzaTech mettaient une demi-heure pour remplacer les anciennes images sur leurs machines virtuelles et les préparer pour la charge. Avec AKS, ce processus prend des secondes. La vitesse supplémentaire permet à l’équipe de faire instantanément des réparations, de surmonter les obstacles et de faire évoluer la plateforme selon les besoins. De plus, l’équipe peut préparer à l’avance les mises à jour de cluster par script, ajoutant flexibilité et agilité aux tests de stress exigeants.

Bien avant le grand lancement, les tests de stress ont montré que les services de ForzaTech pouvaient facilement passer de 600 000 à 3 millions d’utilisateurs simultanés. L’équipe était plus que satisfaite. “Nous étions ravis !” déclare Osei. “Toutes les estimations raisonnables pour les joueurs et les utilisateurs simultanés ont été dépassées.”



Booster l'architecture d'un jeu vidéo

L’architecture de Forza Horizon 5 comprend 17 services principaux qui s’exécutent dans AKS. Parmi eux, le service de classement informe les utilisateurs de leur position, tandis que le service de contenu généré par l’utilisateur (UGC) prend en charge la possibilité pour les joueurs de télécharger des photos et d’autres contenus. Le service de vente aux enchères permet aux joueurs de vendre des voitures entre eux, et le service d’analyse recueille les données de jeu et de télémétrie des joueurs utilisées dans les rapports.

Pour simplifier la migration vers les conteneurs Windows, ForzaTech a créé un guide basé sur l’expérience du déplacement du service UGC. Après environ deux semaines de tests, l’équipe a appliqué le guide aux autres services. “Il a ensuite fallu environ un jour par service pour les 16 autres services”, rapporte Hennessy. “Il y a eu très peu de changement de code. C’était presque entièrement des modifications de configuration et de déploiement.”

La porte d’entrée pour toutes les demandes des clients est le service agrégateur, un déploiement unique à autoscaling qui exécute plusieurs pods dans AKS. Tous les pods interagissent avec les mêmes configurations et secrets AKS. Le service agrégateur interagit avec les autres microservices s’exécutant dans des conteneurs. Leur architecture similaire a rendu le guide facile à suivre. Ils sont instrumentés avec des sondes de santé Kubernetes pour la disponibilité et la préparation, permettant à l’équipe d’identifier rapidement tout problème et d’apporter des modifications, comme ajuster l’échelle.

Pour assurer la continuité des activités, deux instances de chaque service s’exécutent sur seulement quatre machines virtuelles (VM). Avant le passage à AKS, ForzaTech utilisait un minimum de 40 VM en permanence. “La plupart d’entre elles étaient inactives”, admet Hennessy. “Cette configuration a réduit le coût de notre environnement de test de 90 pour cent.”

Pour accélérer encore plus, les VM dans les clusters AKS activent le réseau accéléré, un chemin à très faible latence et haute performance qui réduit la gigue et diminue l’utilisation du CPU. “Nous avons observé une réduction de 50 pour cent de la latence sur certains appels réseau en backend”, se souvient Hennessy.

La couche de stockage joue également un rôle dans la réalisation des objectifs d’échelle et de performance. Le service agrégateur interagit avec Azure Cache for Redis, une solution de mise en cache hautement évolutive. Lorsque le débit a besoin d’un coup de pouce, les données peuvent être réparties sur plusieurs comptes de stockage Azure, impactant directement la capacité de l’équipe à augmenter l’échelle.