zur Übersicht

Serverless – zwei Seiten der Medaille

Lesedauer ca. 6 Minuten
11.07.2023

In der Welt des Cloud Computing erfreut sich die Serverless-Technologie aufgrund ihres Potenzials für Kosteneinsparungen, Flexibilität und Skalierbarkeit zunehmender Beliebtheit. Der Begriff „serverless“ bezieht sich auf das Konzept der Erstellung und Ausführung von Anwendungen, ohne die Notwendigkeit, Server zu verwalten. Entwickelnde können sich so auf das Schreiben von Code konzentrieren, während die zugrundeliegende Infrastruktur automatisch vom Cloud-Anbieter bereitgestellt und verwaltet wird. Die Serverless-Technologie hat Innovationen im Bereich der Developer Experience (DX) ermöglicht, die die Veröffentlichung skalierbarer Produkte erleichtert und den Entwicklungsprozess beschleunigt.

Zu den weiteren Vorteilen von Serverless gehören:

  • Pay-as-you-go Bezahlmodell: Bei Serverless werden nur die tatsächlich genutzten Rechenressourcen bezahlt, was die Technologie zu einer kosteneffizienten Option macht, insbesondere für sporadische oder unvorhersehbare Belastungen.

  • Automatische Skalierung: Serverless-Plattformen skalieren ihre Anwendungen automatisch je nach Bedarf und gewährleisten so eine optimale Leistung ohne manuelle Eingriffe. Dies erleichtert die Bewältigung schwankender Arbeitslasten und hilft, eine Über- oder Unterversorgung mit Ressourcen zu vermeiden.

  • Kürzere Markteinführungszeit: Durch die Abstrahierung der Serververwaltung können sich Entwickelnde auf das Schreiben von Anwendungscode konzentrieren, wodurch sich der Zeit- und Arbeitsaufwand für die Bereitstellung neuer Funktionen und Produkte verringert. Dies führt zu schnelleren Releases und einer kürzeren Markteinführungszeit.

  • Erhöhte Sicherheit: Da der Cloud-Anbieter die zugrunde liegende Infrastruktur verwaltet, ist er für die Sicherheit der Plattform verantwortlich und befreit die Entwickelnden von der Last des Patchens und der Wartung der Server. Dies kann zu sichereren Anwendungen und somit geringeren Sicherheitsrisiken führen.

Durch die Nutzung dieser Vorteile spielt die Serverless-Technologie eine Schlüsselrolle bei der Förderung von DX-Innovationen und ermöglicht die Entwicklung skalierbarer, leistungsstarker Anwendungen.

Serverless-Produkte mit guten DX-Innovationen: PlanetScale als Beispiel

In diesem Abschnitt werden wir uns PlanetScale als Beispiel für ein Serverless-Produkt ansehen, das ausgezeichnete DX bietet. Natürlich gibt es Alternativen wie Neon oder CockroachDB, die ebenfalls einen Blick wert sind. PlanetScale ist ein Serverless-Datenbankservice, der den Prozess der Erstellung, Bereitstellung und Verwaltung von Datenbanken in der Cloud erheblich vereinfacht.

Zu den herausragenden Merkmalen von PlanetScale gehören:

  • Schema-Management: PlanetScale ermöglicht es Entwickelnden, Branches mit verschiedenen Schemata zu erstellen, sie unabhängig voneinander zu testen und Änderungen ohne Ausfallzeiten zusammenzuführen.
  • Verbindungspooling und Lastausgleich: Die Plattform verwaltet die Verbindungen zur Datenbank effizient, verteilt die Last gleichmäßig auf die Instanzen und sorgt für optimale Leistung.
  • Globale Skalierung: PlanetScale unterstützt horizontales Sharding und globale Replikation, sodass die Datenbank über mehrere Regionen hinweg skaliert werden kann und ein weltweiter Zugriff mit geringer Latenz möglich ist.

Die Liste lässt sich fortsetzen: Funktionen wie Hochverfügbarkeit und Datensicherheit sorgen dafür, dass Entwickelnde mit einer zuverlässigen und sicheren Plattform arbeiten können. Es ist jedoch wichtig zu beachten, dass Innovationen manchmal mit Einschränkungen einhergehen können. Im Fall von PlanetScale sind Fremdschlüssel aufgrund der verwendeten Technologie (Vitess), die Skalierbarkeit und Leistung in den Vordergrund stellt, nicht erlaubt. Das Verbot von Fremdschlüsseln trägt dazu bei, Abhängigkeiten zwischen den Shards zu vermeiden und vereinfacht den Sharding-Prozess, wodurch die horizontale Skalierung der Datenbank erleichtert wird. Dieser Ansatz mag zwar ein wenig beängstigend klingen, ist aber bei YouTube, GitHub, Slack und anderen großen Unternehmen erprobt.

Es ist wichtig, diese Einschränkungen zu verstehen, da sie die Gesamtkosten für die Nutzung einer Serverless-Plattform wie bspw. PlanetScale beeinflussen können. Ein mangelndes Verständnis der Serverless-Plattformen und ihrer Grenzen kann zu ineffizienten Konfigurationen oder zur falschen Nutzung von Ressourcen führen, was höhere Kosten als erwartet verursacht.

Konkrete Beispiele zu Kostenrisiken

PlanetScale-Problem mit fehlendem Index

