Sans serveur : Un guide pour les serveurs de jeux

Dans l'informatique en nuage, le sans serveur a émergé comme le nouvel enfant chéri.

Chapeauté par des services comme AWS Lambda, les architectures sans serveur promettent une révolution et même la façon dont nous pensons au déploiement et à l'échelonnement des applications.

Alors que les entreprises continuent de rechercher des solutions agiles et rentables, l'attrait du sans serveur - avec sa promesse d'éliminer la gestion des serveurs et l'échelonnement automatique - a gagné un élan significatif.

Cette fascination croissante n'est pas confinée aux applications web traditionnelles ; elle suscite de l'intérêt dans divers domaines, incitant les experts à examiner sa faisabilité dans des environnements variés, y compris le monde du jeu.

Qu'est-ce que l'informatique sans serveur ?

À son essence, l'informatique sans serveur est un modèle de cloud computing qui peut exécuter des fonctions backend en réponse à des événements, le tout sans le besoin d'une configuration de serveur traditionnel. Le nom peut être un peu trompeur ; les serveurs sont toujours impliqués, mais les développeurs sont libérés de leur gestion. C'est là que résident ses principaux avantages. Avec le sans serveur :

  1. L'évolutivité devenant intrinsèquement automatique. À mesure que la demande des utilisateurs fluctue, le fournisseur de cloud gère de monter ou de descendre, garantissant des performances optimales.

  2. La gestion de l'infrastructure est à votre place. Plus de maintenance de serveur, de correctifs ou de mises à jour ; le fournisseur de cloud s'en occupe.

  3. L'efficacité des coûts est primordiale. Les utilisateurs sont facturés pour la puissance de calcul réelle qu'ils utilisent, souvent calculée en millisecondes d'exécution de fonction, éliminant le sur-provisionnement inutile.

Ce nouveau paradigme est promu par de grands fournisseurs de cloud, AWS Lambda étant à la pointe. D'autres entrants notables incluent Google Cloud Functions, s'adressant aux utilisateurs de Google Cloud Platform, et Azure Functions, la réponse de Microsoft à la tendance sans serveur. Chacun offre des caractéristiques et des intégrations uniques, mais tous partagent la philosophie de base de réduire le fardeau opérationnel sur les développeurs et de rationaliser le déploiement des applications.

Bien que certains aient également qualifié les applications basées sur des conteneurs de « sans serveur », la réalité est que les organismes de normalisation n'appellent le service de fonctions (FaaS) que sans serveur. Les conteneurs incluent généralement plus qu'une fonction exécutée en temps réel, car ils contiennent un binaire et son ensemble complet de bibliothèques et de modules. Ils sont plus liés aux microVM ou aux VM standard qu'au sans serveur.

Le paysage des serveurs de jeux

Les serveurs de jeux sont les héros méconnus derrière nos expériences de jeu multijoueur immersives. Ces serveurs spécialisés coordonnent, calculent et synchronisent les événements de jeu en temps réel. Les exigences essentielles incluent une latence faible, un support de haute concurrence et une gestion robuste de l'état pour garantir que chaque action du joueur soit constamment reflétée sur tous les clients connectés.

Deux modèles de serveurs principaux dominent : autoritaire et non autoritaire (par exemple, réseau entre pairs, réseau de relais). Dans le modèle autoritaire, le serveur a le dernier mot sur l'état du jeu, agissant comme un garde contre les tricheries et les incohérences. Le rendant obligatoire pour les jeux avec beaucoup d'opérations, les économies incluant des boutiques et les jeux compétitifs basés sur la performance/les compétences.

À l'inverse, les serveurs non autoritaires s'appuient davantage sur les calculs côté client, ce qui les rend potentiellement vulnérables aux exploits.

Cependant, au cœur des deux se trouve le besoin de connexions persistantes, garantissant un temps de jeu ininterrompu et une interaction en temps réel, des aspects qui ne sont pas toujours compatibles avec chaque modèle de cloud computing.

Pourquoi le sans serveur n'est-il pas toujours un ajustement parfait avec les serveurs de jeux ?

