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
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.