View a markdown version of this page

GAMEOPS03-BP03 Realice una prueba de carga temprana y con frecuencia - 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.

GAMEOPS03-BP03 Realice una prueba de carga temprana y con frecuencia

Las pruebas de carga son el proceso de simular el tráfico real en un sistema para evaluar su confiabilidad y rendimiento.

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

Guía para la implementación

Las pruebas de carga son un factor clave para desarrollar una base de rendimiento para los recursos y comprender la capacidad del sistema, y pueden servir de guía para la previsión financiera, el diseño de la arquitectura, la asignación de recursos, las configuraciones de escalado automatizadas y las actividades de escalado previas al lanzamiento. Los beneficios adicionales incluyen:

  • Infraestructura optimizada: es posible que los recursos estén aprovisionados en exceso o de forma insuficiente. Comprender los recursos necesarios se traducirá en costos más bajos y menos infraestructura que administrar.

  • Preparación para la escalabilidad: ciertos mecanismos y funciones pueden llevar a los usuarios a un juego rápidamente. Saber cuándo y cómo escalar puede marcar la diferencia entre satisfacer adecuadamente el aumento de la demanda y perder jugadores. Usa los resultados de las pruebas de carga para preparar guías con los umbrales del sistema, los puntos de alerta y los puntos de alerta críticos en diferentes niveles de escalamiento.

  • Código de mayor calidad: problemas como la interferencia excesiva entre los servicios, las llamadas a bases de datos no agrupadas, los algoritmos ineficientes, las pérdidas de memoria y los problemas de degradación de los servicios son, a veces, más fáciles de identificar a escala.

  • Validación del comportamiento: si se introducen diferentes tipos de errores en las pruebas, se puede validar el comportamiento esperado del sistema o descubrir problemas relacionados con la gestión de errores que es necesario corregir.

Lo ideal es que los desarrolladores realicen pruebas de carga en varios puntos a lo largo del proceso de desarrollo, ya que cada uno de ellos puede ofrecer diferentes beneficios: desde el principio, guían las decisiones arquitectónicas y los esfuerzos de refactorización, mientras que realizar cambios resulta más económico y sencillo. Al final de cada sprint o iteración, validan el rendimiento de la aplicación con las funciones y funciones más recientes.

Antes de la implementación en producción, las pruebas de carga a gran escala que simulan los patrones de uso esperados en el mundo real confirman la capacidad del sistema para gestionar la carga de trabajo de producción. Tras la implementación, las pruebas de carga periódicas supervisan el rendimiento del sistema e identifican los cambios o los cuellos de botella que pueden surgir con el tiempo.

Para simular el tráfico de jugadores, necesitas clientes o bots ligeros que emulen los flujos del cliente del juego y realicen transacciones con el backend del juego para simular el comportamiento de los jugadores en el mundo real. Por lo general, estos datos se recopilan a través de los registros de juego y los datos generados mediante pruebas de control de calidad impulsadas por humanos, así como mediante pruebas alfa o beta a escala limitada en el mundo real, en las que se invita a jugadores reales a jugar a una versión del juego con acceso anticipado.

Es importante registrar el comportamiento del sistema en un manual operativo para ayudar a solucionar posibles fallos en el futuro y conservar las métricas de rendimiento con las que puedan compararse las futuras pruebas de carga. También se recomienda que personal de control de calidad humano pruebe el juego mientras se está realizando la prueba de carga, ya que podrían descubrir problemas que los bots no identifiquen y que las métricas no reflejen.

AWS Fault Injection Service es un servicio totalmente gestionado para ejecutar experimentos de inyección de errores que facilitan la mejora del rendimiento, la observabilidad y la resiliencia de una aplicación. Los experimentos de inyección de errores se utilizan en la ingeniería del caos, que es la práctica de sobrecarga de una aplicación en entornos de prueba o producción mediante la creación de eventos disruptivos, como un aumento repentino del consumo de la memoria o la CPU, observando cómo responde el sistema e implementando mejoras. Los experimentos de inyección de errores ayudan a los equipos a crear las condiciones reales necesarias para descubrir los errores ocultos, monitorear los puntos ciegos y los cuellos de botella en el rendimiento que son difíciles de encontrar en los sistemas distribuidos.

Pasos para la implementación

  • Configura un entorno de pruebas de carga distribuido utilizando la Guía para Kubernetes-Bases las pruebas de carga de juegos.

  • Personalice e implemente los módulos de control y de trabajo de Locust en el clúster de EKS con los archivos de implementación proporcionados, lo que permite una generación de cargas escalable y manejable.

  • Registre el comportamiento y las métricas del sistema durante las pruebas de carga en un manual operativo para ayudar a solucionar problemas en el futuro y establecer puntos de referencia de rendimiento.

  • Utilice experimentos de inyección de fallos para simular interrupciones reales y descubrir problemas ocultos en el rendimiento, la observabilidad y la resiliencia del sistema.