Blog de Amazon Web Services (AWS)

Screening Eagle: Optimización de CI/CD y de la experiencia del usuario en Amazon AppStream 2.0

Proporcionar a los usuarios finales una experiencia de usuario uniforme es crucial cuando se trabaja con aplicaciones de cómputo intensivo. Amazon AppStream 2.0 permite a los clientes distribuir mediante streaming sus aplicaciones directamente desde AWS a cualquier dispositivo, brindando una experiencia de usuario fluida independientemente de las capacidades del terminal final. Ésto elimina la necesidad de comprar, administrar, monitorizar, y actualizar las estaciones de trabajo, y permite a los administradores gestionar de forma centralizada las actualizaciones del software de las aplicaciones, proteger su distribución y, como resultado, reducir los costes operacionales al mínimo.

Sobre Screening Eagle

Screening Eagle, una empresa fusión de Dreamlab y Proceq, proporciona una plataforma tecnológica para la inspección inteligente del entorno construido. La plataforma combina software y sensores para generar datos que mejoren la toma de decisiones en cuanto a la construcción y mantenimiento de activos. Screening Eagle tiene presencia en Suiza, Singapur, España, EE.UU., Reino Unido, China, Emiratos Árabes y Brasil.

El reto

Screening Eagle desarrolló Workspace, una plataforma basada en la nube que contiene y unifica el acceso a todas las aplicaciones de la empresa a través de un único portal web. Para Screening Eagle, era esencial brindar una experiencia consistente en todas las aplicaciones de Workspace, que se ejecutan indistintamente en dispositivos Windows, OSX, Linux, tabletas iOS y Android, y entornos web.

Insights, una aplicación propietaria de Screening Eagle basada en Windows, es su aplicación más intensa computacionalmente y requiere GPU y gran cantidad de memoria para ejecutarse. Para integrar Insights en la suite Workspace sin afectar a la experiencia del usuario, Screening Eagle decidió distribuir esta aplicación utilizando Amazon AppStream 2.0.

Durante el proceso de integración, Screening Eagle se marcó dos objetivos principales:

  1. Automatizar por completo el proceso de integración y despliegue continuo (CI/CD) de nuevas actualizaciones en las aplicaciones a las flotas de instancias de Amazon AppStream 2.0.
  2. Embeber el flujo de retransmisión de Amazon AppStream 2.0 en el portal web de Workspace, y para ello tuvo que integrar completamente ambos entornos en términos de almacenamiento, seguridad e interacción con el usuario.

Creación de un pipeline de CI/CD totalmente automatizado para las actualizaciones en la aplicación

La estrategia de desarrollo de Screening Eagle fue, en primer lugar, minimizar la cantidad de veces que las imágenes de AppStream 2.0 se reconstruyen y se despliegan en las flotas existentes, ya que debido a la personalización realizada por Screening Eagle es un proceso que consume mucho tiempo; y en segundo lugar, para aquellas ocasiones requeridas, crear un pipeline completo de CI/CD para conseguir un despliegue automático de actualizaciones a las flotas de Amazon AppStream 2.0 en producción.

Para abordar el primero, Insights ya disponía de su propio proceso de CI/CD para crear, testear y distribuir sus archivos binarios. Por lo tanto, la distribución de actualizaciones en la aplicación se puede realizar en la fase de arranque de las instancias de Amazon AppStream 2.0, en lugar de en la fase de creación de las imágenes. Ésto se hace especificando qué versión de la aplicación debe descargarse y ejecutarse en el campo de contexto del script de sesión de AppStream 2.0, que es una cadena de texto que se envía a la sesión de Amazon AppStream 2.0 en el momento del inicio.

Bootstrap AppStream 2.0

De esta manera, únicamente es necesario reconstruir las imágenes de Amazon AppStream 2.0 cuando hay cambios en las dependencias de la aplicación, en la configuración de Windows, o en las actualizaciones del sistema operativo.

