Creaciones y pruebas rápidas, fiables y rentables a escala con Remote Execution de EngFlow en AWS

¿Qué le pareció este contenido?

A pesar de que las organizaciones de ingeniería modernas adoptan arquitecturas de microservicios y descomponen sus aplicaciones monolíticas, las bases de código grandes y complejas son comunes. Más código conlleva ciclos de creación y prueba más largos, lo que reduce la productividad de los desarrolladores y aumenta los costos. Además, los presupuestos de computación de integración continua (CI) finitos provocan colas de ejecución, de modo que se reduce aún más la productividad de la ingeniería.

EngFlow ayuda a las organizaciones modernas a mejorar sus ciclos de creación y prueba para maximizar la productividad de los equipos de desarrollo de software mediante Remote Execution y Remote Caching.

Para ofrecer una solución eficaz, fiable y rentable a sus clientes, EngFlow siguió las prácticas recomendadas de AWS Well-Architected Framework. En esta publicación, nos centraremos en las prácticas que ayudaron a mejorar la relación entre precio y rendimiento y a mejorar la disponibilidad.

Arquitectura del servicio Remote Execution de EngFlow

Los clientes de EngFlow interactúan con el servicio Remote Execution a través de un canal seguro y privado, protegido en varias capas mediante diferentes tecnologías de red, como el equilibrador de carga de red y los puntos de conexión, subredes y grupos de seguridad de nubes virtuales privadas (VPC) (consulte la figura 1).

Los programadores, que se ejecutan en instancias de Amazon Elastic Compute Cloud (Amazon EC2) con volúmenes de Amazon Elastic Block Store (Amazon EBS), dividen cada solicitud de creación o prueba en partes independientes y colocan los trabajos de creación o prueba individuales en las instancias de trabajo existentes, que cumplen con los requisitos de memoria y computación de los trabajos de creación o prueba. AWS Auto Scaling se utiliza para proporcionar funciones de resolución automática al mantener un número fijo de instancias del programador en ejecución. Las instancias del programador de Amazon EC2 que fallan se reemplazan automáticamente sin necesidad de intervención humana.

El software de Remote Execution de EngFlow distribuye acciones de creación o prueba en cientos o incluso miles de instancias de trabajo, las cuales se ejecutan en instancias de EC2 con volúmenes de EBS montados. En este caso, EngFlow utiliza AWS Auto Scaling para reducir y escalar horizontalmente la capacidad de computación requerida en función de la demanda, de modo que se minimiza el desperdicio y se maximiza la utilización. Para satisfacer las diferentes necesidades de los clientes y ofrecer una solución rentable, las instancias de trabajo pueden ejecutarse en instancias de spot o bajo demanda de EC2. EngFlow ofrece la posibilidad de volver a usar las instancias bajo demanda para obtener una mayor fiabilidad.

Remote Execution se combina con la solución Remote Caching de EngFlow para evitar la duplicación del trabajo. Al almacenar en caché todos los artefactos de creación o prueba en el almacenamiento local de una organización, EngFlow permite a los equipos descargar los artefactos de creación o prueba anteriores en lugar de volver a ejecutar la creación o prueba ellos mismos. De esta forma, se acorta el tiempo de creación o prueba y se reduce el costo por creación o prueba. A medida que las instancias de la nube aparecen y desaparecen, los artefactos de creación o prueba se sincronizan de forma duradera y rentable con Amazon Simple Storage Service (Amazon S3) para garantizar un acceso persistente.

Para respaldar las operaciones cuando se implementan en una cuenta de cliente, la solución Remote Execution de EngFlow utiliza los servicios estándar de AWS, como los registros, las métricas y las alarmas de Amazon CloudWatch.

Analicemos en profundidad cómo EngFlow permite creaciones rápidas, fiables y rentables en AWS y cómo identificaron las áreas de mejora de la solución Remote Execution al llevar a cabo la revisión de Well-Architected.

Rendimiento

Muchos clientes de EngFlow consideran la velocidad de creación o prueba como una de las principales propuestas de valor de EngFlow. Esto se traduce en una mayor productividad de los desarrolladores, un tiempo de comercialización más rápido y la capacidad de ejecutar más experimentos al mismo tiempo, solo por indicar algunas ventajas. La ejecución de una creación o prueba de CI en la nube y el uso de nodos de computación distribuida de la última y más eficiente generación de CPU en lugar de una estación de trabajo local ayudaron a clientes como Blue River Technology a aumentar 9 veces el rendimiento de la creación o prueba de CI.

Los ingenieros de EngFlow ayudan a sus clientes a seleccionar la instancia de EC2 más eficiente y rentable y que mejor se adapte a sus requisitos únicos, como los procesadores AWS Graviton3 de última generación. Utilizan los volúmenes gp3 de EBS más recientes, que proporcionan a los clientes la generación más reciente de volúmenes SSD de uso general para garantizar que las creaciones o pruebas se sean lo más rápidas posible. Para ello, se analizó la carga de trabajo única de los clientes y se utilizaron las métricas estándar y personalizadas de CloudWatch.

Además, la capacidad de ajustar la configuración de AWS Auto Scaling para las instancias de trabajo ayuda a EngFlow a encontrar el equilibrio óptimo entre la capacidad y el costo, de modo que sus clientes siempre tienen suficiente capacidad de computación y de almacenamiento para iniciar inmediatamente una nueva creación o prueba programada, sin desperdiciar dinero en recursos inactivos.

Fiabilidad

EngFlow ha seguido las prácticas recomendadas de AWS a fin de proporcionar un servicio fiable desde el principio para ejecutar creaciones o pruebas en las que el tiempo es crítico para miles de desarrolladores.

