Native AWS-Tools und Lambda erweisen sich bei Performance-Tests als nützlich

Es gibt eine Vielzahl von Tools, um die Performance in AWS zu testen. Ein Anwendungsbeispiel zu AWS Lambda und anderen Tools, um Kosten zu senken.

AWS Performance-Tests sind während der Softwareentwicklung häufig nur ein Anhängsel. Denn es kann schwierig sein, die Lasten, die eine bestimmte Anzahl von Anwendungen und deren APIs bewältigen müssen, zuverlässig zu simulieren.

Das bedeutet, dass Softwareentwickler und die Qualitätssicherung (Quality Assurance, QA) nicht unbedingt die Leistungsmerkmale ihres neuen Codes kennen, bis er live geht. Entwickler konzentrieren sich normalerweise auf die Anwendungslogik, die während des Entwicklungsprozesses einfach zu testen ist. Über die Performance-Implikationen des Codes sind sie sich hingegen kaum bewusst, bis er in Live-Umgebungen oder in einer simulierten Infrastruktur läuft.

Um eine Anwendung zu testen, probiert die Qualitätssicherung die App unter verschiedenen Bedingungen aus. Diese Bedingungen auf einem einzigen Server zu implementieren, kann eine Herausforderung sein. Eine Alternative ist AWS Lambda. Entwickler können AWS Lambda verwenden, um einen besseren Performance Stack zu bauen als dies mit den bereits bestehenden kommerziellen Tools möglich ist.

Lambda ermöglicht es der Qualitätssicherung, ganze Funktionsketten zu erstellen, die Lasten von Tausenden von Benutzern simulieren können. Ingenieure können eine Master-Lambda-Funktion einrichten, die die erforderliche Anzahl von Funktionen für Tests erzeugt. Der Master kann allmählich immer mehr Slaves hinzufügen, um die Last zu erhöhen.

Ein Master-Controller kann Lambda-Performance-Tests im Vergleich zur Orchestrierung der individuellen Funktionen erleichtern. Entwickler verbinden einen einzelnen Master-Controller mit anderen Mastern, um die Skalierbarkeit durch das Verbinden der Funktionen weiter zu verbessern. Zum Beispiel könnte eine Controller-Lambda-Funktion zehn weitere Controller-Funktionen ansprechen, die 1.000 Slave-Funktionen zum Ausführen des Tests ansprechen.

Accusoft, ein Anbieter von Dokumenten- und Imaging-Tools für Entwickler, hat Lambda für etwas ganz Neues verwendet. „Es ist eines der wenigen Dinge, dem sowohl QA als auch Engineering Glauben schenken“, sagt Michael Pardue, Senior Software Engineer bei Accusoft. Als Pardue begann, mit Werkzeugen zu experimentieren, hatte sein Team Probleme, die Last, die sie haben wollten, zu erzeugen. Deshalb probierte er es in einem halbtägigen Test mit Lambda aus.

„Ich habe etwas zusammengestellt, mit dem ich die AWS-Performance-Tests schnell anpacken konnte, also schien es mir sinnvoll, diesen Weg weiter zu verfolgen. Ich dachte, wenn es so einfach ist, kann ich es auch gut hochskalieren“, erläutert er sein Vorgehen.

In der ersten Iteration wollte Accusoft eine gewisse Anzahl gleichzeitiger Anfragen generieren. Pardue experimentierte mit dem Hochfahren von bis zu 10.000 gleichzeitigen Aufrufen einer bestimmten API. Aber das lieferte ihm die entsprechenden Daten nicht lückenlos in entsprechenden Mengen. Es ist besser, Anforderungen allmählich zu steigern.

Lambda-Einschränkungen, wie zum Beispiel Funktions-Timeouts nach fünf Minuten, verursachen Probleme. IT-Teams können sie umgehen, indem sie jede Lambda-Funktion verketten, um die nächste Iteration von sich selbst aufzurufen. Diese Kette ermöglicht es, dass der Leistungstest eine unbestimmte Zeit läuft.

„Das erste Mal, als ich es laufen ließ, war es irgendwie beängstigend“, sagt Pardue. „Ich war besorgt, was bei einer Endlosschleife passieren würde.“ Glücklicherweise war das Testen für Accusoft nicht teuer. Trotz einer Million Anfragen pro Tag betrug die gesamte Lambda-Rechnung nur etwa neun US-Dollar pro Monat.

