10.45 min to read

Desarrollo técnico de SoftwareOne para la creación de la App OT23 en AWS

Robot
Ronald Teijeira, AWS Solution Architect, AWS / André Marzulo, Senior Consultant, SoftwareOne
blog-tecnico-hero

Gestmusic, una productora de televisión que ha revolucionado los programas de entretenimiento

Gestmusic es una productora de televisión con sede en Barcelona (España) especializada en la producción de programas de entretenimiento en vivo y televisión. La compañía fue fundada en 1985 y su primera producción televisiva tuvo lugar en enero de 1987. Desde entonces ha producido algunos de los programas más populares de la televisión española, como Operación Triunfo, Tu cara me suena y ¡Mira quién baila!.

Operación Triunfo es un gran espectáculo creado por Gestmusic Endemol en 2001 y que ha tenido varias ediciones en distintas cadenas, incluyendo la televisión pública y privada española, así como plataformas como Amazon Prime Video en esta 12ª edición.

Este programa mezcla concurso y reality, ha revolucionado los programas de entretenimiento musical y ha cautivado a la audiencia a nivel mundial. En cada edición 16 jóvenes, después de superar un casting multitudinario, tienen la oportunidad de ingresar en la Academia de Operación Triunfo donde durante cuatro meses reciben formación intensiva para convertirse en cantantes profesionales. Los concursantes cada semana deben demostrar sus actitudes, su evolución y ganarse el afecto del público en una gran gala musical en directo.

A diferencia de ediciones anteriores, en la edición 12ª (correspondiente a 2023), el espectáculo se emite en Amazon Prime Video, se emite en directo los lunes a las 22h (hora española) y se disponibiliza tanto para España como Latinoamérica. Esto ha hecho que el número de usuarios haya aumentado de forma significativa, pues en ediciones anteriores el programa sólo se emitía en España (aunque en canales públicos y privados).

El desafío era facilitar a los espectadores la votación en directo e interacción con los concursantes

Para ayudar a los usuarios a mantenerse actualizados con la última información del espectáculo y de los concursantes (agrupando información disponible en redes sociales y plataformas de streaming referente al programa), así como poder interactuar con el mismo (por ejemplo, a través de las votaciones), se ha desarrollado una aplicación móvil disponibilizada a cualquier usuario a través de las plataformas de Android Play Store y Apple App Store. Dicha aplicación debe estar accesible a cualquier usuario y ofrecer una interfaz fácil de usar, intuitiva y amigable.

La aplicación tiene dos funcionalidades principales:

  1. Hub de contenidos: recoge contenido de redes sociales y el canal 24 horas de Youtube referente a los participantes, las galas semanales en la plataforma de Amazon Prime Vídeo que se retransmiten en directo, etc.
  2. Votaciones: una vez al día, los usuarios pueden votar a sus participantes favoritos que hayan sido nominados para salir del programa y, de esta forma, poder salvarlos y que continúen en el programa.

Esta aplicación interactúa con una plataforma diseñada y desarrollada en Amazon Web Services (AWS), y es la encargada de disponibilizar la información requerida por los usuarios en cada momento. Las características que debe reunir dicha plataforma son:

  • Escalabilidad: dada las capacidades de uso esperadas de la aplicación tanto por usuarios de España y Latinoamérica, la plataforma debe ser capaz de adaptarse a las necesidades de todos los usuarios y, por ende, debe ser capaz de procesar un elevado número de peticiones de los usuarios de forma rápida y transparente a los mismos. Esto es especialmente importante cuando se celebra una gala pues es cuando el número de usuarios de la aplicación se incrementa de forma significativa.
  • Bajo tiempo de respuesta: la plataforma debe soportar cargas de varios millones de usuarios conectados al mismo instante y proporcionar respuestas de baja latencia. Esto es especialmente importante durante las Galas que es cuando la interacción se realiza en tiempo real (votos en directo).
  • Seguridad: la plataforma debe disponer de mecanismos de protección frente a ataques. Por otro lado, la aplicación debe disponer de mecanismos de autenticación para que sólo los usuarios registrados puedan acceder al contenido de la misma.
  • Integración: la plataforma se dota de información proveniente de otras fuentes, como redes sociales y el canal de Youtube.
  • Implementación rápida y excelencia operativa: la plataforma debía ser implementada en un breve período de tiempo, asegurando que el esfuerzo requerido para la sustentación operacional en producción sea mínimo.

SoftwareOne desarrolló la aplicación solicitada por Gestmusic en AWS

Existen 3 interacciones que definen la arquitectura definida:

  1. Usuarios 
  2. Administradores de contenido 
  3. Administradores de la plataforma 

