Kalawin - stock.adobe.com

AWS, Azure und Co.: Kosten für Serverless Computing managen

Serverless Computing abstrahiert die Verantwortlichkeiten für das Infrastrukturmanagement. Doch dieser Komfort kann einen höheren Preis verursachen.

Pay per use ist das zentrale Merkmal des Cloud Computing. Viele Cloud-Kunden finden allerdings, dass sie mit Pay per use mehr bezahlen als das, was sie tatsächlich verbrauchen. Serverless Computing betrachten viele daher als bessere Alternative, doch Anwender sehen bei AWS Lambda ebenfalls Herausforderungen beim Kostenmanagement.

Serverless Computing bietet ein Framework, mit dem Kunden ihren Code ausführen können, ohne sich Gedanken über die zugrunde liegende Infrastruktur machen zu müssen. Der Kunde zahlt für die Zeit, die der Dienst für die Ausführung des Codes benötigt – zuzüglich einer Gebühr pro Anfrage.

Einer der Hauptgründe für Serverless ist, dass Kunden – im Gegensatz zu einer herkömmlichen Infrastructure as a Service (IaaS) Cloud-Instanz – nicht für ungenutzte Ressourcen zahlen müssen, wenn der Dienst eine Anfrage nicht aktiv bearbeitet. Viele Cloud-Anbieter bieten mittlerweile serverlose Plattformen an, darunter Google Cloud Functions, IBM Cloud Functions und Microsoft Azure Functions. Aber AWS Lambda war der Pionier dieses Dienstes – und er ist heute zweifellos der reifste und beliebteste.

Die Fähigkeit, Ressourcen nur dann zu bezahlen, wenn sie auch benötigt werden, hat Dropsource – ein Startup, das Mobile Apps auf Low-Code-Basis entwickelt – dazu bewogen, AWS Lambda zu verwenden. Das Unternehmen musste schnell Quellcode für Kunden generieren, um neue Workloads bereitzustellen. Allerdings machte es die nur sporadische Nachfrage schwierig, den teuren Ausbau der lokalen Infrastruktur zu rechtfertigen.

„Es gibt Vieles bei uns, wofür ein internes Hosting keinen Sinn macht“, sagt Dropsource-CTO Nate Frechette. „Aber wir sind glücklicherweise in der Lage, so viel Last auf Lambda zu transferrieren, wie wir möchten. Und wir müssen uns keine Sorgen um die Skalierung machen.“

Neben den vielen Vorteilen wie der Freiheit, keine Infrastruktur verwalten zu müssen, der unendlichen Skalierbarkeit und der Reduzierung des Leerlaufs gibt es allerdings auch einen Haken, der viele Kunden zweifeln lässt – und das ist die Kostenstruktur des Dienstes. Die Gebühren für AWS Lambda beinhalten ein kostenloses Kontingent mit eine Million Anfragen und 400.000 Gigabyte-Sekunden Rechenzeit pro Monat – was ungefähr ein GB Memory für 111 Stunden entspricht und nicht verfällt. Diese freie Rechenzeit zieht kostenbewusste Shops und Startups an. Doch dieses scheinbare Angebot zum Nulltarif kann auch trügerisch sein.

Die kostenlosen Kontingente bei AWS, Azure, IBM und Google im Vergleich.
Abbildung 1: Die kostenlosen Kontingente bei AWS, Azure, IBM und Google im Vergleich.

„Sie erhalten zwar viele kostenlose Ausführungen. Allerdings gibt es auch Kunden mit rechenintensiven Anwendungsfällen. Sobald Sie in diesem Bereich sind, ist Serverless nicht billig“, sagt Ernesto Marquez, Inhaber von Concurrency Labs, einem Cloud-Consulting-Service.

Die richtige Balance finden

