freshidea - Fotolia
Entwickler finden Gefallen an Serverless-Plattformen
Serverless-Entwicklung erhält immer mehr Zuspruch. Es bietet zwar Vorteile, doch einige Tools, funktionieren nicht wie erwartet und Entwickler müssen einiges lernen.
Die Entwicklung von Serverless-Anwendungen bleibt ein heißer Trend, und Softwareentwickler sind begeistert von den Vorteilen einer Serverless-Plattform und insbesondere von der Möglichkeit, einige oder alle ihrer Java-Anwendungen von traditionellen Servern und Containern auf Plattformen wie AWS Lambda, Azure Functions oder Google Cloud Functions zu verlagern.
Eine gute Architektur für Serverless-Apps beinhaltet oft eine Mischung aus BaaS- und FaaS-Elementen (Backend as a Service, Function as a Service). FaaS-Angebote wie AWS Lambda sind oft das, was Entwickler weitgehend als Serverless betrachten, aber sie sollten auch die Notwendigkeit von BaaS-Angeboten für eine nahtlosere Authentifizierung und einen nahtloseren Zugriff auf das Datenmanagement erkennen. In Kombination erleichtern sie die Entwicklung von Anwendungen und die automatische Bereitstellung von Rechenressourcen als Code.
Neue Probleme berücksichtigen
Serverless-Plattformen haben aus finanzieller Sicht einige Vorteile und lassen sich entsprechend einfach skalieren. Gleichzeitig können Entwickler damit neue Funktionen innerhalb der Plattform entwickeln. Es ist jedoch wichtig zu erkennen, dass diese Vorteile nur die Spitze des Eisbergs sind. „Anwender müssen beim Einsatz manchmal bluten“, warnt Nathaniel Schutta, Softwarearchitekt bei Pivotal.
Schutta nennt hierfür ein Beispiel: Er war besorgt, als einer seiner Entwickler ihm begeistert von seinem Plan erzählte, eine ganze Anwendung in Serverless-Funktionen umzuwandeln. „Die Herausforderung ist: Wir enden damit, die Technologie nur aufgrund eines Hypes einzusetzen und bedauern dann die Entscheidung in Zukunft“, sagt er.
Eine Herausforderung bei serverlosen Funktionen besteht darin, dass sie für viele Anwendungsfälle nicht gut geeignet sind. Obwohl die Serverless-Entwicklung einige Einschränkungen der traditionellen serverbasierten Entwicklung überwinden kann, kann sie auch neue Herausforderungen mit sich bringen, die Entwickler gerade erst lernen zu bewältigen. „Ich bin erstaunt, wie oft Menschen eine Technologie an Orte bringen, an denen sie nicht gut passt“, sagt Schutta.
Nathaniel SchuttaPivotal
Eine solche Herausforderung ist, dass viele Serverless Tools nicht wie erwartet funktionieren. So stieß beispielsweise ein ukrainischer Entwickler aus Kiew auf einige Probleme bei der Fehlerbehebung von Backend-Orchestrierungsfehlern zwischen Serverless-Funktionen auf AWS. Nach einigen frustrierenden Monaten mit AWS CloudFormation wechselte der Entwickler zu Terraform und erzielte deutlich bessere Ergebnisse.
Theoretisch war CloudFormation besser mit AWS Lambda integriert, aber in der Praxis brachen die Apps immer wieder zusammen. Terraform hatte bessere Tools, um die Verbindungen zwischen Serverless-Funktionen zu kodieren und aufgetretene Probleme zu beheben.
Balance zwischen Nutzen, Lernen und Sicherheit
Mike Roberts, Mitbegründer von Symphonia, einem Beratungsunternehmen für Serverless- und Cloud-Technologie, empfiehlt Entwicklern, die richtige Balance zwischen Nutzen, Lernen und Sicherheit zu finden, bevor sie entscheiden, wo sie Serverless-Anwendungen implementieren.
Zu den Hauptvorteilen der Serverless-Architektur gehören eine Reduzierung der Server- und Prozesswartung, Skalierbarkeit und ein besseres Verhältnis zwischen Nutzen und Kosten. Serverless-Architekturen sind besonders nützlich, um den Aufwand für die Erstellung und Bereitstellung neuer Anwendungen von Grund auf zu reduzieren und schnell Feedback zu erhalten.
Der Serverless-Experimentierprozess kann auch eine großartige Lernmöglichkeit bieten. Aber Entwickler können mehr lernen, indem sie mehrere ereignisgesteuerte Funktionen in ein Serverless-Ökosystem integrieren, im Vergleich zur Programmierung einfacher serverloser Funktionen. Umgekehrt bieten einfache Funktionen mehr Sicherheit für kritische Unternehmenssysteme als ein neuer Serverless-Infrastruktur-Rollout.
Ausgangspunkte für Serverless
Eine einfache Möglichkeit, sich mit Serverless-Plattformen zu beschäftigen, besteht darin, betriebsbezogene Anwendungen zu entwickeln, die Tools zur App-Überwachung verbessern und die Skalierung automatisieren. Diese Art von Anwendungen werden in der Regel von IT-Betriebsteams erstellt und haben nur minimale Auswirkungen auf den bestehenden Anwendungscode. „Wenn wir über die Ziele nachdenken, ist dies ein sicherer Ansatz für die Einführung von Serverless-Systemen“, sagt Roberts.
Wenn sich ein Entwickler wohl fühlt, wäre der nächste Schritt die Implementierung von Serverless-Anwendungen für Offline-Aufgaben, wie zum Beispiel Cron-Jobs. Dieser Ansatz kann es einfacher machen, einen riesigen wöchentlichen Cron-Job zu trennen, der 50 Aufgaben in kleinere Aufträge umwandelt, die sich granularer steuern lassen.
Man sollte jedoch beachten, dass viele Serverless-Funktionen eine maximale Lebensdauer haben und für lange Batch-Jobs möglicherweise nicht der beste Ansatz sind. Ein solcher Schritt ist relativ sicher und bietet die Möglichkeit, grundlegende serverlose Logikabläufe zu erlernen, schränkt aber die Möglichkeit ein, etwas über ereignisgesteuerte Programmierung zu lernen.
Als nächstes könnte ein Entwickler Serverless-Aktivitäten implementieren, die Echtzeitkomponenten bereitstellen, die in größere Anwendungen integriert sind, um mehr über ereignisgesteuerte Programmierparadigmen zu erfahren. Ein beliebter Anwendungsfall ist beispielsweise der Aufbau von Messaging Parsern zur Umstrukturierung eingehender Daten für nachgelagerte Anwendungskomponenten.
Diese Ebene bietet auch die Möglichkeit, mit Serverless Messaging Tools wie dem Amazon Simple Notification Service und Amazon Kinesis zu experimentieren und damit verbundene Skalierungsprobleme zu untersuchen, wenn man Serverless-Anwendungen mit etwas weniger Skalierbaren, wie beispielsweise einer Datenbank, verbindet.
Schließlich wäre die vierte Ebene ein vollwertiges Serverless-Ökosystem. So hat beispielsweise das Online-Medienunternehmen Bustle diesen Ansatz für sein Backend übernommen. Es bietet Entwicklern eine Gelegenheit, sich über das ereignisgesteuerte Programmierparadigma zu informieren und verspricht den größten Nutzen – wenn es gut implementiert ist.
Aber das ist ein großes Wenn. Serverless-Anwendungen haben verschiedene Arten von Einschränkungen und Fehlermodi, die Entwickler möglicherweise nicht beheben können. Eine große Sorge für Roberts ist, wenn etwas schief geht, kann es andere Bereiche des Unternehmens betreffen, einschließlich serverbasierter Anwendungen.