¡Couple Up! Love Show Story

Juego romántico interactivo para móvil

auditado y sometido a pruebas de estrés por QAwerk
Girl Image Boy Image Clip Icon Blue Clip Icon Red
×
¿Adónde quiere que le enviemos nuestro estudio de caso Couple Up?
Por favor ingrese su correo electrónico comercial

Native Games Studio es un desarrollador de juegos indie especializado en juegos de historias interactivas para móviles. ¡Fundado en 2020 con un equipo de tres personas, ha crecido hasta convertirse en un pequeño estudio que lanzó Couple Up! - una simulación de reality show amoroso para jugadores de iOS y Android.

Pruebas de juegos

Probamos el backend del juego para móviles Couple Up! realizando pruebas de carga, auditando las configuraciones del servidor y llevando a cabo una revisión en profundidad de la base de código de la API. Nuestras sugerencias expertas les ayudarán a solucionar los cuellos de botella y a proporcionar experiencias ininterrumpidas a un gran número de jugadores.

Más información

Pruebas de rendimiento

Ayudamos a nuestro cliente a identificar los casos de prueba que hacían que el servidor tuviera problemas y respondiera con un retraso significativo. Esbozamos varias áreas para mejorar el rendimiento: desde ajustar las configuraciones de la base de datos hasta migrar a una arquitectura diferente y mejorar la calidad del código de la API.

Más información

Desafío

Native Games Studio recurrió a QAwerk para afrontar los retos de una base de usuarios en crecimiento. Querían asegurarse de que el juego Couple Up! no se ralentizara ni se bloqueara ante un aumento sustancial de la afluencia de jugadores.

Esto es lo que se esperaba de nosotros:

  • Pruebas de carga. Necesitábamos probar varios puntos finales de la API, aumentando gradualmente las peticiones al servidor y haciendo un seguimiento del tiempo de respuesta del servidor. Las pruebas de carga ayudan a identificar la capacidad operativa máxima y el punto de ruptura de la aplicación y a realizar los ajustes necesarios antes de que los usuarios experimenten problemas negativos.
  • Auditoría de la configuración del servidor. Nuestra tarea consistió en escudriñar sus configuraciones de servidor Hetzner, como la comprobación de los cuellos de botella de la red, la configuración de nginx, la auditoría de los contenedores docker, el kernel y la configuración de los servicios. Esta parte fue realizada por nuestro ingeniero DevOps.
  • Revisión del código. También se nos pidió que revisáramos el código del servidor y señaláramos áreas de mejora. Lo comprobamos en función de criterios como la calidad del código, la gestión de errores, el almacenamiento en caché y la comprobabilidad. Dado que el código era una API REST construida con Flask, fue revisado por nuestro desarrollador senior de Python.

Antes de proceder con el proyecto, proporcionamos al equipo de Couple Up! una estimación de nuestros esfuerzos para aportar claridad y transparencia a nuestra cooperación. También les pedimos que rellenaran las lagunas de la documentación de la API para que tuviéramos un conocimiento preciso de la infraestructura subyacente.

Solución

Pruebas de carga

Probamos una llamada GET y tres llamadas POST a la API para medir su rendimiento en distintas condiciones de carga. Las pruebas de carga suelen realizarse con la ayuda de una herramienta que simula diferentes números de usuarios que interactúan con la aplicación simultáneamente o un aumento secuencial de la demanda de la aplicación. Nuestros ingenieros de control de calidad eligieron Apache JMeter porque es una herramienta de código abierto fiable, diseñada específicamente para que las pruebas de carga sean rápidas y eficaces.

Uno de los problemas a los que nos enfrentamos fue una descripción incorrecta de las cabeceras de la API. Estas últimas son vitales en las pruebas de API porque contienen metadatos sobre la solicitud y la respuesta de la API. También ayudan a la API a entender la solicitud y recuperar la información exacta en el formato necesario.

Resolvimos este problema escribiendo un script que nos permitió describir correctamente las peticiones en JMeter. Una vez analizado el sistema, la carga esperada y el pico de carga, establecimos los respectivos parámetros de datos de prueba.

