View a markdown version of this page

GAMEOPS05-BP01Elija el escenario, la arquitectura y el marco de pruebas de carga adecuados para cumplir sus objetivos - Lente de la industria del juego

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

GAMEOPS05-BP01Elija el escenario, la arquitectura y el marco de pruebas de carga adecuados para cumplir sus objetivos

El enfoque para probar la carga de un juego puede variar considerablemente en función de muchos factores, como la fase del proceso de desarrollo en la que se lleve a cabo, la arquitectura del propio sistema generador de carga y la elección del marco de prueba de carga. El momento en que se lleve a cabo, ya sea en las primeras fases, durante los sprints iterativos, antes de la implementación en producción o después de la implementación, determinará los objetivos y el enfoque de las pruebas. Los diferentes diseños de infraestructura generadora de carga tienen sus ventajas y desventajas, y la selección del marco de pruebas de carga influye en gran medida en las capacidades, la facilidad de uso y las integraciones disponibles para el proceso de prueba. Al alinear cuidadosamente estos elementos, los equipos de desarrollo pueden adaptar el enfoque de las pruebas de carga a las características únicas del juego, extraer los datos de rendimiento más valiosos y ofrecer una experiencia fluida a sus jugadores.

Nivel de riesgo expuesto si no se establece esta práctica recomendada: alto

Guía para la implementación

Pruebas de carga en diferentes etapas de desarrollo

Realizar pruebas de carga exploratorias al principio de las fases de desarrollo puede validar la arquitectura del sistema subyacente. Esto ayuda a los desarrolladores a tomar decisiones informadas sobre la infraestructura, el diseño de la base de datos y la topología de red del juego antes de realizar un extenso trabajo de implementación. Las pruebas de carga identifican los riesgos y crean una base de rendimiento, lo que puede minimizar la necesidad de costosas modificaciones y la deuda técnica más adelante en el ciclo de vida del desarrollo. También pueden fomentar una comprensión compartida de los requisitos de rendimiento del juego entre el equipo, lo que se traduce en una mejor colaboración y en la toma de decisiones. En última instancia, las pruebas de carga durante las fases iniciales crean una base sólida para un juego de alto rendimiento, escalable y resistente, y ayudan a mejorar la experiencia general del jugador.

Al final de cada sprint o iteración, las pruebas de carga permiten evaluar el impacto en el rendimiento de las nuevas funciones, las correcciones de errores y otros cambios introducidos en el último ciclo. Este enfoque específico permite a los equipos de desarrollo identificar rápidamente las regresiones o degradaciones del rendimiento introducidas por las actualizaciones más recientes, lo que les permite abordar estos problemas antes de que se propaguen más adelante y mantener un nivel constante de calidad y rendimiento.

Antes de la implementación en producción, las sólidas pruebas de carga ayudan a los equipos a validar la capacidad del sistema para gestionar las condiciones reales de tráfico y carga previstas. Pueden descubrir cuellos de botella en materia de escalabilidad o limitaciones de recursos en la infraestructura de producción y brindar la oportunidad de optimizar el rendimiento del juego, creando una experiencia de usuario fluida y con capacidad de respuesta desde el primer día. La información obtenida a partir de las pruebas de carga previas al lanzamiento puede mitigar los riesgos en el momento del lanzamiento y servir de base para la planificación continua de la capacidad, que sienta las bases para la sostenibilidad y la escalabilidad a largo plazo del juego.

Las pruebas de carga de un juego que ya está en producción permiten a los equipos supervisar el rendimiento del juego e identificar las regresiones o degradaciones del rendimiento que pueden producirse con el tiempo. Esto les permite abordar los problemas de forma proactiva antes de que afecten a la experiencia del jugador y afecten negativamente a la retención de los usuarios. Además, las pruebas de carga en producción validan la eficacia de las iniciativas de optimización del rendimiento o del escalado de la infraestructura que se han implementado. Este proceso proporciona a los jugadores una experiencia de juego escalable, con capacidad de respuesta y de alta calidad, incluso a medida que el juego evoluciona y madura.

Load-generating arquitecturas

El diseño de la arquitectura generadora de carga para las pruebas de carga de los juegos puede adoptar varias formas, cada una con su propio conjunto de ventajas y consideraciones. 

En el nivel más básico, las instancias de Amazon EC2 autogestionadas se pueden aprovisionar y configurar para que actúen como generadoras de carga. Con un enfoque de nodos de control y nodos de trabajo, puede configurar varias instancias generadoras de carga, cada una de las cuales ejecuta su propio script de prueba y, en general, se gestiona mediante una única instancia de control. La arquitectura puede ampliarse y generar más carga sin aumentar la complejidad mediante la creación de nodos de trabajo adicionales, pero este enfoque práctico requiere que los equipos se encarguen del aprovisionamiento, la configuración y la administración de la infraestructura subyacente.

