Schnelle, zuverlässige und kosteneffiziente Builds/Tests in großem Maßstab mit EngFlow Remote Execution in AWS

Wie war dieser Inhalt?

Selbst wenn moderne Entwicklungsunternehmen Microservice-Architekturen einführen und ihre monolithischen Anwendungen zerlegen, sind große und komplexe Codebasen üblich. Mehr Code führt zu längeren Build-/Testzyklen, was die Produktivität der Entwickler beeinträchtigt und die Kosten erhöht. Darüber hinaus führen begrenzte Budgets für Continuous Integration (CI) zu Warteschlangen bei der Ausführung, was die Produktivität der Entwickler weiter einschränkt.

EngFlow hilft modernen Unternehmen, ihre Build- und Testzyklen zu verbessern und die Produktivität von Softwareentwicklungsteams durch Remote Execution und Caching zu maximieren.

Um seinen Kunden eine leistungsstarke, zuverlässige und kostengünstige Lösung zu bieten, hat EngFlow die bewährten Methoden aus dem AWS-Well-Architected-Framework befolgt. In diesem Beitrag konzentrieren wir uns auf die Praktiken, die dazu beigetragen haben, das Preis-Leistungs-Verhältnis und die Verfügbarkeit zu verbessern.

Die Architektur von EngFlows Remote Execution Service

EngFlow-Kunden interagieren mit dem Remote Execution Service über einen sicheren und privaten Kanal, der auf mehreren Ebenen durch verschiedene Netzwerktechnologien wie Network Load Balancer und Endpunkte, Subnetze und Sicherheitsgruppen der Virtual Private Cloud (VPC) geschützt ist (siehe Abbildung 1).

Scheduler, die auf Instances der Amazon Elastic Compute Cloud (Amazon EC2) mit Volumes von Amazon Elastic Block Store (Amazon EBS) laufen, teilen jede Build-/Test-Anforderung in unabhängige Teile auf und platzieren die einzelnen Build-/Test-Aufträge auf bestehenden Instances, die die Rechen-/Speicheranforderungen des Build-/Test-Auftrags erfüllen. AWS Auto Scaling wird verwendet, um Selbstheilungsfähigkeiten bereitzustellen, indem eine feste Anzahl von laufenden Scheduler-Instances beibehalten wird. Ausgefallene Instances des Amazon EC2 Schedulers werden automatisch ersetzt, ohne dass ein menschliches Eingreifen erforderlich ist.

EngFlows Remote-Execution-Software verteilt Build/Test-Aktionen auf Hunderte oder sogar Tausende von Worker-Instances, die alle auf EC2-Instances mit gemounteten EBS-Volumes laufen. Dabei nutzt EngFlow AWS Auto Scaling, um die benötigte Rechenkapazität je nach Bedarf zu skalieren und so den Verbrauch zu minimieren und die Auslastung zu maximieren. Um unterschiedliche Kundenbedürfnisse zu unterstützen und eine kosteneffiziente Lösung anzubieten, können Worker-Instances auf EC2-On-Demand- oder Spot Instances ausgeführt werden. EngFlow bietet die Möglichkeit, auf On-Demand-Instances zurückzugreifen, um die Zuverlässigkeit zu erhöhen.

Remote Execution arbeitet mit EngFlows Remote-Caching-Lösung zusammen, um Doppelarbeit zu vermeiden. Durch die Zwischenspeicherung aller Build-/Test-Artefakte auf dem lokalen Speicher eines Unternehmens ermöglicht EngFlow den Teams, frühere Build-/Test-Artefakte herunterzuladen, anstatt den Build/Test selbst erneut auszuführen. Dies verkürzt die Build-/Testzeit und senkt die Kosten pro Build/Test. Während Instances in der Cloud kommen und gehen, werden die Build-/Test-Artefakte dauerhaft und kosteneffizient mit Amazon Simple Storage Service (Amazon S3) synchronisiert, um einen dauerhaften Zugriff zu ermöglichen.

Um den Betrieb zu unterstützen, wenn sie in einem Kundenkonto eingesetzt wird, verwendet die EngFlow-Lösung für Remote Execution AWS-Standardservices wie Amazon CloudWatch Logs, Metrics und Alarms.

Werfen wir einen genaueren Blick darauf, wie EngFlow schnelle, zuverlässige und kosteneffiziente Builds in AWS ermöglicht und wie das Unternehmen im Rahmen seiner Well-Architected-Prüfung Bereiche zur Verbesserung seiner Remote-Execution-Lösung identifiziert hat.