Estos son los casos de prueba que hemos utilizado:

  • Añadir 1 hilo (usuario) en 1 segundo
  • Añadir 100 hilos (usuarios) en 1 segundo
  • Añadir 1000 hilos (usuarios) en 10 segundos
  • Añadir 10000 hilos (usuarios) en 1000 segundos

Medimos el rendimiento del servidor en términos de tiempos de respuesta a lo largo del tiempo, hilos activos a lo largo del tiempo e índices de errores internos del servidor.

Auditoría de la configuración del servidor

Nuestra auditoría de configuración del servidor tenía como objetivo identificar oportunidades para mejorar el rendimiento del servidor. Dado que los procesos mongod causan la principal carga de CPU y RAM en el servidor, su trabajo debe ser optimizado.

¡Proporcionamos al equipo de Couple Up! una lista de las configuraciones exactas que debían establecerse. Por ejemplo, desglosamos cómo ajustar la configuración del kernel de Linux, como el número máximo de mapas, la swappiness, dirty_ratio, el número máximo de conexiones en cola, el rango de puertos locales y varios otros, en relación con la carga prevista de 50.000 conexiones.

Para reducir la carga de CPU y RAM, aconsejamos a nuestro cliente que comprobara cómo se forman las consultas y optimizara las que funcionan con lentitud y paralelizara las consultas del mismo tipo. También sugerimos indexar y reindexar los campos consultados habitualmente y hacerlo a tiempo. Con la estrategia de indexación adecuada, puedes aumentar significativamente el rendimiento de tu base de datos.

Además, mencionamos qué configuraciones por defecto deberían cambiarse y cómo.

Revisión del código

El equipo de QAwerk realizó una revisión exhaustiva del código y proporcionó a Couple Up! medidas de acción rápidas y rentables, así como cambios arquitectónicos significativos para mejorar el rendimiento y la escalabilidad a largo plazo.

Destacamos las áreas que necesitaban refactorización para ayudar a los desarrolladores de Couple Up! a mantener, añadir nueva lógica de negocio y escalar el código sin dolor en el futuro. Señalamos la necesidad de pruebas unitarias y de integración porque facilitarán la refactorización y la ampliación de la base de código.

Además, recomendamos mejorar la gestión de errores para que los mensajes de error sean más informativos y muestren siempre los códigos de estado correctos. Esto simplificaría la depuración y las pruebas y ayudaría a estandarizar la comunicación de la aplicación con la API.

Un almacenamiento en caché adecuado puede aumentar significativamente el rendimiento por una fracción del coste en comparación con la migración a Amazon. Por eso propusimos a nuestro cliente implementar el almacenamiento en caché.

Por último, pero no por ello menos importante, está la canalización CI/CD. En caso de que se planifiquen lanzamientos frecuentes, CI/CD es esencial para detectar errores antes de desplegar actualizaciones y acelerar la entrega de nuevas capacidades a los usuarios. Así que la configuración de CI/CD también estaba en la lista de nuestras recomendaciones.

Errores encontrados

Los resultados de nuestras pruebas de carga revelaron que el servidor tenía dificultades para gestionar un aumento brusco del número de usuarios en poco tiempo, lo que provocaba un desequilibrio del sistema, tiempos de respuesta prolongados y errores internos del servidor.

Bug

Resultado real: Al añadir 1.000 usuarios en 10 segundos, la mayoría de las solicitudes de la API tardan más de 3 segundos en procesarse, con un máximo de 27 segundos.

Resultado esperado: El tiempo de respuesta del servidor no debería superar los 3 segundos, independientemente del caso de prueba realizado.

Bug

Resultado real: Al añadir 10.000 usuarios en 1.000 segundos, la mayoría de las solicitudes a la API tienen tiempos de respuesta normales, aunque observamos picos recurrentes, que en ocasiones superan los 6 segundos.

Resultado esperado: No debería haber picos drásticos en los tiempos de respuesta del servidor; el gráfico lineal debería tender a cero en el eje de tiempos de respuesta.

Bug

