Couple Up ! Love Show Story

Jeu de romance mobile interactif

audité et soumis à des tests de charge par QAwerk
Girl Image Boy Image Clip Icon Blue Clip Icon Red
×
Où souhaitez-vous que nous vous envoyions notre étude de cas Couple Up ! ?
Veuillez saisir votre adresse courriel professionnelle n'est pas un courriel professionnel

Native Games Studio est un développeur de jeux indépendant spécialisé dans les jeux d’histoires interactives pour mobile. Fondé en 2020 avec une équipe de trois personnes, il est devenu un petit studio qui a lancé Couple Up ! – une simulation de jeu de rencontres et de téléréalité pour les joueurs iOS et Android.

Tous les clients

Tests de jeux

Nous avons testé le backend du jeu mobile Couple Up ! en effectuant des tests de charge, en auditant les configurations serveur et en réalisant une analyse approfondie de la base de code de l’API. Nos recommandations d’experts aideront à résoudre les goulots d’étranglement et à offrir une expérience fluide à un grand nombre de joueurs.

En savoir plus

Tests de performance

Nous avons aidé notre client à identifier les cas de test qui mettaient le serveur à l’épreuve et provoquaient des délais de réponse importants. Nous avons défini plusieurs axes d’amélioration des performances – de l’ajustement des configurations de base de données à la migration vers une architecture différente, en passant par l’amélioration de la qualité du code API.

En savoir plus

Défi

Native Games Studio a fait appel à QAwerk pour relever les défis liés à une base d’utilisateurs croissante. Ils souhaitaient s’assurer que le jeu Couple Up ! ne serait ni lent ni instable face à un afflux nettement accru de joueurs.

Voici ce que nous devions livrer :

  • Tests de charge. Nous devions tester plusieurs points de terminaison API, en augmentant progressivement les requêtes serveur et en suivant le temps de réponse. Les tests de charge permettent d’identifier la capacité de charge maximale de l’application et son point de rupture, puis d’effectuer les ajustements nécessaires avant que les utilisateurs ne rencontrent des problèmes.
  • Audit de configuration serveur. Notre mission consistait à analyser minutieusement les configurations de leur serveur Hetzner, notamment en vérifiant les goulots d’étranglement réseau, la configuration nginx, en auditant les conteneurs Docker, ainsi que les paramètres du noyau et des services. Cette partie a été réalisée par notre ingénieur DevOps.
  • Revue de code. On nous a également demandé de revoir le code serveur et d’identifier les points à améliorer. Nous l’avons évalué selon des critères tels que la qualité du code, la gestion des erreurs, la mise en cache et la testabilité. Comme le code était une API REST développée avec Flask, la revue a été effectuée par notre développeur Python senior.

Avant de commencer le projet, nous avons fourni à l’équipe Couple Up ! une estimation de nos efforts pour apporter clarté et transparence à notre collaboration. Nous leur avons également demandé de combler les lacunes dans la documentation de l’API afin d’avoir une compréhension précise de l’infrastructure sous-jacente.

Solution

Tests de charge

Nous avons testé un appel API GET et trois appels POST pour mesurer leurs performances dans des conditions de charge variées. Les tests de charge sont généralement réalisés à l’aide d’un outil qui simule différents nombres d’utilisateurs interagissant simultanément avec votre application, ou une augmentation séquentielle de la demande. Nos ingénieurs QA ont choisi Apache JMeter car c’est un outil open source fiable, spécifiquement conçu pour rendre les tests de charge rapides et efficaces.

Un problème que nous avons rencontré était une description incorrecte des en-têtes API. Ces derniers sont essentiels dans les tests d’API car ils contiennent des métadonnées sur la requête et la réponse API. Ils aident également l’API à comprendre votre requête et à récupérer les informations exactes dans le format souhaité.

Nous avons résolu ce problème en écrivant un script qui nous a permis de décrire correctement les requêtes dans JMeter. Après avoir analysé le système, la charge attendue et la charge maximale, nous avons défini les paramètres de données de test correspondants.

Voici les cas de test que nous avons utilisés :

  • Ajouter 1 thread (utilisateur) en 1 sec
  • Ajouter 100 threads (utilisateurs) en 1 sec
  • Ajouter 1 000 threads (utilisateurs) en 10 sec
  • Ajouter 10 000 threads (utilisateurs) en 1 000 sec

Nous avons mesuré les performances du serveur en termes de temps de réponse au fil du temps, de threads actifs au fil du temps et de taux d’erreurs internes du serveur.

Audit de configuration serveur

Notre audit de configuration serveur visait à identifier des opportunités d’amélioration des performances du serveur. Étant donné que les processus mongod génèrent la principale charge CPU et RAM sur le serveur, leur fonctionnement doit être optimisé.

Nous avons fourni à l’équipe Couple Up ! une liste des configurations exactes à mettre en place. Par exemple, nous avons détaillé comment ajuster les paramètres du noyau Linux, tels que le nombre maximum de mappages, le paramètre swappiness, le dirty_ratio, le nombre maximum de connexions en file d’attente, la plage de ports locaux, et plusieurs autres, en relation avec la charge anticipée de 50 000 connexions.

Pour réduire la charge CPU et RAM, nous avons conseillé à notre client de vérifier la formation des requêtes et d’optimiser celles qui s’exécutent lentement, ainsi que de paralléliser les requêtes du même type. Nous avons également suggéré d’indexer et de réindexer régulièrement les champs fréquemment interrogés. Avec la bonne stratégie d’indexation, vous pouvez augmenter considérablement les performances de votre base de données.

De plus, nous avons indiqué quelles configurations par défaut devaient être modifiées et comment procéder.

