Découvrez comment intégrer facilement l'analyse statique, les tests unitaires et d'autres méthodes de test de logiciels C et C++ dans votre pipeline CI/CD. Inscrivez-vous pour la démo >>

Protéger Westeros contre les pannes de performances

Par Chris Colosimo

14 juillet 2017

3  min lire

Dimanche, la première de la saison 7 de Game of Thrones sera disponible pour des millions de fans enragés. La finale de la saison dernière a été regardée par plus de 8.9 millions de personnes (un record pour HBO), et apparemment, si vous prenez en compte tous les différents types de formats multimédias (streaming, live, DVR et rediffusions), cet épisode unique en comptait environ 23 millions. téléspectateurs au total.

La première de la saison 7 a été très attendue et médiatisée, alors que la série continue de se développer et que les intrigues arrivent à leur point culminant. John Snow sera-t-il le roi du Nord? Que se passe-t-il avec Dany et cette armée de l'autre côté de la mer? Et surtout, Tyrion Lanister obtiendra-t-il enfin le respect qu'il mérite? (Je ne sais pas, peut-être que je suis partial, mais il est certainement la meilleure chose à propos de cette émission ...)

Mais j'ai ce petit pincement au cœur quand je pense à 23 millions de téléspectateurs essayant simultanément d'accéder à la même émission de HBO. Quel genre d'infrastructure ont-ils mis en place? Et, plus important encore, comment ont-ils testé les performances du scénario? Et si nous étions tous 30 minutes dans l'épisode et qu'il y avait soudainement une panne?

Je regarde personnellement Game of Thrones sur le HBO Go app, en streaming sur mon téléviseur, alors j'ai pensé que je pourrais faire des recherches pour voir ce qu'il y a sous le capot dans ce cas d'utilisation particulier.

Voici ce que je découvert sur l' HBO Go app:

  • Il est principalement basé sur Java
  • Utilise Cassandra comme source de données principale
  • Communique à la maison via les API REST
  • Publie du contenu en streaming sur Amazon EC2 en partenariat avec MLB avancé.

Selon le  gonfle de la connaissance d'Internet. HBO avait initialement prévu le service de streaming en interne sous le nom de code Project Maui. C'était vers 2014, mais ils ont eu quelques défis, y compris des pannes survenues pendant les épisodes de Game of Thrones et True Detective. (Il a été allégué à l'époque que certains associés de développement étaient au courant d'une éventuelle fuite de mémoire, mais l'ont qualifiée de non-problème, et il a malheureusement été déterminé que ces fuites ont finalement conduit à des pannes.)

Pour mettre en contexte l'importance de ces types de problèmes, Le directeur technique de HBO a démissionné à la suite des problèmes du projet Maui, dont une grande partie était liée à ces fuites de mémoire qui entraînent des pannes. L'échec de leur propre plate-forme sur mesure a entraîné un changement de direction global pour l'équipe de la plate-forme, entraînant le passage à une solution tierce. On ne peut sous-estimer l'impact de la qualité, des performances et de la sécurité dans les infrastructures critiques.

Néanmoins, à la suite de ces problèmes, HBO s'est associé à MLB Advanced, et maintenant ils font le streaming. Alors, à quoi cela ressemblerait-il de tester correctement les performances de cette infrastructure, pour s'assurer qu'elle ne subira pas de panne catastrophique dimanche?

Voici un diagramme modélisant à quoi je suppose que la pile ressemble, et où les types de test appropriés s'intégreraient:

Je commencerais par recréer les flux de travail de connexion, de recherche et de sélection. Je testerais les appels d'API REST qui seraient effectués du serveur d'applications aux services, et je validerais les appels fonctionnels aux bases de données principales. Je réutiliserais ensuite ces appels pour créer des tests de performance et de charge contre les composants individuels, pour m'assurer qu'ils fonctionneraient de manière isolée et ne souffriraient pas de sursaturation. J'enregistrerais ensuite l'expérience de l'utilisateur à la fois de l'application mobile et de l'expérience du navigateur, et je les réutiliserais pour des tests de performance. Il deviendrait important d'agréger ces deux résultats ensemble tout en surveillant la technologie sous-jacente pour les threads, les fuites de mémoire, l'utilisation du processeur, etc. Cela les aiderait à comprendre où se trouvent les points chauds potentiels dans la pile d'applications.

Conclusion

Les tests de performance sont parfois négligés, mais c'est facile avec les bonnes solutions. Négligez cela et vous pourriez avoir une meute de sauvages en colère après vous lorsque leur flux s'arrête soudainement.

Si vous voulez copier ce que j'ai fait dans ce diagramme, pour tirer parti d'un approche des tests basée sur les environnements, vous pouvez utiliser Parasoft SOAtest pour l'automatisation de vos tests fonctionnels et Parasoft Virtualize pour la virtualisation des services. Ces technologies se connectent de manière transparente pour faciliter la gestion de vos tests.

Par Chris Colosimo

Chef de produit chez Parasoft, Chris élabore des stratégies de développement de produits pour les solutions de test fonctionnel de Parasoft. Son expertise en accélération SDLC grâce à l'automatisation l'a conduit à des déploiements majeurs en entreprise, tels que Capital One et CareFirst.

Recevez les dernières nouvelles et ressources sur les tests de logiciels dans votre boîte de réception.