Resultado real: El informe de la prueba de rendimiento muestra que el 20% de las peticiones al servidor en el caso de 1000 usuarios añadidos en 10 segundos devuelven el código de estado 500, un error interno del servidor.

Resultado esperado: La tasa de errores del servidor debería tender al 0% para evitar la pérdida del progreso de los jugadores y garantizar una experiencia inmersiva.

Resultado

QAwerk proporcionó a Couple Up! un informe detallado de las pruebas de carga y un plan de acción paso a paso para mejorar el rendimiento del servidor y reducir el número de errores. Dividimos deliberadamente nuestras recomendaciones en logros rápidos y cambios importantes en la arquitectura. Las victorias rápidas son fáciles y rentables de implementar y aportan beneficios inmediatos de rendimiento. En cambio, la arquitectura renovada de la nube ayudaría a equilibrar la carga automáticamente y a almacenar los datos más cerca del público objetivo, disminuyendo la latencia y eliminando otros problemas de rendimiento.

Dado que ofrecemos servicios gestionados, el equipo de Couple Up! recibió comentarios detallados y asesoramiento experto de tres especialistas: nuestro ingeniero de control de calidad, el desarrollador de Python y el ingeniero de DevOps. Las ideas que compartimos ayudarán a Native Games Studio a preparar el juego Couple Up! para la creciente base de usuarios y a desarrollar nuevos juegos con la arquitectura adecuada desde el principio.

¿Puede tu aplicación soportar picos repentinos de tráfico?

Hablemos

Herramientas

PostmanPostman
JMeterJMeter
DockerDocker
Herramientas de monitorización de LinuxHerramientas de monitorización de Linux
100K+jugadores Android
50Kconexiones anticipadas
4expertos en el equipo
42horas-persona

Comentario del equipo de QAwerk

Alexander

Alexander
Ingeniero de control de calidad

Realicé pruebas de carga de la API para las solicitudes seleccionadas utilizando JMeter, una de las herramientas más estables y de mayor calidad en este sentido. Amplié mi experiencia en pruebas de carga utilizando nuevos tipos de métricas y colaborando estrechamente con los desarrolladores para resolver el problema con las cabeceras.

Anton

Anton
Desarrollador

Llevé a cabo la revisión del código del proyecto. Mi mayor preocupación era que no se seguían los patrones de diseño de software y los principios de calidad del código comúnmente utilizados, lo que complicaba el mantenimiento y la implementación de nuevas funciones. La mejor solución sería reescribir el código y asignar el trabajo a un desarrollador versado en Python.

Media

Relacionado en Blog

Las mejores herramientas para probar el rendimiento de las aplicaciones móviles

Las mejores herramientas para probar el rendimiento de las aplicaciones móviles

Los desarrolladores suelen considerar las pruebas de rendimiento de las aplicaciones como un paso complicado inevitable. Es, sin duda, un proceso complicado, largo y costoso. Pero, ¿por qué son tan importantes las pruebas de rendimiento? Esta pregunta me recuerda mi cita favor...

Leer más
Mejores prácticas de pruebas de rendimiento: ¿Qué debería saber?

Mejores prácticas de pruebas de rendimiento: ¿Qué debería saber?

Actualmente, la funcionalidad de un producto es sin duda un componente importante e integral en el proceso de pruebas. Pero también importan el tiempo de respuesta, la fiabilidad, el uso de recursos y la escalabilidad. Las pruebas de rendimiento son un tipo de prueba independien...

Leer más

¿Impresionado?

Contáctenos

Otros casos prácticos

Unfold

Unfold

Estados Unidos

Transformó un creador de historias deficiente en una sólida aplicación reconocida por AppleGoogle y Squarespace

Magic Mountain

Magic Mountain

Reino Unido

Ayudamos a la aplicación social de fitness número 1 en el Reino Unido a pasar de MVP a Premiumcon suscripciones que crecen a diario

Logo Maker Shop

Logo Maker Shop

Corea del Sur

Ayudamos a Logo & Brand Story Design App a debutar con éxito en Google Play y alcanzar rápidamente las 10K descargas