View a markdown version of this page

GAMEOPS05-BP01 Elija el escenario, la arquitectura y el marco de pruebas de carga adecuados para cumplir sus objetivos - Lente de la industria de juegos

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-BP01 Elija el escenario, la arquitectura y el marco de pruebas de carga adecuados para cumplir sus objetivos

El enfoque de las pruebas de 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 pruebas de carga. El momento en que se lleve a cabo, ya sea en las fases iniciales, 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 propias 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 la información más valiosa sobre el rendimiento 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

La realización de 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 del juego, el diseño de la base de datos y la topología de la red antes de realizar un extenso trabajo de implementación. Las pruebas de carga identifican los riesgos y crean una base de rendimiento, lo que podría 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 toma de decisiones. En última instancia, las pruebas de carga durante las fases iniciales sientan una base sólida para un juego de alto rendimiento, escalable y resistente, lo que ayuda 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 últimas actualizaciones, 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 pasar a la fase de producción, las rigurosas pruebas de carga ayudan a los equipos a validar la capacidad del sistema para hacer frente a las condiciones de tráfico y carga previstas en el mundo real. Pueden detectar los problemas de escalabilidad o las limitaciones de recursos en la infraestructura de producción y ofrecen la oportunidad de optimizar el rendimiento del juego, creando una experiencia de usuario fluida y con gran 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 del día del lanzamiento y servir de base para la planificación continua de la capacidad, lo 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 fase de producción permiten a los equipos supervisar el rendimiento del juego e identificar las regresiones o degradaciones del rendimiento que puedan producirse con el paso del 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 la producción validan la eficacia de los esfuerzos de optimización del rendimiento o el escalado de la infraestructura que se han implementado. Este proceso proporciona a los jugadores una experiencia de juego de alta calidad, con capacidad de respuesta y escalable, incluso a medida que el juego evoluciona y madura.

Arquitecturas generadoras de carga

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

En el nivel más básico, las EC2 instancias de Amazon autogestionadas se pueden aprovisionar y configurar para que actúen como generadores 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 ejecute su propio script de prueba y, en general, se administre 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.

Para un enfoque más escalable y organizado, puede utilizar los clústeres de Kubernetes de Amazon EKS para gestionar y distribuir la carga de trabajo de 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 generadores de carga, mientras que los propios equipos configuran y administran las instancias subyacentes del clúster que aloja los pods. EC2  

Como alternativa, la naturaleza sin servidor AWS Fargatepuede acelerar y simplificar la configuración de las pruebas de carga, ya que permite prescindir de la administración de la infraestructura y, al mismo tiempo, ofrecer 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 genere carga, pero puede que se necesite capacidad adicional, EKS Anywhere puede gestionar ambos clústeres como uno solo desde el. Consola de administración de AWS

También puede utilizar AWS Lambdafunciones en función de sus requisitos y objetivos. Las funciones Lambda son relativamente sencillas de configurar y escalar sin necesidad de aprovisionar ni administrar recursos adicionales. También permiten crear escenarios de prueba más complejos y dinámicos gracias a su profunda integración con otros AWS servicios. Sin embargo, las funciones 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 las limitaciones de recursos de Lambda pueden no ser adecuadas para cargas de trabajo de pruebas de carga muy exigentes.

Los estudios que deseen utilizar una solución prediseñada pueden utilizar Distributed Load Testing on. AWS Esta solución utiliza Amazon ECS AWS Fargate para implementar contenedores que pueden ejecutar simulaciones de decenas de miles de usuarios conectados. Puede usarlo para iniciar rápidamente su infraestructura de pruebas de carga al estilo IAC utilizando AWS CloudFormation.

Marcos de pruebas de carga

No hay dos marcos de pruebas de carga creados 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 su configuración y administración requieren tiempo y esfuerzo, y otra puede no tener servidor pero tener limitaciones en cuanto a las pruebas que puede crear y ejecutar. Algunas disfrutan de grandes comunidades y de abundantes tutoriales, y no están probadas sobre el terreno, lo que contrasta marcadamente con otras, que pueden haber sido sometidas a duras pruebas en producción, pero que carecen del apoyo 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 marco de pruebas de carga de código abierto y basado en Java debido a su sólido conjunto de funciones y a 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 lo convierten en JMeter una opción fiable 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, al mismo tiempo, ahorra recursos. Las pruebas están escritas en Python, lo que permite escenarios de prueba flexibles que aprovechan miles de potentes bibliotecas de terceros, sin dejar de ser fáciles de leer 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 carga distribuida, la creación de scripts flexible 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 carga de código abierto conocido por su rendimiento y escalabilidad. Su lenguaje de dominio específico (DSL) basado en Scala 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 varias etapas de desarrollo (desarrollo inicial, sprints, preproducción y posterior a la implementación) para validar el rendimiento del sistema e identificar los problemas.

  • Arquitecturas generadoras de carga: elija las arquitecturas generadoras de carga adecuadas (EC2EKS, 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.