Auslastungstests sind sehr wichtig für die Messung der Website-, Webanwendungs- und API-Leistung während normaler, schwerer oder sogar plötzlicher Datenverkehrsspitzen. Dieser Beitrag hilft, Auslastungstests mit Docker-Containern mit CONTINUOUS Integration (CI)-Tools zu verstehen. Der Docker-Ansatz zum Laden von Testanwendungen ermöglicht die gemeinsame Nutzung der Tests zwischen Benutzern und das einfache Replizieren der Testumgebung mithilfe von Docker-Containern. Wir werden kurz erläutern, was Docker ist, und verwenden Docker-Container und -Tools, die zum Laden von Testanwendungen über CI verwendet werden.
Was ist Docker?
Docker! Vielleicht haben Sie dieses faszinierende Wort in Ihrem Team gehört oder in Technologie-Blogs gelesen, und es mag auch auf den ersten Blick einschüchternd klingen. Docker ist eine Containerisierungsplattform, die Ihren App-Quellcode und alle Abhängigkeitspakete in einer Form zusammenfasst, die als Docker-Container bezeichnet wird. Es stellt sicher, dass die Anwendung in einer beliebigen Umgebung ausgeführt wird, ohne über den Overhead von Betriebssystem- oder Systemkonfigurationen nachzudenken. Ist das nicht cool!
Darüber hinaus ist Docker ein beliebtes Tool, das es sehr einfach macht, Anwendungen mit Containern zu erstellen, bereitzustellen und auszuführen. Aus diesem Grund kann unsere Anwendung überall mit dem gleichen Verhalten ausgeführt werden. Und das Wichtige ist, Docker ist Open Source.
Was ist ein Docker-Container?
Ein Docker-Container ist ein einfaches, eigenständiges, ausführbares Softwarepaket, das alles enthält, was eine Anwendung benötigt: Codebasis, Systembibliotheken, Systemtools und Einstellungen. Ein Container umschließt den Code und seine Abhängigkeiten zusammen, wodurch die Anwendung schnell und zuverlässig von einer Umgebung zur anderen ausgeführt werden kann.
Mit Docker können sich Entwickler auf das Schreiben von Code konzentrieren, ohne sich Gedanken über das System zu machen, auf dem die Anwendung ausgeführt wird, wodurch die Anwendung portierbar wird. Die Art und Weise, wie eine Anwendung auf Ihrem lokalen Computer ausgeführt wird, wäre so nah oder gleich an der Produktion.
Hauptmerkmale von Docker
- Einfach skalierbar. Dank der leichten Container können Docker-Container in Sekundenschnelle hochfahren und leicht skalieren.
- Erhöht die Produktivität. Es erleichtert den technischen Overhead für die Anwendungsentwicklung und die Einrichtung von Umgebungen. Darüber hinaus hilft es, die Anwendung in einer isolierten Umgebung auszuführen und reduziert den Ressourcenverbrauch.
- Anwendungsisolation. Jede Anwendung wird unabhängig voneinander ausgeführt und führt Anwendungen isoliert aus.
- Reduzierte Infrastruktur- und Wartungskosten. Es hilft, vorhandene Plattformen zu unterstützen, die einfach zu Docker verschoben werden können, was automatisiert läuft, wodurch die Wartungskosten reduziert werden.
- Schwarm. Swarm ist ein Clustering- und Planungstool für Docker-Container. Es ermöglicht dem Benutzer, mehrere Container zu verwalten, die auf mehreren Hostcomputern bereitgestellt werden.
- Routingnetz. Es hilft beim Routing und Ausgleich des Datenverkehrs zu den Containern.
Vorteile von Docker
- Docker ermöglicht die Anwendungsportabilität.
- Docker ermöglicht schnellere Entwicklungs-Release-Zyklen.
- Es glänzt mit Microservice-Architektur.
- Docker stellt eine Isolationsumgebung für Anwendungen bereit.
- Docker ermöglicht eine schnellere und einfache horizontale Skalierung von Anwendungen.
- Es ermöglicht eine effiziente Nutzung der Ressourcen.
Docker Inside CI-Tools
Der größte Vorteil bei Docker ist, dass wir uns keine Sorgen über Abhängigkeitskonflikte machen. Wenn wir zum Beispiel ein Projekt mit Golang 1.11 und ein Projekt mit Golang 1.12 erstellen möchten, kann Docker helfen, dies zu trennen und Images für beide zu erstellen und sogar beide parallel auf verschiedenen Containern ohne Konflikte laufen zu lassen, was auf einem -Server. Die Bilder, die mit verschiedenen Versionen erstellt wurden, können in der Registrierung gespeichert und als Teil von Continuous Integration-Tools wie Jenkins verwendet werden.
Jenkins bietet in diesem Fall Unterstützung, in der verfügbare Docker-Images für Leistungstests oder Integrationstests ausgesucht werden und der Overhead zum Kochen von Docker-Images von Grund auf gespeichert wird. Docker-Layer-Caching spart hier viel Zeit. Als Teil unserer CI-Pipeline müssen wir ein Docker-Image für einen Leistungstest erstellen, und dieses Image kann mit CI ausgeführt werden, um einen Leistungstest der Anwendung durchzuführen. Wir können diesen Schritt sogar automatisieren, mit jeder Funktionserweiterung oder -änderung können wir einen Leistungstest durchführen, um die Leistungsauswirkungen aufgrund der jüngsten Änderungen zu bewerten und zu schützen.
Einschränkungen bei der Verwendung von Docker für Leistungstests
Docker hat zwar viele Vorteile, hat aber beim Leistungstest einige Einschränkungen:
- Wenn wir eine Testsimulation mit hoher Auslastung mit mehreren Docker-Containern auf demselben Computer ausführen, kann dies eine Menge CPU des laufenden Servers verbrauchen, was sich auf unsere Testergebnisse auswirken kann.
- Der Leistungstestbericht über Docker verfügt nicht über ausreichende Anwendungsdetails.
- Möglicherweise müssen wir das Hostbetriebssystem und die Container, in denen Leistungstests ausgeführt werden, fein abstimmen.
- Da Docker-Container einwegsind, kann dies zum Verlust von Berichten führen.
Um uns all diese Einschränkungen zu ersparen, können wir eine Lösung wie LoadView verwenden, die leicht in Jenkins integriert werden kann, um die Automatisierung des Leistungstestprozesses zu unterstützen.
LoadView Load Test-Integration mit Jenkins
Wann immer wir eine Anwendung testen, testen wir, ob sie wie erwartet funktioniert. Wenn das funktioniert, markieren wir, dass die Funktionalität der Anwendung einwandfrei funktioniert. Aber in der realen Welt, die gleiche Anwendung wird von Hunderten verwendet, oder sogar Tausende von Benutzern, die ihre eigenen Komplikationen bringen können. Es ist wichtig zu wissen, dass Ihre Anwendung den erwarteten Datenverkehrsanforderungen standhalten kann, insbesondere wenn sie für die Umsatzgenerierung entscheidend ist.
Natürlich sind nicht alle Anwendungen an die Generierung von Einnahmen gebunden, aber unabhängig davon ist die Benutzererfahrung immer noch ein großer Faktor, um Besucher von der Online-Tür zur Online-Kasse zu bringen. Wenn zu irgendeinem Zeitpunkt während dieses Prozesses ihre Erfahrung langsam, hinkt oder einfach nur verwirrend ist, werden sie sofort das Interesse verlieren. Es kümmert sie nicht, dass der Grund, warum ihre Erfahrung schlecht ist, darin besteht, dass Tausende von anderen Benutzern gleichzeitig auf Ihrer Website oder Anwendung sind. Soweit sie wissen, denken sie, dass sie die einzigen sind, die Ihre Anwendung verwenden. Kaum zu glauben, aber es ist wahr. Genau wie die reale Welt müssen sie manchmal in Schlangen warten wie alle anderen. Stellen Sie einfach sicher, dass ihr Warten nahtlos, angenehm und nicht zu lang ist.
Wir müssen überprüfen, ob unsere Anwendung solchen Datenverkehr verarbeiten kann. So können wir bei jeder Änderung oder Entwicklung neuer Funktionen Last – oder Stresstests für die Anwendung über unser LoadView-Plugin durchführen, das in Jenkins integriert werden kann.
Wir werden uns nun die Schritte ansehen, die erforderlich sind, um Lasttests über die Jenkins-Integration mit LoadView durchzuführen:
- Bevor wir mit der Verwendung eines LoadView-Auslastungstestszenarios beginnen, um Ihren Build in Jenkins zu testen, benötigen wir ein Testszenario auf LoadView, in dem wir eine Liste von APIs hinzufügen können, die stressgetestet werden müssen.
- Um die Integration mit Jenkins zu starten, benötigen wir einen LoadView Unique-Bezeichner, der als LoadView Security-Token verwendet werden kann.
- Erstellen Sie in LoadView eine Integrations-UID unter > Kontointegrationen > Hinzufügen von Integration Load Testing > Web-API. Kopieren Sie diese Integrations-UID.
- Um den Stresstest festzulegen, benötigen wir Testszenario-ID. Die Szenario-ID finden Sie auf der Seite Szenario-Setup, wie unten gezeigt.
Konfigurieren des LoadView-Plugins in Jenkins
- Melden Sie sich bei Ihrem Jenkins-Konto an.
- Wechseln Sie in Jenkins zu Anmeldeinformationen Hinzufügen von > Anmeldeinformationen > LoadView Security Token (UID). Konfigurieren und überprüfen Sie die Anmeldeinformationen:
- Art: LoadView Security Token (UID).
- Bereich: Als Globalfestgelegt .
- ID: Belassen Sie den Standardwert, oder geben Sie eine eindeutige ID an.
- Beschreibung: Geben Sie eine eindeutige Beschreibung ein, um sie von anderen Tests zu unterscheiden.
- UID: Geben Sie die UID aus Ihrem LoadView-Konto ein. Nachdem Sie hinzugefügt haben, wählen Sie UID überprüfen aus, um sicherzustellen, dass auf Jenkins für die LoadView-API zugegriffen werden kann.
3. Wählen Sie als Nächstes einen Auftrag aus und klicken Sie auf Konfigurieren
- Wechseln Sie zu Build > Post-Build Actions Add > post-build action > LoadView-Run load test scenario. Geben Sie LoadView-Stresstesteinstellungen für den Build an:
- Anmeldeinformationen: Wählen Sie den API-Schlüssel mithilfe der Beschreibung aus.
- Szenario-ID: Fügen Sie die Testszenario-ID ein, die Sie im Build verwenden möchten. Kopieren Sie die ID von der Szenarioseite in LoadView.
- Fehlerschwellenwert: Hier können Sie den Fehlerschwellenwert festlegen, der für Ihr bestimmtes Szenario akzeptabel ist. Wenn der Prozentsatz diesen Schwellenwert überschreitet, wird er in Jenkins als Fehler gekennzeichnet.
- Durchschnittliche Zeit: Geben Sie das durchschnittliche Antwortzeitlimit während des Tests an. Wie der Fehlerschwellenwert wird, wenn der Grenzwert überschritten wird, in Jenkins als fehlgeschlagen aufgezeichnet.
- Klicken Sie auf Speichern.
Testergebnisse anzeigen:
Wenn der Test ausgeführt wird, wird der Status in Echtzeit in der Jenkins Console Outputangezeigt.
Wrap Up: Docker-Anwendungsauslastungstests
Docker hat zwar viele Vorteile, kann jedoch Einschränkungen bei der Ausführung von Auslastungstests mit hoher Auslastung geben, z. B. beim Verbrauch von viel CPU auf dem Server, wenn mehrere Docker-Container auf demselben Computer verwendet werden, was sich dramatisch auf die Testergebnisse auswirken kann. Mit einer Lösung wie LoadView, die einfach in CI-Tools wie Jenkins integriert werden kann, können wir Auslastungstests mit Tausenden gleichzeitiger Verbindungen aus einer vollständig verwalteten Cloud erstellen und verwalten.
Dieser Artikel war eine kurze Einführung in die Verwendung von Docker und Jenkins zum Ausführen cloudbasierter Auslastungstests. Richten Sie eine Demo mit einem unserer Leistungsingenieure ein, um mehr über das Einrichten von Testszenarien und das Konfigurieren von Auslastungstests mit LoadView zu erfahren.
Probieren Sie die LoadView-Plattform noch heute aus und erhalten Sie bis zu 5 kostenlose Tests , um loszulegen.