Leistung

Viele EngFlow-Kunden betrachten die Geschwindigkeit von Builds/Tests als eines der wichtigsten Wertversprechen von EngFlow. Sie führt zu einer höheren Produktivität der Entwickler, einer schnelleren Markteinführung und der Möglichkeit, mehr Experimente gleichzeitig durchzuführen, um nur einige zu nennen. Die Ausführung eines CI-Builds/Tests in der Cloud und die Verwendung verteilter Rechenknoten der neuesten und leistungsstärksten CPU-Generation anstelle einer lokalen Workstation verhalf Kunden wie Blue River Technology zu einem 9-fachen Leistungsgewinn für ihren CI-Build/Test.

Die EngFlow-Ingenieure helfen ihren Kunden bei der Auswahl der leistungsstärksten und kostengünstigsten EC2-Instance, die ihren individuellen Anforderungen am besten entspricht, wie zum Beispiel die neueste Generation der AWS-Graviton3-Prozessoren. Sie verwenden die neuesten EBS-gp3-Volumes, die den Kunden die neueste Generation von Allzweck-SSD-Volumes zur Verfügung stellen, um zu gewährleisten, dass Builds/Tests so schnell wie möglich ablaufen. Dies war möglich durch eine Analyse des einzigartigen Kunden-Workloads und die Nutzung von standardmäßigen und benutzerdefinierten CloudWatch-Metriken.

Darüber hinaus kann EngFlow durch die Feinabstimmung der Konfiguration von AWS Auto Scaling für Worker Instances ein optimales Gleichgewicht zwischen Kapazität und Kosten finden, so dass seine Kunden immer über genügend Rechen- und Speicherkapazität verfügen, um einen neuen geplanten Build/Test sofort zu starten, ohne Geld für ungenutzte Ressourcen zu verschwenden.

Zuverlässigkeit

EngFlow hat von Anfang an die bewährten Methoden von AWS befolgt, um einen zuverlässigen Service für die Ausführung zeitkritischer Builds/Tests für Tausende von Entwicklern bereitzustellen.

Ihre Konfiguration von AWS Auto Scaling erstreckt sich über drei AWS Availability Zones in der ausgewählten AWS-Region, um je nach Bedarf des Kunden zu skalieren, eine lokale Serviceunterbrechung zu überstehen und Selbstheilungsfunktionen bereitzustellen, indem ausgefallene Amazon-EC2-Instances automatisch ersetzt werden. Amazon S3 ergänzt die Lösung als dauerhafter und hochverfügbarer Speicherservice für Build-/Test-Artefakte.

Während der Well-Architected-Überprüfung entdeckte EngFlow einen Bereich, in dem die Zuverlässigkeit des Services verbessert werden kann. Amazon EC2 Auto Scaling verwendet Beendigungsrichtlinien, um zu bestimmen, welche Instances bei Abskalierungsereignissen zuerst beendet werden. Beendigungsrichtlinien definieren die Beendigungskriterien, die von Auto Scaling bei der Auswahl der zu beendenden Instances verwendet werden.

Standardmäßig wählt die Beendigungsrichtlinie die Availability Zone mit den meisten Instances aus. Sie beendet die Instance, die mit der ältesten Startvorlage oder Startkonfiguration gestartet wurde. Wenn die Instances mit derselben Startvorlage oder Startkonfiguration gestartet wurden, wählt Amazon EC2 Auto Scaling die Instance aus, die der nächsten Abrechnungsstunde am nächsten liegt, und beendet sie.

EngFlow stellte fest, dass diese standardmäßige Beendigungsrichtlinie manchmal EC2 Instances beendete, die mitten in der Ausführung wertvoller Arbeit für unsere Kunden steckten. Während EngFlow Remote Execution den Auftrag automatisch wiederholte, führte dies zu längeren Build-/Test-Ausführungen, höheren Kosten und Kundenrückfragen. Durch die Erstellung einer eigenen Beendigungsrichtlinie in Kombination mit der Nutzung des Abskalierungsschutzes für Instances war EngFlow in der Lage, seine Zuverlässigkeit und Effizienz zu verbessern.

Kosteneffizienz