Para la creación del pipeline automático, era necesario poder ejecutar comandos de forma programática en las instancias constructoras de imágenes (Amazon AppStream 2.0 Image Builder). Ésto se puede realizar utilizando una instancia EC2 de Windows como proxy para mandar comandos remotos de AWS SSM al Image Builder. – Para más detalle, consultar el blogpost: “How to use SSM Run to perform programmatic actions on AppStream 2.0 image builders”. Siguiendo esta recomendación, Screening Eagle desarrolló un script que ejecuta el siguiente proceso y que automatiza el despliegue de actualizaciones y reconstrucción de las flotas de AppStream 2.0.

Arquitectura Construcción de la Imagen

  1. Crear un Image Builder a partir de una de las instancias base de Amazon AppStream 2.0.
  2. Desplegar una instancia proxy de Windows en la misma subred que el Image Builder.
  3. Invocar SSM Run para enviar un script de Powershell que se ejecutará en la instancia proxy. Dicha instancia enviará los comandos para que se ejecuten de forma remota en el Image Builder. Este script configura la autenticación entre el proxy y el Image Builder, instala las bibliotecas y dependencias necesarias, y utiliza AppStream 2.0 Image Assistant para añadir y eliminar aplicaciones del Image Builder y, finalmente, para crear una imagen de AppStream 2.0.
  4. Terminar la instancia de Image Builder y la instancia proxy.
  5. Actualizar las flotas de Amazon AppStream 2.0 con la nueva imagen en el entorno de integración para ejecutar las pruebas de integración correspondientes. Finalmente, desplegar las imágenes en el entorno de producción.

Este procedimiento garantiza que sea un proceso repetible y predecible, ya que cada iteración comienza con instancias de Image Builder y proxy recién creadas.

Integración de Insights en el entorno web de Workspace

Amazon AppStream 2.0 permite a los clientes acceder a sus aplicaciones desde navegadores compatibles con HTML5. Screening Eagle deseaba integrar la aplicación Insights, que se ejecuta en Amazon AppStream 2.0, en la plataforma web de la suite de aplicaciones Workspace y, así proporcionar un acceso web unificado y trasparente a los usuarios.

Para lograrlo, tuvieron que integrar ambas aplicaciones en términos de autenticación, autorización de servicios y almacenamiento; y permitir que interactúen entre sí para realizar acciones como cargar y descargar archivos.

Por ejemplo, pongamos que el usuario quiere subir un archivo local a Insights, la aplicación que se ejecuta en la sesión de AppStream 2.0. Dado que Insights es en realidad un stream de video, al abrir un explorador de archivos desde dicha aplicación, ésta mostraría el sistema de ficheros local de la instancia de Amazon AppStream 2.0; mientras que si se abriese desde una aplicación web tradicional como Workspace se mostrarían los archivos locales del terminal del usuario final. Por lo tanto, era necesario desarrollar un mecanismo de mensajería entre la sesión de Amazon AppStream 2.0 de Insights y la aplicación web Workspace.

Screening Eagle resolvió este desafío mediante la implementación de un sistema de comunicación basado en websockets. Implementaron una arquitectura serverless formada por una API de websockets ejecutada sobre Amazon API Gateway y una lógica de gestión de comunicación ejecutada sobre AWS Lambda. – Para más detalle sobre la implementación técnica, consultar el siguiente artículo: Announcing WebSocket APIs in Amazon API Gateway. De esta manera y continuando con el ejemplo anterior, tendríamos el siguiente flujo de comunicación:

Arquitectura Integración en Workspace

  1. El usuario solicita abrir un explorador de archivos desde Insights para subir un fichero a la aplicación.
  2. Insights abre una nueva conexión websocket con Workspace a través de Amazon API Gateway y AWS Lambda y manda un mensaje para que Workspace muestre un explorador de archivos local al usuario.
  3. La aplicación Workspace abre una ventana en el navegador con un explorador de archivos en la máquina local del usuario.
  4. El usuario sube su fichero.
  5. Workspace sube el archivo a Amazon S3.
  6. Workspace abre una nueva conexión websocket y manda un mensaje de confirmación a Insights con la URL del objeto de Amazon S3.
  7. Insights descarga el archivo de Amazon S3 a la instancia de AppStream 2.0.
  8. Insights muestra al usuario el fichero subido.

Este mecanismo de comunicación se puede emplear en otras acciones, como mostrar notificaciones al usuario o el envío de credenciales de autenticación.

Esta arquitectura serverless tiene varias ventajas. AWS Lambda garantiza una escalabilidad ilimitada. Amazon API Gateway garantiza la disponibilidad del servicio, ya que maneja las conexiones y evita tiempos de inactividad, incluso cuando se implementan actualizaciones en las funciones de AWS Lambda.

Finalmente, para mantener y redirigir la autenticación del usuario desde la plataforma Workspace a la sesión de AppStream 2.0 en Insights, Screening Eagle aprovechó nuevamente el contexto de la sesión de inicio descrito en la sección del pipeline de CI/CD. Al incluir los datos de la sesión del usuario y el token de autenticación en esta cadena de texto, Insights recibe la información que necesita para autenticar al usuario e inicializar la aplicación. En caso de que, pasado un tiempo, dicho token inicial expire, Insights puede abrir una conexión websocket con Workspace y mandar un mensaje para pedir una renovación del token de autenticación siguiendo el mismo procedimiento descrito anteriormente.

Conclusión

Screening Eagle aprovechó Amazon AppStream 2.0 para distribuir a sus usuarios mediante streaming su aplicación de ingeniería más intensa. Amazon AppStream 2.0 les ha permitido proporcionar una experiencia de usuario receptiva y fluida, independientemente de las capacidades de la estación de trabajo. El pipeline automático de CI/CD les ha permitido desplegar las actualizaciones a las flotas de producción de AppStream sin ninguna intervención manual, mientras que la arquitectura basada en websockets ha permitido una integración completa y trasparente de Insights con la plataforma existente, proporcionado a los usuarios la posibilidad de interactuar con los mismos elementos de la interfaz con los que estaban acostumbrados a trabajar.

Sobre los autores

Jesús Hormigo

Jesús Hormigo

Jesús Hormigo es informático, tecnólogo e inventor comprometido con el desarrollo de hardware y software de tecnologías que generan un impacto significativo y sostenible en distintas facetas de la vida diaria, desde la atención médica hasta el entretenimiento deportivo. Actualmente es Responsable de Nube e Inteligencia Artificial en Screening Eagle Technologies, donde lidera un equipo de ingenieros talentosos en la creación de soluciones únicas basadas en IA y visión artificial en la nube para la industria de la inspección.

Julián Martínez

Julián Martínez

Julián Martínez es Site Reliability Engineer basado en Málaga, y lleva trabajando con entornos Linux de alto rendimiento desde hace más de 15 años. Actualmente está centrado en ayudar a los equipos de infraestructura de Screening Eagle a mejorar el rendimiento de sus cargas de trabajo e implementar las mejores prácticas en el entorno de AWS. Julián contribuye a proyectos populares en el mundo de Kubernetes y la Inteligencia Artificial.

Carmen Pino

Carmen Pino

Carmen Pino es arquitecta de soluciones en AWS basada en Madrid. Trabaja con PYMEs españolas ayudándolas a definir, desplegar, y optimizar sus cargas de trabajo en la nube de AWS. Aunque su trayectoria profesional ha estado ligada mayoritariamente al mundo del networking tradicional, hoy tiene un especial interés en las tecnologías de analítica de datos e información. Su pasión además es la utilización de la tecnología como motor de impacto positivo en la sociedad actual.