Um dies nachvollziehen zu können, muss man die AWS Lambda-Gebührenstruktur etwas detaillierter betrachten. Nachdem die Kunden die kostenlose Stufe von AWS Lambda überschritten haben, zahlen sie eine pauschale Flatrate pro Anfrage. Hinzu kommt noch eine Gebühr für die Zeit, die der Dienst für die Ausführung ihrer Funktion auf der Grundlage des zugewiesenen Speichers benötigt. Diese Preisstruktur ist ähnlich wie im Cloud Computing: Hier zahlen Sie ebenfalls für eine Cloud-Instanz mit mehr Speicher auch mehr Geld. Bei Serverless kämpfen aber viele Kunden damit, die Beziehung zwischen Memory und Code-Ausführungszeit zu erfassen, sagt Marquez. Mehr Memory bedeutet schnellere Ausführung, aber auch mehr Gebühren.

„Wenn Sie einer Funktion mehr Memory zuweisen, werden Sie mehr bezahlen. Aber dieser zusätzliche Speicher bedeutet, dass der Code schneller ausgeführt wird – was wiederum die Kosten senkt. Es gibt also eine feine Balance“, erläutert Marquez. „Sie müssen die richtige Speicherzuweisung finden, damit das Computing in einer vernünftigen Zeit abgeschlossen wird, aber ohne zu viel Speicher zu belegen.“

Einige Kunden, wie zum Beispiel Dropsource, lassen alle ihre Funktionen mit der gleichen Speichermenge laufen. Das vereinfacht das AWS Lambda-Kostenmanagement für vorhersehbare Funktionen oder geringere Arbeitslasten.

„Vielleicht müssen wir etwas kostenbewusster werden, wenn wir mehr Traffic haben. Aber wir geben im Moment nicht genug für Optimierungen aus, obwohl das für uns natürlich von Vorteil wäre“, sagt Frechette.

Kunden, die die perfekte Balance herstellen und die Kosten für AWS Lambda reduzieren möchten, bewegen sich auf einem schmalen Pfad, sagt Chris Moyer, CTO von CNB Media. Wird einer Funktion nicht genügend Speicherplatz zugewiesen, schlägt sie fehl oder es kommt zu einem Timeout. Außerdem haben Kunden keinen Einblick in andere Faktoren, die die Ausführungszeit beeinflussen können, wie beispielsweise CPUs. AWS Lambda weist CPUs proportional zum Memory zu, aber Amazon gibt die Anzahl der Kerne oder die Taktrate der CPUs nicht bekannt. Die Kunden können somit nie sicher sein, ob der Memory oder die CPU die Ausführung verlangsamt, sagt Moyer.

„Selbst wenn Sie nur die Hälfte Speichers nutzen, den Sie zugewiesen haben, aber die Ausführung zu lange dauert, könnte es von Vorteil sein, ihn aufzustocken“, sagt er. „Der einzige Weg, diese Schwelle zu entdecken, ist Trial and Error.“

AWS teilt laut Moyer außerdem auch andere Ressourcen wie Networking proportional zum Speicher zu. Andere Serverless-Dienste, wie zum Beispiel Google Cloud Functions, berechnen Networking separat oder erlauben es Kunden, CPU-Taktstufen zu wählen.

Fokus auf dem Code

Entwickler wissen, dass die Optimierung von Code die Ressourcen, die zur Ausführung notwendig sind, reduzieren können – eine Tatsache, die bei der Verwendung von Serverless-Diensten noch wichtiger ist.

„Manchmal können ein paar hundert Millisekunden in der Ausführungszeit Ihre Gesamtrechnung um Hunderte oder Tausende von Dollar beeinflussen“, sagt Marquez. Die gute Nachricht: Bei der Optimierung der Lambda-Kosten werden Sie nicht im Regen stehen gelassen.

AWS X-Ray ist ein Application Performance Management Tool, das bei der Analyse und Fehlersuche von Lambda-Funktionen helfen kann. Debugging Tools von Drittanbietern, wie IOpipe, können ebenfalls dazu beitragen, dass Teams einen besseren Einblick in ihren Code erhalten und herausfinden, warum er schlecht läuft.

