Créations/tests rapides, fiables et économiques à grande échelle avec EngFlow Remote Execution sur AWS

Comment a été ce contenu ?

Même si les organisations d'ingénierie modernes adoptent des architectures de microservices et décomposent leurs applications monolithiques, les bases de code volumineuses et complexes sont monnaie courante. Plus de code entraîne des cycles de création/test plus longs, ce qui dégrade la productivité des développeurs et augmente les coûts. En outre, les budgets de calcul limités d'intégration continue (CI) entraînent des files d'attente d'exécution, ce qui réduit encore la productivité de l'ingénierie.

EngFlow permet aux entreprises modernes d'améliorer leurs cycles de création et de test afin d'optimiser la productivité des équipes de développement logiciel grâce à l'exécution à distance et à la mise en cache.

Pour fournir une solution performante, fiable et rentable à ses clients, EngFlow a observé les bonnes pratiques du cadre AWS Well-Architected. Dans cet article, nous allons nous concentrer sur les pratiques qui ont contribué à améliorer le rapport qualité-prix et la disponibilité.

Architecture du service d'exécution à distance EngFlow

Les clients d'EngFlow interagissent avec le service d'exécution à distance par un canal privé et sécurisé, protégé sur plusieurs couches à l'aide de différentes technologies réseau telles que le Network Load Balancer et les points de terminaison, les sous-réseaux et les groupes de sécurité du cloud privé virtuel (VPC) (voir Figure 1).

Les planificateurs, qui s'exécutent sur des instances Amazon Elastic Compute Cloud (Amazon EC2) dotées de volumes Amazon Elastic Block Store (Amazon EBS), divisent chaque demande de création/test en parties indépendantes et placent les tâches de création/test individuelles sur les instances de travail existantes, qui répondent aux exigences de calcul et de mémoire en la matière. AWS Auto Scaling est utilisé pour fournir des fonctionnalités d'autoréparation en gérant un nombre fixe d'instances de planificateur en cours d'exécution. Les instances du planificateur Amazon EC2 défaillantes sont remplacées automatiquement sans intervention humaine.

Le logiciel d'exécution à distance intégré à EngFlow distribue les actions de création/test sur des centaines, voire des milliers d'instances Worker, qui s'exécutent toutes sur des instances EC2 avec des volumes EBS montés. Dans ce cas, EngFlow utilise AWS Auto Scaling pour adapter la capacité de calcul requise à la demande, en minimalisant le gaspillage et en maximisant l'utilisation. Pour répondre aux différents besoins des clients et proposer une solution rentable, les instances Worker peuvent être exécutées sur des instances EC2 à la demande ou Spot. EngFlow permet de revenir aux instances à la demande pour une plus grande fiabilité.

Remote Execution est associée à la solution de mise en cache à distance intégrée à EngFlow pour éviter la duplication du travail. En mettant en cache tous les artefacts de création/test sur le stockage local d'une organisation, EngFlow permet aux équipes de télécharger les artefacts de création/test précédents plutôt que d'exécuter à nouveau elles-mêmes la fonction création/test. Le temps de création/test s'en trouve réduit et le coût par fonction création/test diminue. À mesure que les instances du cloud apparaissent et disparaissent, les artefacts de création/test sont synchronisés de manière durable et rentable avec Amazon Simple Storage Service (Amazon S3) pour un accès permanent.

Pour soutenir les opérations lorsqu'elle est déployée sur un compte client, la solution d'exécution à distance d'EngFlow utilise les services standard AWS comme Amazon CloudWatch Logs, Metrics et Alarms.

Examinons de plus près comment EngFlow permet de créer des versions rapides, fiables et rentables sur AWS et comment l'entreprise a identifié les domaines dans lesquels sa solution d'exécution à distance pourrait être améliorée dans le cadre de son évaluation Well-Architected.

Performances

De nombreux clients d'EngFlow considèrent la rapidité de création/test comme l'une des principales propositions de valeur d'EngFlow. Cette rapidité se traduit par une productivité accrue des développeurs, un délai de mise sur le marché plus court et la possibilité d'effectuer davantage d'expériences en même temps, entre autres. L'exécution d'une fonction création/test CI dans le cloud et l'utilisation de nœuds de calcul distribués de la dernière et plus puissante génération de CPU au lieu d'un poste de travail local ont permis à des clients comme Blue River Technology de multiplier par 9 les performances de leur fonction création/test CI.

Les ingénieurs d'EngFlow permettent à leurs clients de sélectionner l'instance EC2 la plus performante et la plus rentable qui répond le mieux à leurs besoins spécifiques, comme les processeurs AWS Graviton3 de dernière génération. Ils utilisent les derniers volumes EBS gp3, qui fournissent la dernière génération de volumes SSD à usage général aux clients pour s'assurer que les fonctions créations/tests sont aussi rapides que possible. Ce résultat a été obtenu grâce à l'analyse de la charge de travail unique du client, en s'appuyant sur les mesures standard et personnalisées de CloudWatch.

En outre, la possibilité d'affiner la configuration AWS Auto Scaling pour les instances Worker permet à EngFlow de trouver l'équilibre optimal entre capacité et coût afin que ses clients disposent toujours d'une capacité de calcul et de stockage suffisante pour démarrer immédiatement une nouvelle fonction création/test programmée, sans gaspiller d'argent en ressources inutilisées.

Fiabilité

EngFlow a observé les bonnes pratiques d'AWS pour fournir un service fiable dès le départ afin d'exécuter des fonctions créations/tests stratégiques à délai réduit pour des milliers de développeurs.

