El middleware Nora de Setplex.
Conozca Nora: el middleware de nueva generación de Setplex. Ya sea en la nube o en local, nuestra arquitectura orientada a microservicios nos permite escalar bajo demanda para satisfacer las crecientes necesidades tanto de las empresas que buscan distribuir OTT/IPTV a nivel global como de los nuevos servicios de streaming que esperan un crecimiento rápido.
Diseño de arquitectura orientada a microservicios
Una arquitectura orientada a microservicios (MOA) conlleva una complejidad adicional a cambio de una mayor flexibilidad. En una aplicación monolítica, todas las partes están, por así decirlo, en una sola caja. Por lo tanto, se pueden declarar las dependencias “en el código” sin preocuparse demasiado por los problemas de despliegue. Todas las partes se entregan juntas en el momento del despliegue.
Con una MOA, todas las partes están distribuidas “a través” de la red. Por ello, hay que diseñar los microservicios para que funcionen “en conjunto” pero, al mismo tiempo, de forma independiente, para que la aplicación global esté en funcionamiento. La configuración implica identificar los microservicios de la red y habilitar el acceso autorizado a todos los microservicios que componen la arquitectura orientada a microservicios. La tarea incluye proporcionar las credenciales para que la MOA pueda acceder a cada microservicio en particular y ajustar la configuración del firewall y del router a nivel físico del funcionamiento de la aplicación.
Como se ha mencionado anteriormente, los microservicios ofrecen mayor flexibilidad en términos de mantenimiento y actualización, pero esa flexibilidad tiene el coste de una mayor complejidad.
Balanceo de carga
El balanceo de carga es una estrategia fundamental para crear eficiencias en el despliegue de una MOA.
El balanceo de carga consiste en distribuir eficientemente el tráfico de red entrante entre un grupo de servidores backend, también conocido como granja de servidores o pool de servidores.
Un balanceador de carga actúa como el “policía de tráfico” situado frente a los servidores, enrutando las solicitudes de los clientes entre todos los servidores capaces de atenderlas de manera que se maximice la velocidad y la utilización de la capacidad, garantizando que ningún servidor se vea sobrecargado, lo que podría degradar el rendimiento. Si un servidor cae, el balanceador de carga redirige el tráfico a los servidores restantes en línea. Cuando se añade un nuevo servidor al grupo, el balanceador de carga comienza automáticamente a enviarle solicitudes.
El balanceo de carga puede realizarse en distintas capas del Modelo de Referencia de Interconexión de Sistemas Abiertos (OSI) para redes.
El balanceo de carga de capa 7, que utiliza Setplex, consume más CPU que el balanceo de carga de capa 4 basado en paquetes, con la ventaja de que raramente causa una degradación del rendimiento en un servidor moderno. El balanceo de carga de capa 7 permite al balanceador tomar decisiones más inteligentes, lo que resulta en una optimización global del sistema.
Almacenamiento de sesión
El almacenamiento de sesión es una solución óptima en la que las sesiones de los clientes no se almacenan en la propia aplicación, sino en el almacenamiento de sesión. Con esto implementado, podemos abrir una sesión en cualquier nodo elegido y todos los demás nodos del sistema verificarán las solicitudes de los clientes con la sesión almacenada y realizarán cambios de forma independiente. Y los microservicios, diseñados con los principios de las 12 factores en mente, son completamente sin estado, lo que significa que no almacenan datos, por lo que todos los datos compartidos deben guardarse y recuperarse desde fuera de la aplicación.
Kubernetes
Las complejidades introducidas por un modelo de arquitectura orientada a microservicios requieren el uso de la orquestación de contenedores.
Afortunadamente, las complejidades de crear, desplegar y dar soporte a una MOA han revelado patrones de diseño que se han ido haciendo bien conocidos a lo largo de los años. A su vez, estos patrones han sido utilizados para crear marcos de orquestación bien adaptados al soporte de MOAs. Probablemente el más conocido de estos marcos de orquestación es Kubernetes, también conocido como K8s.
Kubernetes (K8s) es un logro técnico considerable. A pesar de su complejidad, este tipo de marco de orquestación es necesario para ejecutar una MOA a escala. Una MOA tiene muchas partes en movimiento, y cualquiera de ellas puede fallar en cualquier momento; por lo tanto, para ejecutar una aplicación orientada a microservicios de forma fiable, es necesario asumir la complejidad de un marco de orquestación.
Arquitectura K8s
Kubernetes (K8s) es la herramienta de orquestación de contenedores más utilizada. Es mantenida por la comunidad, orquesta la mayoría de los microservicios del mercado y gestiona de hecho muchos servicios en la nube.
Los beneficios que ofrece Kubernetes —y las herramientas de orquestación en general— incluyen los siguientes:
- Alta disponibilidad: las aplicaciones no tienen tiempo de inactividad y siempre son accesibles para el usuario.
- Autocuración. Cuando un contenedor falla o no está en buen estado, Kubernetes lo reemplaza automáticamente para mantener la configuración de estado deseada y la salud general de la aplicación.
- Gestión declarativa de la configuración y control de versiones. Las configuraciones de Kubernetes se almacenan en archivos con formato YAML que pueden ser controlados con software de control de versiones, como Git. Las configuraciones pueden aplicarse para crear o actualizar recursos.
- Multi-nube y bare metal. Kubernetes permite a los equipos de TI elegir la plataforma en la nube donde alojar las cargas de trabajo, como Google Cloud Platform, Microsoft Azure, AWS o bare metal, para evitar la dependencia de un proveedor específico.
- Descubrimiento de servicios y balanceo de carga. Kubernetes expone los contenedores en pods, o grupos de pods, utilizando direcciones DNS o IP para que otros microservicios puedan consumir esos recursos.
- Escalabilidad. Ante una alta demanda o un aumento de la carga, Kubernetes escala horizontalmente el número de contenedores que ejecutan un microservicio para evitar problemas de rendimiento.
- Cero tiempo de inactividad. Los despliegues de Kubernetes crean pods adicionales con una imagen recién publicada sin destruir los contenedores existentes, para garantizar que no haya tiempo de inactividad. Una vez que los nuevos contenedores están en funcionamiento y en buen estado, los equipos pueden implementar actualizaciones y eliminar los contenedores antiguos. Si los nuevos contenedores fallan, los equipos de TI pueden revertir los cambios con un tiempo de inactividad mínimo.
Con todo lo anterior, K8s nos proporciona una solución sencilla para soportar una característica muy importante de nuestro sistema: la capacidad de ser agnóstico a la nube, con la posibilidad de ser desplegado en soluciones de nube privada, pública o incluso híbrida, así como la capacidad de soportar cualquier solución on-premise.
Motor de recomendación de contenidos
Setplex ha invertido considerablemente en un software de motor de recomendaciones, aprovechando la inteligencia artificial y el aprendizaje automático para ofrecer a los consumidores sugerencias y descubrimiento de contenidos de primer nivel, con el fin de aumentar la participación de los usuarios, extendiendo así el tiempo de visualización y reduciendo la tasa de abandono.
¿Qué diferencia a nuestro motor de recomendaciones de los demás en el mercado?
- Las recomendaciones se desarrollan mediante algoritmos de “aprendizaje profundo”; al aprender los intereses y el comportamiento de los usuarios, la plataforma recomienda una selección de contenidos altamente relevantes y atractivos para cada usuario.
- Nuestras recomendaciones se actualizan diariamente y se presentan a los consumidores a través de sugerencias sencillas en la pantalla de inicio de nuestras aplicaciones cliente.
- Los algoritmos de recomendación de canales de televisión se basan no solo en qué canales exactos se vieron, sino también en qué momento del día se vieron, ya que los patrones de visualización son indicadores clave del contenido realmente consumido (por ejemplo, el informativo nocturno a las 22:00 frente a una comedia ligera por la tarde).
- Los tiempos de visualización de contenido de “mini-duración” (por ejemplo, menos de 10 segundos en el caso de un canal de televisión) no se incluyen en nuestros algoritmos de recomendación, lo que evita que las recomendaciones se vean afectadas por contenido con el que el espectador no estuvo realmente comprometido.
- El contenido se divide en 3 grupos por “tipo” (película, serie de televisión, canal de televisión). Para ilustrarlo, si un usuario normalmente ve mucho deporte al ver canales de televisión, pero prácticamente ninguna película independiente de temática deportiva, nuestras agrupaciones de contenido evitan una recomendación inapropiada de una película deportiva, ya que el usuario solo ve deporte como parte de sus hábitos de visualización de canales de televisión.
- Las recomendaciones incluirán los tiempos de visualización y las elecciones realizadas en TODAS las plataformas en las que un usuario ha visto contenido (por ejemplo, Web, WebOS, iOS, tvOS, teléfonos Android). Así, las recomendaciones que se hagan a un usuario cuando esté en un SmartTV se basarán no solo en su visualización previa en SmartTV, sino que también tendrán en cuenta su visualización anterior en aplicaciones móviles y de escritorio.
Cómo funciona
El motor recopila y sintetiza datos de visualización desde múltiples perspectivas, entre ellas:
- Recopila y compara los hábitos de visualización globales (de todos los usuarios) con los hábitos globales de “todos los usuarios” en base a cada dispositivo (SamsungTV, web, teléfono Android).
- Agrupa dinámicamente a los usuarios en función de sus niveles de consumo de visualización. En otras palabras, busca usuarios con niveles similares de tiempo de visualización y los agrupa como una de las múltiples formas en que crea recomendaciones.
- Dentro del punto 2 anterior, agrupa dinámicamente a los usuarios en función de sus hábitos históricos de visualización de contenidos y desarrolla “probabilidades de visualización” para cada pieza de contenido, creando así “clasificaciones internas” dentro de cada grupo de usuarios.
- Como resultado, todo el contenido en nuestra base de datos de analítica tendrá múltiples “clasificaciones internas”, cada una de las cuales está asociada a un grupo de usuarios diferente.
- Basándose en las “clasificaciones internas” dentro de cada grupo de usuarios, el motor devuelve una lista de contenido recomendado que el usuario específico aún no ha visto, basándose en el conjunto de clasificaciones internas de ese grupo.
En resumen, nuestro motor proporciona sugerencias de contenido hiperpersonalizadas. Al hacerlo, transformamos los patrones históricos de visualización de los clientes en relaciones profundas y duraderas que desbloquean un nuevo nivel de crecimiento para nuestros clientes.
en