Wie bei jedem Cloud-Service muss der Kunde auch hier prüfen, ob sein Workload für den Service geeignet ist. Localytics, ein Marketingunternehmen für Mobile Apps, nutzt AWS Lambda auf vielfältige Weise – unter anderem als Teil seiner Slack-Ops-Infrastruktur. In einigen Fällen machte Lambda jedoch keinen Sinn, sagt Michal Klos, Senior Director of Engineering bei Localytics.

„Es gibt viele Anwendungsfälle mit Echtzeit-Datenverarbeitung, bei denen Lambda eine gute Lösung ist – wenn es nicht so teuer wäre im Vergleich zu herkömmlichen Anwendungen auf EC2-Servern“, sagt Klos.

Setzen Sie Grenzen

Kunden können ihre AWS Lambda-Kosten auch mit dem verwalten, was Amazon als Concurrency (Nebenläufigkeit) bezeichnet. Damit lässt sich die Anzahl der gleichzeitigen Ausführungen beschränken und eine unbegrenzte Autoskalierung verhindern. Aber Kunden, die Lambda für wichtige Aufgaben einsetzen, müssen vorsichtig sein, wenn es darum geht, harte Grenzen zu setzen, sagt Moyer.

„Eine harte Grenze kann kontraproduktiv sein, wenn Sie eine Spitze haben und der Dienst nicht so autoskaliert wie Sie es erwarten“, sagt er. Zumindest sollten Serverless-Anwender Alerts einrichten. Damit werden sie benachrichtigt, wenn sie zum Beispiel das kostenlose Kontingent überschreiten. So ersparen sie sich eine unerwartet hohe Rechnung.

Rechenzeit auf andere verteilen

Kunden, die auf der Suche nach dem besten Angebot sind oder hoffen, ihre Serverless Kosten senken zu können, sollten die Preisstrukturen anderer Anbieter evaluieren. Während Serverless-Dienste im Allgemeinen ähnliche Preisstrukturen haben – eine Gebühr pro Anfrage und auf Basis der Laufzeit – können bei bestimmten Anbietern auch weitere Gebühren anfallen. Interessenten sollten auch Netzwerk- oder Datentransfergebühren sowie API-Request-Gebühren vergleichen.

Auch hier lässt man Sie nicht im Regen stehen. Ein Serverless-Anbieter verspricht, diesen Kostenvergleich für Sie umzusetzen – allerdings nicht so, wie Sie wahrscheinlich denken.

Spotinst Functions verfolgen einen einzigartigen Ansatz zur Bereitstellung von Serverless Computing. Statt riesige Rechenzentren zu verwalten, verteilt der Service des Unternehmens die Rechenzeit über ein serverloses Framework auf die Infrastruktur anderer Anbieter. Während Kunden also mit dem Serverless Frontend von Spotinst interagieren, läuft der Code tatsächlich auf Cloud-Instanzen, die Spotinst von anderen Cloud-Anbietern wie AWS, Azure, Google oder IBM reserviert hat.

„Wir wählen den günstigsten Anbieter, den wir bekommen können, zahlen den Instance-per-hour-Preis und bieten die Ressource unseren Kunden an“, sagt Spotinst CEO Amiram Shachar.

Spotinst erhält bei einigen Cloud-Anbietern große Rabatte und zielt auch darauf ab, Überkapazitäten, die von anderen Anbietern mit einem Rabatt verkauft werden, zu reservieren – das ist ein Instanztyp, den AWS Spot Instances nennt.

„Wenn man etwas darüber nachdenkt bringt Serverless ein ganz neues Paradigma hervor, nämlich, dass das Computing zur Ware wird“, sagt Shachar. „Es ist Ihnen egal, welchen Server Sie tatsächlich benutzen, Sie möchten nur eine schnelle Antwort.“