Su configuración de AWS Auto Scaling abarca tres zonas de disponibilidad de AWS en la región de AWS seleccionada para escalar en función de la demanda de un cliente, soportar una interrupción del servicio local y proporcionar capacidades de reparación automática mediante la sustitución automática de las instancias de Amazon EC2 fallidas. Amazon S3 complementa la solución como un servicio de almacenamiento duradero y de alta disponibilidad para artefactos de creación o prueba.

Durante la revisión de Well-Architected, EngFlow descubrió un área de mejora de la fiabilidad de su servicio. Amazon EC2 Auto Scaling utiliza políticas de terminación para determinar qué instancias termina primero durante los eventos de reducción horizontal. Las políticas de terminación definen los criterios de terminación que utiliza Auto Scaling al elegir qué instancias terminar.

De forma predeterminada, la política de terminación selecciona la zona de disponibilidad con más instancias. Termina la instancia que se lanzó desde la plantilla o configuración de lanzamiento más antigua. Si las instancias se lanzaron desde la misma plantilla o configuración de lanzamiento, Amazon EC2 Auto Scaling selecciona la instancia que esté más cerca de la siguiente hora de facturación y la termina.

EngFlow observó que esta política de terminación predeterminada a veces terminaba instancias de EC2 que estaban ejecutando un trabajo valioso para nuestros clientes. Si bien Remote Execution de EngFlow volvió a intentar el trabajo de forma automática, el resultado fue que las ejecuciones de creación o prueba se prolongaron más, los costos aumentaron y los clientes enviaron consultas. Al crear su propia política de terminación personalizada en combinación con el uso de la protección frente a la reducción horizontal de instancias, EngFlow pudo aumentar su fiabilidad y mejorar su eficiencia.

Rentabilidad

Los clientes de EngFlow ejecutan creaciones o pruebas de CI a gran escala y utilizan cientos o incluso miles de instancias de EC2 simultáneamente en horas punta. Esta carga de trabajo es un punto óptimo para buscar oportunidades de optimización de costos en nombre de nuestros clientes.

Para ahorrar hasta un 90 % en los costos de computación en comparación con las instancias bajo demanda, en nuestra revisión de Well-Architected analizamos con EngFlow la posibilidad de habilitar instancias de spot para el servicio Remote Execution, que se basa en la flota de spot de Amazon EC2.

“Esta característica es una gran oportunidad para nuestros clientes y para nosotros de ser más rentables al ejecutar los servicios en AWS. Nos encantó implementarla. Por diseño, nuestras instancias de trabajo no tienen estado y gestionan la terminación espontánea con un sólido mecanismo de reintento. Las instancias de spot de AWS eran la solución perfecta, ya que ahorraban a EngFlow y a nuestros clientes un promedio del 70 % en costos de computación”, explicó Yannic Bonenberger, Engineer de EngFlow.

Mientras trabajaba en la integración de las instancias de spot, EngFlow también mejoró la utilización general de los recursos de las instancias de EC2 al mejorar nuestro algoritmo de programación de instancias de trabajo, lo que se tradujo en ahorros de costos adicionales para nuestros clientes.

Una vez que EngFlow integró las instancias de spot, se tuvieron en cuenta los avisos de interrupción de las instancias de spot, que se emiten dos minutos antes de que Amazon EC2 detenga o termine su instancia de spot. De esta forma, se pudo evitar la programación de nuevos trabajos de creación o prueba en instancias que se iban a reclamar pronto. Del mismo modo, el Solution Architect de AWS también recomendó prestar atención a las recomendaciones sobre el reequilibrio de las instancias de EC2 para evitar la programación de nuevos trabajos de creación o prueba en instancias con altas probabilidades de que se reclamasen pronto. Tras implementar estas recomendaciones, los clientes de EngFlow observaron un menor número de reintentos de trabajos de creación o prueba debido a la terminación prematura de las instancias de EC2.

Un enfoque prometedor para las creaciones o pruebas modernas

Las organizaciones de tecnología grandes y ágiles, como las plataformas de redes sociales, los mercados de viajes de corta duración y los fabricantes de automóviles, se basan en la plataforma de EngFlow para mantener a los ingenieros en movimiento y mantener la agilidad necesaria para el desarrollo de software moderno. AWS es la base del éxito de EngFlow, ya que proporciona una arquitectura flexible y rentabilidad, lo que se traduce directamente en una ventaja competitiva para los clientes finales.

“Es increíble la cantidad de poder que tiene al alcance de la mano. Es la primera vez en la historia que puede tener 1000 máquinas como un solo desarrollador y probar algo a escala”, afirma Ulf Adams, CTO de EngFlow.

Christian Mueller

Christian Mueller

En su puesto de Arquitecto principal de soluciones para un cliente estratégico de automoción en Amazon Web Services (AWS), Christian les ayuda a aprovechar todo el potencial de la nube de AWS para lograr un éxito aún mayor. Le interesa todo lo relacionado con la tecnología sin servidores y disfruta de formar parte de la gran transformación que se está produciendo en el sector de la automoción, que abarca desde los vehículos conectados y autónomos hasta los definidos por software.

Luis Pino

Luis Pino

Como Ingeniero de software en EngFlow, Luis se encarga de garantizar que la configuración de la infraestructura de EngFlow funcione de la manera más fluida posible. En una vida anterior, Luis ayudó a desarrollar Bazel, centrándose en las API externas y el soporte para MacOS durante sus cinco años en Google. También es doctor en Informática por la École Polytechnique, especializado en verificación formal de software.

¿Qué le pareció este contenido?