Ein Beispiel für ein Kostenrisiko im Zusammenhang mit der Serverless-Technologie sind die fehlenden Fremdschlüssel von PlanetScale. Wie bereits erwähnt, sind Fremdschlüssel in PlanetScale nicht erlaubt, was bedeutet, dass die Indizes, die normalerweise automatisch für Fremdschlüsselspalten generiert werden, nicht vorhanden sind. Um die Abfrageeffizienz zu erhalten, müssen die Entwickelnden diese Indizes manuell hinzufügen.

Ein fehlender Index kann problematisch sein, insbesondere bei der Abfrage großer Datenmengen. Ohne einen Index muss die Datenbank einen vollständigen Tabellenscan durchführen, bei dem jede Zeile der Tabelle untersucht wird, um die relevanten Daten zu finden. Dieser Prozess ist äußerst ineffizient und kann zu längeren Antwortzeiten und erhöhtem Ressourcenverbrauch führen.

Das Preismodell von PlanetScale sieht eine Abrechnung auf der Grundlage der Anzahl der bei Abfragen geprüften Zeilen vor. Wenn also ein fehlender Index zu einem vollständigen Tabellenscan führt, können die Kosten für die Nutzung des Dienstes aufgrund der höheren Anzahl der geprüften Zeilen erheblich steigen.

Ein praktisches Beispiel für dieses Problem ist die Erfahrung von Brian Anglin, dem wegen fehlender Indizes in seiner PlanetScale-Datenbank 1.000 Dollar pro Tag in Rechnung gestellt wurden. Brians Geschichte dient als mahnendes Beispiel für Entwickelnde, die Serverless-Technologie einsetzen, und verdeutlicht, wie wichtig es ist, die Nuancen und Einschränkungen der Plattform zu verstehen. Einzelheiten zu Brians Erfahrungen können in seinem Blogpost nachgelesen werden.

Vercel Edge Function Timeout und Retry Loop

Selbst in kleineren Projekten und Webhosting-Szenarien können Kostenrisiken durch unsachgemäße Implementierung oder Missverständnisse entstehen. Vercel, eine beliebte Serverless-Hosting-Plattform, die für ihre hervorragende DX bekannt ist, wird von Entwickelnden genutzt, die von Hobbyisten bis hin zu Profis in Unternehmen wie Facebook reichen. Trotz der Einfachheit der Nutzung können unerwartete Kosten entstehen, wenn die Entwickelnden nicht vorsichtig sind.

Ein Hobbyentwickler teilte seine Erfahrung mit einer hohen, unerwarteten Vercel-Rechnung in einem Entwickelnden-Discord mit, als er tRPC (ein typsicheres Remote-Procedure-Call-Framework für typsichere End-to-End-APIs) in Verbindung mit Edge-Funktionen ausprobierte. Da er mit dem Konzept nicht vertraut war, verwendete er es fälschlicherweise in einem Next.js-Projekt, indem er tRPC von der Server-Seite zur Server-Seite aufrief, anstatt vom Client zum Server. Dieser Fehler löste eine Timeout- und Retry-Schleife der Edge-Funktionen aus, was dazu führte, dass die Edge-Funktionen wiederholt fehlschlugen und erneut versucht wurden.

serverless_vercel

Die Wiederholungen der Edge-Funktionen führten zu einer massiven Überschreitungsgebühr von 9.000 GB-Stunden für die Funktionsausführung in Höhe von etwa 3.000 US-Dollar. Dieses Problem entstand durch das Experimentieren mit einer unbekannten Technologie in einer Serverless-Umgebung, ohne das Sicherheitsnetz eines Hobby-Plans zu nutzen. Während viele Serverless-Plattformen, darunter Vercel und PlanetScale, Hobby- oder Free-Tier-Pläne anbieten, bei denen der Betrieb normalerweise eingestellt wird, sobald die zugewiesenen Ressourcen erschöpft sind, war er in der unglücklichen Lage, sein Konto zuvor hochgestuft zu haben. Das Sicherheitsnetz eines Hobby-Tarifs fällt auch weg, wenn man die Produkte zu gewerblichen Zwecken einsetzt.

Dieses Beispiel verdeutlicht, wie wichtig es ist, die Nuancen der Serverless-Plattformen und der in Verbindung mit ihnen verwendeten Tools zu verstehen, selbst bei kleineren Projekten und Webhosting-Szenarien.

Shopifys BigQuery-Fall

Bonusfall für investierte Lesende: Shopify behebt einen BigQuery-Fehler in Höhe von 1 Million Dollar.

Fazit

Zusammenfassend lässt sich sagen, dass das Potenzial für unerwartete Kosten bei Serverless-Plattformen zwar beängstigend erscheinen mag, es aber wichtig ist, sich daran zu erinnern, dass die Serverless-Technologie zahlreiche Vorteile und hervorragende Innovationen für Entwickelnde mit sich bringt. Es ist wichtig, sich der damit verbundenen Risiken bewusst zu sein, doch sollte dies nicht die Vorteile überschatten, die Serverless-Plattformen bieten. Indem Entwickelnde informiert bleiben, können sie Strategien anwenden, um diese Risiken zu minimieren. So können sie die Leistungsfähigkeit und Flexibilität von Serverless-Lösungen voll ausschöpfen und gleichzeitig Innovationen vorantreiben und skalierbare, effiziente Anwendungen erstellen.