AWS CloudFormation verwaltet Performance-Tests

Während die Qualitätssicherung mit Lambda-Funktionen über API-Aufrufe interagieren konnte, sagt Pardue, vereinfachten AWS-CloudFormation-Vorlagen die Einrichtung und Updates von Bibliotheken.

CloudFormation-Vorlagen ermöglichen es Entwicklern und Testern, eine Sammlung von Cloud-Services zu spezifizieren, die für Live-Anwendungen oder Performance-Tests aufgerufen werden sollen. Entwickler können diese Sammlungen von Services für verschiedene Anwendungsfälle oder Testarten wiederverwenden und anpassen. Mit diesem Ansatz für AWS Performance-Tests können Ingenieure eine Gruppe von Lambda-Funktionen für verschiedene Arten von Leistungstests mit verschiedenen Anwendungen verknüpfen.

„CloudFormation gibt Ihnen einen deklarativen Mechanismus, wofür Tests mit einem Performance-Test-Stack verbunden sind“, erklärt Pardue. Und das kann ein Projekt besser organisieren. Mit diesem Ansatz führen Tester entweder einzelne Testlasten oder einen orchestrierten Satz von Testlasten aus. Eine einzelne Testlast ist nützlich, um Fragen zu beantworten, wie etwa: welcher Serveraufbau wird benötigt, um mit einer bestimmten Anwendungslast umzugehen. Ein orchestrierter Satz von Testlasten identifiziert Fehlerpunkte oder Bereiche, in denen die Systemintegrität versagt.

Vereinfachung der Ergebnisaggregation

Die Aggregation von Protokollen ist die größte Herausforderung, um sicherzustellen, dass das System effektiv arbeitet. Zuerst hat Pardue Lambda-Funktionen nicht in einer Kette verknüpft. Auch hat er die lokalen Ergebnisse vor der Aggregation berücksichtigt.

Amazon CloudWatch war ein besseres Werkzeug, um die Lambda-Streams abzufragen und die Daten zu aggregieren. Pardue bearbeitete dann die daraus resultierenden Protokolle nach, um sie für Fragen zu nutzen, die die Ingenieure hatten oder für Grafiken, die sie generieren wollten.

Zum Beispiel wollte ein Ingenieur wissen, wie viel Last die Anwendung verarbeiten kann, bevor die Leistung darunter leidet. Ein Server kann in der Lage sein, 90 Anfragen pro Minute abzuarbeiten, was von der Anzahl der gleichzeitigen Benutzer unabhängig ist. Diese Protokollverarbeitung erleichtert die Berechnung der Skalierung, die eine bestimmte Leistungsstufe im Live-System garantiert.

Eine bewährte Vorgehensweise besteht darin, zuerst die Datenaggregation einzurichten, was bedeutet, eine skalierbare Möglichkeit zu entwickeln, Daten aus dem System zur Verarbeitung herauszubekommen. Teams können diese Daten dann verwenden, um zu entscheiden, wie man Lambda-Funktionen am besten ausführt.

Folgen Sie SearchEnterpriseSoftware.de auch auf Twitter, Google+, Xing und Facebook!

Artikel wurde zuletzt im August 2017 aktualisiert

Pro+

Premium-Inhalte

Weitere Pro+ Premium-Inhalte und andere Mitglieder-Angebote, finden Sie hier.

Erfahren Sie mehr über Software-Entwicklung

Diskussion starten

Schicken Sie mir eine Nachricht bei Kommentaren anderer Mitglieder.

Mit dem Absenden dieser Daten erklären Sie sich bereit, E-Mails von TechTarget und seinen Partnern zu erhalten. Wenn Ihr Wohnsitz außerhalb der Vereinigten Staaten ist, geben Sie uns hiermit Ihre Erlaubnis, Ihre persönlichen Daten zu übertragen und in den Vereinigten Staaten zu verarbeiten. Datenschutz

Bitte erstellen Sie einen Usernamen, um einen Kommentar abzugeben.

- GOOGLE-ANZEIGEN

SearchSecurity.de

SearchStorage.de

SearchNetworking.de

SearchDataCenter.de

Close