Si desea un enfoque más escalable y organizado, puede usar los clústeres de Kubernetes de Amazon EKS para administrar y distribuir la carga de trabajo de las pruebas de carga entre una flota de agentes de carga basados en contenedores. Las funciones de escalado automático de Kubernetes se pueden utilizar para gestionar el escalado de los pods que generan carga, mientras los propios equipos configuran y administran las instancias EC2 subyacentes en el clúster que aloja los pods. 

Por otra parte, la naturaleza sin servidores AWS Fargate puede acelerar y simplificar la configuración de las pruebas de carga al reducir la administración de la infraestructura y, al mismo tiempo, proporcionar la escalabilidad y la flexibilidad necesarias. En el caso de las soluciones híbridas en las que ya existe un clúster de Kubernetes local que genera carga, pero es posible que se necesite capacidad adicional, EKS Anywhere puede administrar ambos clústeres desde el. Consola de administración de AWS

También puede usar AWS Lambda funciones en función de sus requisitos y objetivos. Las funciones de Lambda son relativamente sencillas de configurar y escalar sin necesidad de aprovisionar y administrar recursos adicionales. También permiten la creación de escenarios de prueba más complejos y dinámicos debido a la profunda integración con otros AWS servicios. Sin embargo, las funciones de Lambda tienen límites en cuanto a las funciones simultáneas y al tiempo de ejecución (15 minutos), lo que puede limitar la escala y la duración de las pruebas de carga que se pueden realizar. Las latencias de arranque en frío también pueden afectar a la precisión de los resultados, y es posible que las limitaciones de recursos de Lambda no sean adecuadas para cargas de trabajo de pruebas de carga muy exigentes.

Los estudios que deseen utilizar una solución prediseñada pueden utilizar las pruebas de carga distribuidas en. AWS Esta solución utiliza Amazon ECS AWS Fargate para implementar contenedores que pueden ejecutar simulaciones de decenas de miles de usuarios conectados. Puede usar esto para iniciar rápidamente su infraestructura de pruebas de carga al estilo de IAC usando AWS CloudFormation.

Marcos de pruebas de carga

No hay dos marcos de pruebas de carga diseñados de la misma manera. Algunos tienen interfaces gráficas intuitivas para la creación de pruebas, mientras que otros se basan completamente en la línea de comandos. Una herramienta puede ser flexible y eficaz, pero puede requerir tiempo y esfuerzo para configurarla y administrarla, y otra puede no tener servidor pero tener un número limitado de pruebas que puede crear y ejecutar. Algunas disfrutan de grandes comunidades y de muchos tutoriales, pero no han demostrado su eficacia sobre el terreno, lo que contrasta claramente con otras que pueden haber sido probadas en fase de producción, pero que carecen del soporte o la documentación de la comunidad. Elige el marco que logre el equilibrio adecuado para ti y tu equipo. Algunas de las opciones más populares son:

  • Apache JMeter: popular Java-based marco de pruebas de carga de código abierto debido a su sólido conjunto de funciones y su facilidad de uso. Su capacidad para simular escenarios de usuario complejos, su amplia gama de protocolos compatibles, sus informes exhaustivos y su historial comprobado hacen de JMeter una opción confiable para las pruebas de carga.

  • Locust: marco de pruebas de carga moderno y distribuido basado en una arquitectura basada en eventos, lo que lo hace eficiente y eficiente en términos de recursos. Las pruebas se escriben en Python, lo que permite escenarios de prueba flexibles que aprovechan miles de potentes bibliotecas de terceros, sin dejar de ser amigables y fáciles de leer.

  • Grafana K6: potente marco de pruebas de carga que combina la facilidad de uso con capacidades avanzadas. Su soporte para la generación de cargas distribuidas, la creación de scripts flexibles y la perfecta integración con Grafana para la visualización de datos hacen de Grafana K6 una opción atractiva.

  • Gatling: marco de pruebas de Open-source carga conocido por su rendimiento y escalabilidad. Su Scala-based lenguaje de dominio específico (DSL) permite a los desarrolladores crear scripts de pruebas de carga concisos y fáciles de mantener, y sus sólidas capacidades de generación de informes y análisis proporcionan información detallada del sistema que se está probando.

Pasos para la implementación

  • Etapas de las pruebas de carga: realice pruebas de carga en las distintas etapas del desarrollo (desarrollo inicial, sprints, preproducción y posterior a la implementación) para validar el rendimiento del sistema e identificar problemas.

  • Load-generatingarquitecturas: elija las arquitecturas generadoras de carga adecuadas (EC2, EKS, Fargate o Lambda) en función de las necesidades de escalabilidad, las preferencias de administración y los requisitos de prueba específicos.

  • Marcos de pruebas de carga: seleccione un marco de pruebas de carga (como JMeter, Locust, Grafana K6 o Gatling) que equilibre la facilidad de uso, el rendimiento, la flexibilidad y el apoyo de la comunidad para adaptarse a las necesidades de su equipo.