La montée révolutionnaire de l'informatique sans serveur, avec sa promesse d'évolutivité et de réduction des coûts, pourrait sembler être la panacée pour tous les besoins backend. Cependant, lorsqu'il est juxtaposé aux exigences complexes des serveurs de jeux, plusieurs disparités émergent :

  1. L'éphémérité des fonctions sans serveur

Au cœur du sans serveur réside sa nature éphémère. Les fonctions sans serveur, comme celles sur AWS Lambda, sont conçues pour s'activer, exécuter une tâche, puis disparaître, le tout dans un bref laps de temps. Ce cycle de vie transitoire est en conflit avec les exigences des serveurs de jeux avec des instances persistantes, comme les MMO ou les jeux avec du contenu généré par les utilisateurs, qui prospèrent sur des connexions persistantes. Les joueurs s'engagent dans des jeux pendant de longues périodes, nécessitant que les serveurs maintiennent des connexions constantes et ininterrompues - une fonctionnalité absente dans le monde sans serveur.

  1. Défis de gestion de l'état

Les fonctions sans serveur sont intrinsèquement sans état. Chaque invocation de fonction est isolée, sans mémoire conservée des interactions passées. À l'inverse, les serveurs de jeux sont des maestros avec état, gérant habilement l'état du jeu en évolution, des scores des joueurs aux positions en jeu. Lors de l'utilisation du sans serveur pour de telles tâches, les développeurs sont confrontés au défi redoutable de maintenir l'état à travers des fonctions disjointes et déconnectées, ce qui entraîne des complexités et des incohérences potentielles.

  1. Préoccupations de latence

Bien que les solutions sans serveur excellent dans de nombreux domaines, elles ne sont pas à l'abri des « démarrages à froid» - le délai ressenti lors de l'invocation d'une fonction inactive. Dans le jeu, attendre un serveur de jeu inactif peut entraîner un churn (34 % des joueurs quitteront complètement un jeu s'ils éprouvent des délais), ou où des réactions instantanées peuvent faire la différence entre la victoire et la défaite où de telles augmentations de latence sont intolérables. La réactivité en temps réel exigée par les jeux souligne la criticité d'expériences constantes et à faible latence.

  1. Implications financières

Le modèle de paiement par exécution du sans serveur est séduisant pour des tâches sporadiques et brèves. Cependant, les serveurs de jeux, avec leurs processus continus et de longue durée, pourraient trouver que le sans serveur est moins rentable. Les exécutions prolongées peuvent accumuler des coûts, pouvant dépasser les dépenses de serveurs traditionnels ou dédiés.

  1. Langue supportée

