Aplicación a gamificación masiva

¿Sirve la nube para algo más que para almacenar ficheros?

Aunque la pregunta pueda parecer ingenua, seguro que muchos aún no han dado el paso de considerar a la nube además como un servicio de computación remoto, que puede llegar incluso a ser una alternativa real a los servidores que tienen en la sala acondicionada del sótano.

He aquí un ejemplo aplicado a gamificación

Necesidad

Ante el despliegue de un juego de uso masivo para una campaña de formación y concienciación, para un plantilla de unos 150.000 trabajadores, se requería disponer de gran capacidad de computación pero no se quería dotar a la entidad de infraestructura propia.

Descripción funcional de la solución

Ante una demanda no programada de peticiones de servicio, se parametrizan los servicios Amazon Web Services (AWS) para dar respuesta inmediata y elástica, en capacidad de proceso,  a la demanda que se origine en cada momento.

Descripción técnica

Para implementar la infraestructura necesaria para soportar la aplicación y la carga de trabajo de la campaña se han utilizado los servicios EC2, RDS, VPC y CloudWatch que proporciona AWS. Dentro de estos servicios se han utilizado diversas características para dotar a la infraestructura de tolerancia a fallos y elasticidad para soportar picos de rendimiento inesperados.

La aplicación está compuesta de dos capas: aplicación y base de datos. La capa de aplicación (servidores web) se ejecutaba sobre servidores Linux CentOS 7, Apache y PHP 5.6. Se utilizó para ello la característica “Autoscaling” que proporciona EC2. Se implementaron dos máquinas inicialmente, distribuidas en dos zonas de disponibilidad distintas para proporcionar tolerancia a fallos que pudieran ocurrir en alguna de las zonas.

Se incorporaron políticas de escalado horizontal para hacer crecer el pool de servidores web en respuesta a picos de actividad en la aplicación, y hacia abajo para hacerlo decrecer cuando el rendimiento exigido fuese menor, permitiendo así la optimización del coste. Se definieron las políticas en función de las métricas de uso de CPU, proporcionada por Amazon Web Services, y de uso de memoria, desarrollada e implementada por el equipo de Cibernos, de forma que, al superar el pool de servidores el 80% de media de uso de uno de los dos parámetros durante un intervalo de 2 minutos, se hacía crecer el pool de servidores con dos instancias, y al estar dicha media por debajo del 60% durante 10 minutos, se hacía decrecer el pool en dos instancias. La gestión de las métricas se llevó a cabo mediante el uso del servicio CloudWatch, que almacena la información de las métricas.

El escalado se realizó manteniendo siempre la distribución de los servidores en las distintas zonas de disponibilidad para asegurar la tolerancia a fallos. Para la gestión de la distribución de la carga entre todos los servidores del pool se realiza mediante la utilización de la característica “Elastic Load Balancing”, que comprueba las instancias activas en cada momento para balancear la carga de manera uniforme.

En cuanto a la capa de base de datos, se implementó una instancia RDS en MySQL 5.5 con la característica MultiAZ, que mantiene replicada automáticamente la instancia en dos zonas de disponibilidad, para asegurar tolerancia a fallos.

Toda la infraestructura está implementada en un entorno VPC (Virtual Private Cloud), que proporciona una red aislada dentro de AWS, asegurando así que sólo están accesibles las características que deben estarlo para dar al conjunto la máxima seguridad frente a ataques.

Esquema de la arquitectura utilizada.

Esquema de la arquitectura utilizada.