Revue de code

L’équipe QAwerk a effectué une revue de code complète et a fourni à Couple Up ! des actions rapides et rentables, ainsi que des modifications architecturales importantes pour de meilleures performances et une meilleure évolutivité à long terme.

Nous avons mis en évidence les zones nécessitant une refactorisation pour aider les développeurs de Couple Up ! à maintenir, ajouter de nouvelles logiques métier et faire évoluer le code sans difficulté à l’avenir. Nous avons souligné la nécessité de tests unitaires et d’intégration, car ils faciliteront la refactorisation et l’expansion de la base de code.

Nous avons également recommandé d’améliorer la gestion des erreurs afin que les messages d’erreur soient plus informatifs et affichent toujours des codes de statut corrects. Cela simplifierait le débogage et les tests, et aiderait à standardiser la communication de l’application avec l’API.

Une mise en cache adéquate peut considérablement améliorer les performances à une fraction du coût par rapport à une migration vers Amazon. C’est pourquoi nous avons proposé à notre client de mettre en place une solution de cache.

Enfin, le pipeline CI/CD est absolument indispensable. En cas de publications fréquentes, le CI/CD est essentiel pour détecter les bugs avant le déploiement des mises à jour et accélérer la livraison de nouvelles fonctionnalités aux utilisateurs. La mise en place du CI/CD figurait donc également dans notre liste de recommandations.

Bugs détectés

Nos résultats de tests de charge ont révélé que le serveur avait du mal à gérer une augmentation soudaine du nombre d’utilisateurs sur une courte période, entraînant un déséquilibre du système, de longs temps de réponse et des erreurs internes du serveur.

Bug

Résultat réel: Lors de l’ajout de 1 000 utilisateurs en 10 secondes, la plupart des requêtes API prennent plus de 3 secondes à être traitées, avec un pic à 27 secondes.

Résultat attendu: Le temps de réponse du serveur ne devrait pas dépasser 3 secondes, quel que soit le cas de test effectué.

Bug

Résultat réel: Lors de l’ajout de 10 000 utilisateurs en 1 000 secondes, la plupart des requêtes API ont des temps de réponse normaux, mais on observe des pics récurrents, atteignant parfois plus de 6 secondes.

Résultat attendu: Il ne devrait pas y avoir de pics brutaux dans les temps de réponse du serveur ; le graphique linéaire devrait tendre vers zéro sur l’axe des temps de réponse.

Bug

Résultat réel: Le rapport de test de performance indique que 20 % des requêtes serveur dans le cas de 1 000 utilisateurs ajoutés en 10 secondes renvoient le code de statut 500, une erreur interne du serveur.

Résultat attendu: Le taux d’erreurs serveur devrait tendre vers 0 % pour éviter la perte de la progression des joueurs et garantir une expérience immersive.

Résultat

QAwerk a fourni à Couple Up ! un rapport détaillé de tests de charge et un plan d’action étape par étape pour améliorer les performances du serveur et réduire le nombre d’erreurs. Nous avons délibérément divisé nos recommandations en gains rapides et en modifications majeures d’architecture. Les gains rapides sont faciles et rentables à mettre en œuvre et apportent des bénéfices immédiats en termes de performances. À l’inverse, une architecture cloud repensée aiderait à équilibrer automatiquement la charge et à stocker les données plus près du public cible, réduisant ainsi la latence et éliminant d’autres problèmes de performance.

Nos services étant gérés, l’équipe Couple Up ! a reçu des retours détaillés et des conseils d’experts de trois spécialistes – notre ingénieur QA, notre développeur Python et notre ingénieur DevOps. Les informations que nous avons partagées aideront Native Games Studio à préparer le jeu Couple Up ! à une base d’utilisateurs croissante et à développer de nouveaux jeux avec la bonne architecture dès le départ.

Votre application peut-elle gérer des pics de trafic soudains ?

Parlons-en

Outils

PostmanPostman
JMeterJMeter
DockerDocker
LinuxLinux
100K+joueurs Android
50Kconnexions anticipées
4experts dans l’équipe
42heures-personnes

Commentaires de l’équipe QAwerk

Alexander

Alexander
Ingénieur assurance qualité

J’ai effectué des tests de charge API pour les requêtes sélectionnées à l’aide de JMeter, l’un des outils les plus stables et les plus performants en la matière. J’ai approfondi mon expertise en tests de charge en utilisant de nouveaux types de métriques et en collaborant étroitement avec les développeurs pour résoudre le problème lié aux en-têtes.

Anton

Anton
Developer

J’ai réalisé la revue de code du projet. Ma principale préoccupation était que les patterns de conception logicielle couramment utilisés et les principes de qualité du code n’étaient pas respectés, ce qui compliquait la maintenance et l’implémentation de nouvelles fonctionnalités. La meilleure solution serait de réécrire le code et de confier ce travail à un développeur bien versé en Python.

Media

Impressionné(e) ?

Recrutez-nous

Autres études de cas

Unfold

Unfold

États-Unis

Nous avons transformé ce créateur d’histoires sujet aux plantages en une plateforme de création de contenu à part entière, qui compte désormais un milliard d’utilisateurs et a été rachetée par SquareSpace

Magic Mountain

Magic Mountain

Royaume-Uni

Nous avons permis à l’application de fitness social n° 1 au Royaume-Uni de passer d’une offre MVP à une offre Premium, et le nombre de ses abonnés augmente chaque jour

Logo Maker Shop

Logo Maker Shop

Corée du Sud

A aidé l’application Logo & Brand Story Design à faire ses débuts avec succès sur Google Play et à atteindre rapidement 10 000 installations