Leur configuration AWS Auto Scaling s'étend sur trois zones de disponibilité AWS dans la région AWS sélectionnée pour s'adapter à la demande d'un client, résister à une interruption de service locale et fournir des capacités d'autoréparation en remplaçant automatiquement les instances Amazon EC2 défaillantes. Amazon S3 complète la solution en tant que service de stockage durable et hautement disponible pour les artefacts de création/test.

Au cours de l'examen Well-Architected, EngFlow a découvert un domaine dans lequel il était possible d'améliorer la fiabilité de son service. Amazon EC2 Auto Scaling utilise des politiques de résiliation pour déterminer les instances auxquelles il met fin en premier lors d'événements de mise à l'échelle horizontale. Les politiques de résiliation définissent les critères de résiliation utilisés par Autoscaling lors du choix des instances à résilier.

Par défaut, la politique de résiliation sélectionne la zone de disponibilité qui compte le plus grand nombre d'instances. Il met fin à l'instance qui a été lancée à partir du modèle de lancement ou de la configuration de lancement le plus ancien. Si les instances ont été lancées à partir du même modèle de lancement ou de la même configuration de lancement, Amazon EC2 Auto Scaling sélectionne l'instance la plus proche de l'heure de facturation suivante et y met fin.

EngFlow a observé que cette politique de résiliation par défaut mettait parfois fin à des instances EC2 qui effectuaient un travail précieux pour nos clients. Bien qu'EngFlow Remote Execution ait automatiquement réessayé le travail, il en résultait des exécutions de fonctions création/test plus longues, des coûts plus élevés et des demandes de renseignements de la part des clients. En créant sa propre politique de résiliation personnalisée associée à l'utilisation de la protection évolutive des instances, EngFlow a pu accroître sa fiabilité et améliorer son efficacité.

Rentabilité

Les clients d'EngFlow exécutent des fonctions créations/tests de CI à grande échelle, en utilisant des centaines, voire des milliers d'instances EC2 simultanément aux heures de pointe. Cette charge de travail constitue un point idéal pour rechercher des opportunités d'optimisation des coûts pour le compte de nos clients.

Pour économiser jusqu'à 90 % sur les coûts de calcul par rapport à la demande, dans notre étude Well-Architected, nous avons discuté avec EngFlow de la possibilité d'activer les instances Spot pour leur exécution à distance, sur la base du parc d'instances Spot Amazon EC2.

Selon Yannic Bonenberger, ingénieur chez EngFlow « Cette fonctionnalité représente une formidable opportunité pour nos clients et pour nous de gagner en efficacité en termes de coûts lors de l'exécution sur AWS. Nous avons adoré le mettre en œuvre. En raison de leur conception, nos instances Worker sont apatrides et gèrent les interruptions spontanées grâce à un mécanisme de nouvelle tentative robuste. Les instances Spot AWS étaient parfaitement adaptées, ce qui a permis à EngFlow et à nos clients d'économiser 70 % en moyenne sur les coûts de calcul. »

En travaillant sur l'intégration de l'instance Spot, EngFlow a également amélioré l'utilisation globale des ressources de l'instance EC2 en améliorant notre algorithme de planification de l'instance Worker, ce qui a permis à nos clients de réaliser des économies supplémentaires.

Après avoir intégré les instances Spot, EngFlow a écouté les notifications d'interruption des instances Spot, qui sont émises deux minutes avant qu'Amazon EC2 arrête ou mette fin à votre instance Spot. Ils pourraient ainsi éviter de programmer de nouvelles tâches de création/test sur des instances qui seront bientôt récupérées. Dans le même ordre d'idées, l'architecte de solutions AWS a également recommandé de suivre les recommandations de rééquilibrage des instances EC2 afin d'éviter de programmer de nouvelles tâches de création/test sur des instances présentant de fortes chances d'être récupérées rapidement. Après avoir mis en œuvre ces recommandations, les clients d'EngFlow ont constaté une diminution du nombre de nouvelles tentatives de création/test en raison de la fermeture prématurée des instances EC2.

Une approche prometteuse pour les fonctions créations/tests modernes

Les grandes entreprises technologiques agiles, telles que les plateformes de réseaux sociaux, les marchés des voyages de courte durée et les constructeurs automobiles, s'appuient sur la plateforme EngFlow pour maintenir la fluidité des ingénieurs et conserver l'agilité nécessaire au développement de logiciels modernes. AWS est au cœur du succès d'EngFlow, en lui offrant une architecture flexible et une rentabilité, ce qui se traduit directement par un avantage concurrentiel pour les clients finaux.

« La puissance que vous obtenez à portée de main est énorme. C'est la première fois dans l'histoire que vous pouvez obtenir 1 000 machines en tant que développeur et essayer quelque chose à grande échelle. » – Ulf Adams, directeur technique chez EngFlow.

Christian Mueller

Christian Mueller

En sa qualité d'architecte de solutions principal pour un client stratégique du secteur automobile chez Amazon Web Services (AWS), Christian aide ce dernier à exploiter tout le potentiel du cloud AWS et à accroître ainsi son succès. Il s'intéresse à tout ce qui touche au domaine du serverless et apprécie de contribuer à la grande transformation qui s'opère actuellement dans l'industrie automobile, depuis les véhicules connectés et autonomes jusqu'aux véhicules définis par logiciel.

Luis Pino

Luis Pino

Luis est ingénieur logiciel chez EngFlow et est chargé de veiller à ce que les infrastructures mises en place chez EngFlow fonctionnent le mieux possible. Par le passé, il a participé au développement de Bazel et plus particulièrement des API externes et de la prise en charge de MacOS pendant ses cinq années passées chez Google. Il est également titulaire d'un doctorat en informatique obtenu à l'École polytechnique et est spécialisé dans la vérification formelle des logiciels.

Comment a été ce contenu ?