EngFlow-Kunden führen CI-Builds/Tests in großem Maßstab durch und nutzen zu Spitzenzeiten Hunderte oder sogar Tausende von EC2-Instances gleichzeitig. Dieser Workload ist ein idealer Ansatzpunkt, um nach Möglichkeiten zur Kostenoptimierung für unsere Kunden zu suchen.

Um bis zu 90 % der Rechenkosten im Vergleich zum On-Demand-Betrieb einzusparen, haben wir in unserer Well-Architected-Überprüfung mit EngFlow die Möglichkeit besprochen, Spot Instances für ihre Remote Execution zu aktivieren, die auf Amazon EC2 Spot Fleet basieren.

„Dieses Feature ist eine große Chance für unsere Kunden und uns, kosteneffizienter in AWS zu arbeiten. Wir haben es gerne implementiert. Unsere Worker-Instances sind von Haus aus zustandslos und können spontane Beendigungen mit einem robusten Wiederholungsmechanismus verarbeiten. AWS Spot Instances waren die perfekte Lösung, mit der EngFlow und unsere Kunden im Durchschnitt 70 % der Rechenkosten einsparen konnten.“ – erklärt Yannic Bonenberger, Ingenieur bei EngFlow.

Während der Arbeit an der Integration von Spot Instances hat EngFlow auch die Gesamtauslastung der EC2-Instances verbessert, indem wir unseren Algorithmus zur Planung von Worker-Instances verbessert haben, was zu zusätzlichen Kosteneinsparungen für unsere Kunden geführt hat.

Nachdem EngFlow Spot Instances integriert hatte, hörten sie auf die Spot-Instance-Unterbrechungsmeldungen, die zwei Minuten bevor Amazon EC2 Ihre Spot Instance stoppt oder beendet, ausgegeben werden. Auf diese Weise konnten sie vermeiden, neue Aufträge für Builds/Tests auf Instances zu planen, die bald wieder in Anspruch genommen werden. In ähnlicher Weise empfahl der AWS Solution Architect auch, auf die Rebalance-Empfehlungen für EC2 Instances zu achten, um zu vermeiden, dass neue Aufträge für Builds/Tests auf Instances geplant werden, die mit hoher Wahrscheinlichkeit bald wieder in Anspruch genommen werden. Nach der Umsetzung dieser Empfehlungen beobachteten die EngFlow-Kunden weniger Wiederholungen von Build-/Test-Aufträgen aufgrund von vorzeitigen Beendigungen von EC2-Instances.

Ein vielversprechender Ansatz für moderne Builds/Tests

Große, flexible Technologieunternehmen wie Social-Media-Plattformen, kurzfristig operierende Reisemarktplätze und Automobilhersteller verlassen sich auf die Plattform von EngFlow, um Entwickler im Fluss zu halten und die notwendige Agilität für die moderne Softwareentwicklung zu gewährleisten. AWS ist das Herzstück des Erfolgs von EngFlow, denn es ermöglicht dem Unternehmen eine flexible Architektur und Kosteneffizienz, was sich direkt in Wettbewerbsvorteilen für die Endkunden niederschlägt.

„Es ist unglaublich, wie viel Leistung man zur Verfügung hat. Es ist das erste Mal in der Geschichte, dass Sie als einzelner Entwickler 1 000 Maschinen erhalten und etwas in großem Maßstab ausprobieren können.“ – erklärt Ulf Adams, CTO von EngFlow.

Christian Mueller

Christian Mueller

In seiner Rolle als Principal Solutions Architect für einen strategischen Automobilkunden bei Amazon Web Services (AWS) hilft Christian ihnen, das volle Potenzial der AWS Cloud auszuschöpfen, um sie noch erfolgreicher zu machen. Er interessiert sich für alles, was mit Serverless zu tun hat, und genießt es, Teil des großen Wandels zu sein, der in der Automobilindustrie stattfindet und von vernetzten und autonomen bis hin zu softwaredefinierten Fahrzeugen reicht.

Luis Pino

Luis Pino

Als Software Engineer bei EngFlow ist Luis dafür verantwortlich, dass das Infrastruktur-Setup bei EngFlow so reibungslos wie möglich funktioniert. In seinen früheren Lebensjahren half Luis während seiner fünf Jahre bei Google bei der Entwicklung von Bazel mit Schwerpunkt auf externen APIs und macOS-Unterstützung. Er hat außerdem an der École Polytechnique in Informatik promoviert und sich auf formale Softwareverifikation spezialisiert.

Wie war dieser Inhalt?