À sa racine, une plateforme sans serveur exige que vous fournissiez le code (c'est-à-dire la fonction) à exécuter. Cela signifie que vous ne pouvez pas fournir une version standard d'un moteur de jeu. Cela signifie également que vous ne pourrez peut-être pas utiliser votre langage préféré s'il n'est pas pris en charge par la plateforme sans serveur.

Cas d'utilisation où le sans serveur fonctionne dans les jeux

Bien que les architectures sans serveur ne soient peut-être pas un ajustement parfait pour les opérations de serveurs de jeux, elles brillent dans des scénarios spécifiques liés aux jeux. Ce sont souvent des tâches qui sont de nature non autoritaire et non continue :

  1. Tableaux de classement : Mettre à jour et récupérer rapidement les classements ou scores des joueurs peut être géré efficacement par des fonctions sans serveur. Ces mises à jour périodiques sont parfaites pour la nature éphémère du sans serveur.

  2. Authentification des joueurs : L'acte sporadique de vérifier les identifiants des joueurs lors de la connexion ou de l'inscription convient bien au sans serveur. Son évolutivité assure une authentification fluide, même pendant les pics de charge utilisateur.

  3. Notifications : L'envoi d'alertes, de mises à jour de jeux ou de notifications aux joueurs peut être transféré aux fonctions sans serveur. Ce sont des tâches isolées qui ne nécessitent pas de connexions persistantes, tirant parti des forces du sans serveur.

  4. Jeux web : des jeux éphémères basés sur les normes web (c'est-à-dire html5) peuvent bénéficier d'un élément côté serveur qui s'exécute dans un FaaS/sans serveur. La logique requise pour de plus petits jeux occasionnels peut être assez petite pour ces architectures.

Alternatives au sans serveur pour les serveurs de jeux

Lors de la prise en compte des exigences strictes des serveurs de jeux, en particulier pour garantir des expériences cohérentes et en temps réel, les alternatives au sans serveur deviennent essentielles. Voici quelques solutions éprouvées adaptées au domaine du jeu :

  1. Solutions de serveur de jeu dédiées : Les serveurs traditionnels et dédiés restent un pilier dans la communauté des jeux. Avec un contrôle total sur le matériel et le logiciel, les développeurs peuvent optimiser les performances, la sécurité et la personnalisation, garantissant que les jeux fonctionnent sans accroc. Un studio de taille minimale est requis car l'hébergement de serveurs physiques nécessite beaucoup de financement et de ressources.

  2. Machines virtuelles basées sur le cloud : Les machines virtuelles (VM) sur des plateformes cloud comme AWS EC2 ou Google Compute Engine offrent un mélange équilibré de flexibilité et de puissance. Les développeurs peuvent adapter les ressources au besoin, tirant parti de l'immense infrastructure des géants du cloud. Nous commençons à voir une tendance avec Baremetal en tant que service. Bien qu'elles offrent certains des avantages du cloud standard (c'est-à-dire à la demande), le temps de démarrage rend cela difficile pour un rapide redimensionnement en cas de montée en puissance des joueurs. Elles sont considérées comme plus performantes que les machines virtuelles, mais cela n'est plus vrai car la dernière génération d'hyperviseurs est capable d'obtenir le maximum du CPU et de le passer aux machines virtuelles.

  3. Solutions de serveur de jeu gérées : Des services comme AWS GameLift ou Google Cloud Game Servers avaient pour objectif initial de simplifier l'hébergement de serveurs de jeux avec un service entièrement géré. Ils combinent les avantages de l'évolutivité cloud avec des outils spécialisés adaptés aux jeux, gérant des tâches telles que le matchmaking, les sessions de joueurs et l'échelonnement des serveurs. Cependant, leur complexité et leur hébergement lié au fournisseur avec des frais marginaux pour chaque région les rendent une proposition extrêmement coûteuse. Ils ne résolvent pas non plus la latence, une source massive de churn utilisateur avec 50 % des utilisateurs quittant le jeu à cause de cela, en raison de leur empreinte limitée. Heureusement, des services comme Edgegap surmontent ces limitations avec un réseau de cloud multicloud, qui déploie automatiquement des serveurs de jeux à l'échelle mondiale dans toutes les emplacements, et le meilleur de tout cela - paiement en fonction de l'utilisation par les joueurs.

Conclusion

Dans un paysage technologique en évolution rapide, il est tentant de sauter à bord des dernières tendances. Cependant, comme le souligne le dilemme entre le sans serveur et les serveurs de jeux, chaque innovation n'est pas universellement adaptée.

La danse complexe des interactions en temps réel, des connexions persistantes et de la gestion de l'état nuancée dans le jeu souligne l'importance primordiale d'une infrastructure sur mesure.

Bien que le sans serveur offre des solutions transformantes dans des domaines spécifiques, les serveurs de jeux nécessitent une approche plus spécialisée. À l'attention des développeurs et des entreprises de jeux : avant d'adopter la prochaine grande chose, réalisez une évaluation holistique de vos besoins en serveurs de jeux. Nous voyons un avenir où le sans serveur devient une partie de l'arrière-plan, pour certains cas d'utilisation et charges impliquées dans les jeux, mais pas encore pour le serveur autoritaire lui-même.

La clé pour créer des expériences de jeu parfaites réside non seulement dans l'adoption de l'innovation mais dans la garantie que la technologie choisie s'aligne parfaitement avec les défis et les exigences uniques du monde du jeu.

Écrit par

l'équipe Edgegap