1. Usuarios

El flujo de interacción de los usuarios con la plataforma se compone de los siguientes componentes:

grafico app gestmusic
  • Autenticación: Los usuarios se autentican en la plataforma utilizando sus credenciales de redes sociales (Facebook, Apple, Instagram, TikTok, Google y Amazon) con el pool de identidades de Amazon Cognito. Dichas credenciales se convierten en credenciales de AWS para poder acceder a los servicios de la plataforma.
  • Acceso a contenido estático: La aplicación móvil interactúa con la plataforma a través de un punto de entrada proporcionado por un Content Delivery Network (CDN) (Amazon CloudFront) para acceder al contenido estático, como son las imágenes de concursantes, logo de patrocinadores, iconos, etc. almacenadas en Amazon Simple Storage Service (Amazon S3). Se utiliza la funcionalidad Lambda@Edge de Amazon CloudFront para poder identificar el país desde donde se interactúa con la aplicación (importante para analizar los votos). Dicho CDN está protegido frente ataques de exploit web comunes a través de AWS Web Application Firewall (AWS WAF).
  • Acceso a contenido dinámico: Las peticiones a la plataforma que requieren una respuesta con contenido generado, como por ejemplo el feed de redes sociales, informaciones de concursantes, votación para salvar o favoritos, etc., que se realizan a través de un API endpoint desarrollado en AWS AppSync.
  • Acceso a contenido configurable: La información de los feeds y votaciones abiertas están almacenada en tablas en Amazon DynamoDB.
  • Peticiones de votaciones de Favorito y Salvar: Las interacciones de votos se realizan enviando peticiones al backend a través de Amazon API Gateway que está configurado para acceso Privado a la VPC de backend a través de AWS PrivateLink. Esa petición solamente puede pasar cuando el usuario de la app está autenticado con sus credenciales de red social.
  • Gestión de peticiones (backend): El backend se encarga del proceso de votación y el control de eventos de notificación (además de servicios de gestión de la plataforma, accedidos por los administradores de la misma). Dicho backend está desarrollado en microservicios, ejecutándose en Amazon Elastic Container Service (Amazon ECS) en modalidad serverless (usando AWS Fargate), en alta disponibilidad y expuesto a través de un API Gateway hacia AWS AppSync. Éste interactúa con bases de datos como Amazon MemoryDB for Redis para gestionar todo el flujo de votos y garantizar unicidad de votos por dispositivo y por usuario de red social.
  • Notificaciones: Las notificaciones de móvil para el usuario final, relacionados con todos los escenarios de comunicación de márketing, son de tipo push. Éstas se realizan a través de Amazon Pinpoint.

2. Administradores de contenido

Por otro lado, los gestores de la plataforma interactúan con la misma para gestionar el contenido de la plataforma u obtener información de las interacciones de los usuarios con la plataforma:

grafico app gestmusic 2
  • Autenticación: Los gestores acceden a la aplicación a través de un servicio web. Dichos usuarios necesitan estar autenticados en la plataforma para poder realizar sus tareas. Para ello, se utiliza el pool de usuarios de Amazon Cognito.
  • Interacción con la plataforma: Una vez autenticados, el servicio web interactúa con la plataforma a través de un API GraphQL desarrollado en AWS AppSync para tener el control de concursantes, de las votaciones y los reportes de resultados de las galas. Dicho API interactúa con el backend.
  • Control de peticiones hacia backend: Las peticiones al backend se gestionan a través de AWS API Gateway, que está protegido por AWS WAF y montado a través de AWS PrivateLink para garantizar un acceso al backend desde el API Gateway.
  • Acceso al backend: El backend se encarga del scaffolding de las redes sociales para el feed de OT, el proceso de votación y el control de eventos de notificación (además de servicios de gestión de la plataforma, accedidos por los administradores de la misma). Éste interactúa con bases de datos como Amazon MemoryDB for Redis (para control de los votos) y Amazon DynamoDB (que se utiliza para distintos propósitos: caché de información de actualidad, datos relacionados con el feed de redes sociales, gestión de imágenes estáticas y gestión de votaciones. Los servicios que cubren la necesidad de backend están implementados con microservicios y montados sobre Amazon Elastic Container Service (Amazon ECS) en modo serverless (AWS Fargate). Para conectar el API Gateway con dichos servicios, se define una arquitectura que involucra a un Network Load Balancer y un Application Load Balancer.
  • Reportes y control de conformidad: A través del servicio de Amazon Athena se extrae todos los reportes de conformidad y analitica del evento.
  • Repositorio de versiones: Con el servicio de Amazon Elastic Container Registry (Amazon ECR) se almacena las imágenes del container que soporta los servicios de backend.

3. Administradores de la plataforma

Existe un proceso paralelo que se encarga de monitorizar la plataforma en tiempo real (a través de Amazon CloudWatch). Dicho proceso de observabilidad, además de proporcionar métricas en tiempo real, se integra con un proceso de persistencia (utilizando Amazon Kinesis Data Firehose) en Amazon Simple Storage Service (S3) que permitirá el posterior análisis.

Existen una serie de componentes adicionales que se responsabilizan de distintos componentes:

  • Amazon Route53 gestiona el DNS.
  • AWS Certificate Manager (ACM) administra la emisión de certificados SSL.
  • AWS Systems Manager Parameter Store almacena todos los parámetros esenciales para el funcionamiento de aplicaciones móviles y del administración de la plataforma.
  • AWS CloudTrail se utiliza para el seguimiento de solicitudes y cuotas de servicios como Amazon Cognito Identity Pool y Amazon Pinpoint, además de para la monitorización de seguridad y control de cambios.
  • Amazon Athena se utiliza para generar los informes de votación a través de consultas a los logs de conformidad almacenados en Amazon S3, asegurando la trazabilidad de todos los votos en la plataforma ante los notarios del evento.

Análisis de los resultados obtenidos

Para determinar el rendimiento del sistema, se han considerado distintas métricas:

  • Total de usuarios registrados por semana: nos proporciona un idea de cuál va a ser el volumen de peticiones a la plataforma. Se contabiliza por semana para tener una granularidad a nivel de gala.
  • Número de peticiones totales por semana: nos da visibilidad de la cantidad de interacciones que se producen de cara a la plataforma. En general, un mayor número de usuarios hará que el número de peticiones se incremente.
  • Número de votos por semana: votos para salvar a uno de los concursantes semanales, contabilizados a nivel de semana.
  • Voto extra (en directo): votos registrados durante la emisión de la gala

Total de usuarios registrados por semana

El número de usuarios registrados en la plataforma ha ido creciendo de manera regular (alrededor de un 18% con respecto a la gala precedente). Antes de la gala final se habían registrado más de 1.5 millones de usuarios.

grafico user

Número de peticiones totales por semana

Cada usuario puede enviar múltiples peticiones (de distinto tipo) a la plataforma a través de la aplicación móvil. Dado un incremento semanal de usuarios registrados, el número de peticiones a la plataforma ha seguido una tendencia de crecimiento similar. En momentos de votos extra durante las galas se ha alcanzado un pico de más de 102K peticiones por segundo, teniendo que soportar dicha carga un único punto de acceso (montado con AWS AppSync).

grafico peticiones v1

Número de votos por semana

El evento permite 1 voto diario para un mismo usuario y único dispositivo. Cada usuario en un dispositivo podrá votar, por tanto, un máximo de 7 veces a la semana (sin contar el voto extra).  La tendencia de votaciones ha sufrido fluctuaciones, pero manteniendo valores superiores a los 5 millones después de la Gala 5.

votos semanales v1

Voto extra (en directo)

En día de Gala (en la mayoría de las Galas) se abre la oportunidad a los usuarios para que realicen un voto más antes de que finalice la Gala. Es en estos momentos donde se encuentran los picos más grandes, donde miles de usuarios votan en un intervalo de tiempo para salvar a su concursante favorito. La tendencia a lo largo de las Galas ha ido creciendo en número de votos extra.

votos extra v1

En este proyecto se ha llevado a cabo un desafío nada fácil de solucionar: un proyecto capaz de responder peticiones de millones de usuarios en distintas geografías (España y Latinoamérica), con capacidades de interacción con las Galas de Operación Triunfo en tiempo real y con el gran desafío de poder soportar picos elevados sin que las peticiones sufran ningún impacto ni en rendimiento ni en latencia. Además, la plataforma ha garantizado la atomicidad, consistencia, unicidad y durabilidad de los votos con un rendimiento en microsegundos, proporcionando una experiencia de usuario única.

A través de los resultados mostrados, hemos visto cómo la interacción con la plataforma implementada ha ido creciendo de forma gradual, sin sufrir impacto alguno a pesar del incremento de peticiones y de picos de los mismos.

La arquitectura diseñada ha cubierto todos los requisitos establecidos inicialmente y superado todas las expectativas iniciales.

Author

Robot

Ronald Teijeira, AWS Solution Architect, AWS / André Marzulo, Senior Consultant, SoftwareOne