Zentrick, ein Video Advertising Management Service, nutzt den Functions-Service von Spotinst als eine Form von Cloud Bursting, um Nachfragespitzen zu bewältigen.

„Wir geben das Problem, freie Kapazitäten vorzuhalten, an andere weiter“, sagt Zentrick CTO Pieter Mees. „Obwohl ich die Analyse nicht per Funktionsaufruf durchgeführt habe, erspart es uns die Kosten, die durch das Halten von freien Kapazitäten entstehen. Spotinst konnte uns bessere Preise bieten als andere Anbieter, die wir in die nähere Auswahl genommen haben.“

Während das Konzept hinter Serverless die Ressource Compute kommodisieren kann, glauben einige Kunden, dass der Preis nicht der entscheidende Faktor ist. Sie verlangen stattdessen nach Bequemlichkeit und Integration. Zillow war ein früher Kunde von AWS Lambda und nutzt den Service nun zusammen mit Amazon Kinesis, einem Echtzeit-Datenverarbeitungsdienst.

„Dass wir diesen Service nutzen, ist vor allem auf die anderen Anwendungen zurückzuführen, für die Amazon Lambda einsetzt“, sagt Brian Filppu, Director of Business Intelligence bei Zillow. „Tatsächlich hat es heute den Anschein, dass sich Lambda in fast jeden AWS-Dienst integrieren lässt. Und das ist einfach ziemlich billig.“ 

Preisvergleich AWS Lambda versus t2.micro Linux-Instanz

Trotz der Bezeichnung Serverless ist AWS Lambda keine Zauberei. Der Dienst stellt nur ein neues Modell vor, um die gleichen alten Rechenressourcen bereitzustellen. Ein Funktionsvergleich zwischen Lambda und EC2 ist zwar nicht ganz zulässig, zeigt aber, dass nicht alle Workloads für ein Serverless-Modell geeignet sind. Für dieses Beispiel vergleichen wir die Preise für eine t2.micro Linux-Instanz (eine VM mit einer virtuellen CPU und 1 GB RAM) mit einer Lambda-Funktion, die in einer Sekunde mit ein GB RAM ausgeführt wird.

Ressourcentyp

Kosten pro Monat

t2.micro on demand (U.S. West N. Calif.)

10,07 Dollar

t2.micro Spot Instance (U.S. West N. Calif.)

2.99 Dollar

AWS Lambda (eine Sekunde Dauer bei ein GB RAM)

26.32 Dollar*

* spiegelt die Kosten nach Abrechnung der monatlichen kostenlosen Stufe wider, basierend auf einer neuen Anfrage pro Sekunde.

Es ist jedoch unwahrscheinlich, dass jemand aufeinanderfolgende Lambda-Funktionen einen Monat lang ausführen wird. Der wahre Nutzen von Serverless ist die Skalierung bei unvorhersehbaren oder inkonsistenten Belastungen. Wenn wir stattdessen die Formel anpassen und annehmen, dass Sie diese Lambda-Ressourcen nur während der Spitzennachfrage benötigen – sagen wir, 40 Stunden pro Woche – dann sieht es schon attraktiver aus: Man startet bei 2,06 Dollar pro Monat, nachdem man das freie Kontingent ausgeschöpft hat. Oder was wäre, wenn Ihr Spitzenbedarf tatsächlich das Äquivalent von zehn t2.micro Instanzen gleichzeitig benötigt, Sie aber nur wenige Stunden pro Monat Spitzenbedarf erreicht haben? Aus dieser Perspektive erscheint Serverless geradezu billig, verglichen damit, dass man untergenutzte Instanzen beibehält.

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

Nächste Schritte

Ereignisgesteuerte Anwendungen: Serverless oder Container?

Das API-Management an die Serverless-Architektur anpassen.

Serverless Computing: Darauf müssen Sie achten.

Erfahren Sie mehr über Cloud Computing

ComputerWeekly.de
Close