Loadtests ohne Server

Voll belastet

Für Loadtests der eigenen Server bietet sich die Cloud an, denn kurz getaktet lassen sich dort viele Rechnerinstanzen starten, die das eigene Budget nur wenig belasten. Noch flexibler, günstiger und besser skalierbar sind Tests mit einer Serverless-Infrastruktur wie AWS Lambda. Wir führen vor, wie Sie dort mit Serverless Artillery eigene Loadtests starten.
Die digitale Kommunikation ist heute in Firmen Alltag. Administratoren müssen die hierfür passenden Plattformen bereitstellen. Welche Möglichkeiten sich ... (mehr)

 Kaum haben Container & Co. eine winzige Minderheit von Anwendern in der Praxis erreicht, bereiten die Mächte im Hintergrund schon den nächsten Anschlag auf den Verstand vor: Der neue Trend heißt "Serverless Computing". Selbstverständlich kommt aber auch das serverlose Computing nicht ohne Server aus; der Witz daran ist nur, dass der Anwender diesen Server (dito VM oder Container) nicht selbst betreibt, sondern das einem Dienstleister wie Amazon, Google oder Azure (Microsoft) überlässt.

PaaS im neuen Gewand

Im Prinzip wärmt Serverless Computing einige Ideen von Platform-as-a-Service (PaaS) neu auf. So laden Admins oder Entwickler Funktionen in die Infrastruktur des Cloud-Providers, wo sie ausgeführt werden, wenn Anwender beispielsweise eine URL aufrufen. Diese Funktionen können von anderen Diensten des Cloud-Providers Gebrauch machen, etwa Daten aus einem Objektspeicher abrufen oder in Datenbanken speichern und so weiter. Auf der anderen Seite gibt es einige Einschränkungen zu beachten, etwa bei der Codegröße, der Dauer der Ausführung, Speicherbedarf und andere.

Auch bei der eingesetzten Programmiersprache ist man beschränkt: AWS Lambda, der Serverless-Dienst von Amazon, unterstützt beispielsweise Node.js (Java­Script), Java, Python, Go und C#. Azure Functions in der Microsoft-Cloud können in C#, F#, JavaScript und Java verfasst sein. Die Google Cloud Functions sind dagegen auf JavaScript beschränkt.

Der große Vorteil von Serverless Computing ist die Reduzierung der Kosten. Zum einen fällt der Aufwand für den Betrieb der Infrastruktur weg, zum anderen ist es in vielen Fällen billiger, einen Work-load "serverless" zu betreiben, weil dies günstiger ist, als etwa eine entsprechend leistungsfähige Instanz bei einem Cloudprovider laufen zu lassen. Dies ist auch die Idee hinter dem Ansatz, Loadtesting von Websites über eine Serverless-Infrastruktur zu realisieren. Die Entwickler von Serverless Artillery [1] haben dazu die in Node.js geschriebene Loadtesting-Software Artillery [2] genommen und mit einem Serverless-Framework verheiratet, das wenig originell selbst "Serverless" heißt [3].

Nodejs installieren

Als Voraussetzung für Serverless Artillery müssen Node.js und das Serverless-Framework installiert sein – und zwar auf dem Client, von dem aus Sie die Loadtests starten, denn Server gibt es ja keinen. Von Node.js wird mindestens Version 4 verlangt, das auf jeder halbwegs aktuellen Linux-Distribution vorhanden sein müsste. Alternativ gibt es Binärpakete auf der Node.js-Homepage, nicht nur für Linux, sondern auch für macOS, Windows, Solaris und AIX. Als Cloud verwenden wir hier Amazon, denn Serverless Artillery unterstützt nur AWS. Soviel zum Thema Portabilität von Serverless-Anwendungen.

Mit dem Node.js-Paketmanager NPM installieren Sie die nötigen Pakete "global", das heißt entweder mit Root-Rechten in einem für alle zugänglichen Verzeichnis oder mit einem kleinen Trick nur in Ihrem Homeverzeichnis. Wir gehen hier den zweiten Weg, denn er setzt keine Root-Rechte voraus, die auch im weiteren nicht nötig sind. Dazu legen Sie zuerst ein Verzeichnis an, das die "global" installierten NPM-Module und Binaries aufnimmt. Dann setzen Sie das NPM-Präfix entsprechend und passen noch den PATH der ausführbaren Dateien an:

$ mkdir ~/.npm-global
$ npm config set prefix '~/.npm-global'
export PATH=~/.npm-global/bin:$PATH

Nun installieren Sie die beiden Module mit einem Aufruf von:

$ npm install -g serverless serverless-artillery
comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023