Nabugu - stock.adobe.com
Serverless Computing hat seit seiner Einführung ein erhebliches Wachstum in Bezug auf Akzeptanz, Funktionen und Möglichkeiten erfahren. Das Kernkonzept des Serverless Computings besteht darin, Rechenkapazität für Softwareanwendungen zu nutzen, ohne die zugrunde liegende Infrastruktur verwalten zu müssen.
Serverless Computing bietet eine flexible Strategie für Anwendungsentwickler zur Einführung neuer Funktionen in Bereichen wie den folgenden:
- API-Frontends
- Backend-Komponenten für Anwendungen
- Datenbankverwaltung
- Datenverarbeitung und -analytik
- Nachrichtenübermittlung
- eingebaute Integrationen mit mehreren Cloud-Diensten
Aus Entwicklersicht vereinfacht Serverless Computing die anfängliche Entwicklung und das Testen der Anwendungsfunktionalität, da keine komplexe serverbasierte Infrastruktur gestartet werden muss, auf der mehrere Softwarekomponenten laufen. Stattdessen bietet Serverless Computing eine Abstraktionsschicht, die in Entwicklungsumgebungen einfach gestartet, bereitgestellt und getestet werden kann.
Die Tatsache, dass Serverless Computing gebrauchsfertige Rechenkapazitäten bereitstellt, bedeutet jedoch nicht, dass sich Anwendungseigentümer nicht auf operative Aufgaben konzentrieren müssen, wie zum Beispiel Start- und Bereitstellungsautomatisierung, Kapazitätszuweisung und detaillierte Überwachung. Es ist ein weit verbreiteter Irrglaube anzunehmen, dass Serverless Computing die betrieblichen Aufgaben in Produktionssystemen vereinfacht. Diese Annahme führt oft zu unvorhergesehenen Herausforderungen beim Start von Live-Anwendungen mit Kundenkontakt.
Serverless Computing vereinfacht zwar die Verfügbarkeit von Rechenkapazitäten, bringt aber auch einige Bereiche mit sich, die wie bei jeder anderen Cloud-basierten Strategie detailliert konfiguriert und überwacht werden müssen.
Vergleich der Serverless-Computing-Services
AWS Lambda ist wahrscheinlich das bekannteste Beispiel für Serverless Computing, aber die großen Cloud-Anbieter bieten eine Vielzahl von Produkten an. Diese Produkte decken unter anderem API-Endpunkte, Datenbanken, Front-End- und Backend-Computing, Workflow-Management, Datenverarbeitung und -analyse ab.
AWS
Derzeit bietet AWS die größte Auswahl an Diensten, darunter die folgenden:
- AWS-Lambda-Funktionen
- Amazon API Gateway
- Amazon Simple Notification Service
- Amazon Simple Queue Service
- Amazon Kinesis
- Amazon EventBridge
- AWS Fargate
- Amazon Athena
- Amazon EMR Serverless
- Amazon Aurora Serverless
- Amazon OpenSearch Serverless
- Amazon DynamoDB
Azure
Zu den Azure-Diensten gehören die folgenden:
- Azure Functions
- Azure Kubernetes Service für Serverless Kubernetes
- Azure Container App für Serverless containerisierte Microservices
- Azure SQL Database für Serverless Dienste
Google Cloud
Zu den Google-Cloud-Diensten gehören die folgenden:
- Cloud Functions
- Cloud Run
- Google App Engine
- Firestore
- Produkte zur Dienstintegration
Obwohl alle Cloud-Anbieter nützliche serverlose Rechendienste anbieten, sollten Kunden neben den für eine Anwendung erforderlichen Funktionen auch die Anzahl der vorhandenen Komponenten berücksichtigen, die jeder Cloud-Anbieter bereits einsetzt. Die Wartung einer Hybrid-Cloud-Implementierung kann eine Herausforderung sein, weshalb es vorzuziehen ist, serverlose Optionen zu nutzen, die von der Cloud-Plattform angeboten werden, auf der der Rest der Architektur implementiert ist. Wenn Sie eine Neuimplementierung in Erwägung ziehen, ist AWS aufgrund seines breiten Serviceangebots wahrscheinlich die empfohlene Option.
IaC und automatisierte CI/CD-Pipelines verwenden
Der Start einer Anwendung, die sich auf serverlose Technologie stützt, führt oft zu einer großen Anzahl von Cloud-Komponenten, die im Vergleich zu einer serverbasierten Bereitstellung verwaltet werden müssen. Zu diesen Komponenten gehören unter anderem serverlose Funktionen, API-Frontends und Messaging-Komponenten.
In einer serverbasierten Umgebung kann die Anwendungsfunktionalität zum Start einer einzigen Infrastrukturkomponente führen. Bei Serverless Computing kann das jedoch dazu führen, dass eine größere Anzahl von Serverless-Komponenten gestartet und deren Code verwaltet wird. Diese Anzahl kann manchmal Dutzende oder sogar Hunderte von Komponenten umfassen, wie zum Beispiel Lambda-Funktionen.
Daher ist es wichtig, Infrastructure as Code (IaC) und Automatisierungs-Tools zu verwenden, um diese Komponenten zu starten und zu warten. Beispiele für IaC-Tools sind die folgenden:
- AWS CloudFormation
- AWS Serverless Application Model
- Azure Resource Manager
- Google Cloud Deployment Manager
- Serverless Framework
- Terraform
Es ist auch notwendig, automatisierte CI/CD-Pipelines für Codebereitstellungen zu verwenden. Das ist erforderlich, da im Vergleich zu einer serverbasierten Strategie potenziell eine große Anzahl von Komponenten aktualisiert werden muss, wenn neuer Code veröffentlicht wird,
Es ist eine gängige Praxis, diese Tools durch manuelles Starten in Entwicklungsumgebungen zu testen. Anwender sollten jedoch auch eine Automatisierung für Test- und Produktionsumgebungen implementieren. Die Implementierung von Automatisierung ist eine Best Practice, die für alle Arten von Cloud-Bereitstellungen gilt, aber in serverlosen Umgebungen ist sie noch wichtiger.
Kosten evaluieren
Es ist auch wichtig, die Kosten für Serverless Computing frühzeitig zu bewerten. Cloud-Plattformen berechnen die folgenden Faktoren:
- die jeder Serverless-Komponente zugewiesene Rechenkapazität, zum Beispiel CPU und Memory
- die Anzahl der Ausführungen für jeden Prozess
- die Datenverarbeitung, sofern zutreffend
- die Dauer der einzelnen Ausführungen
Diese Variablen führen oft zu höheren Preisen im Vergleich zu serverbasierten Gegenstücken, die dieselbe Verarbeitungskapazität bewältigen können, abhängig von den Nutzungsmustern.
Während Serverless Computing für viele Anwendungen eine kosteneffiziente Berechnungsstrategie darstellt, nehmen die Kostenvorteile ab, sobald das Volumen einen Punkt erreicht, an dem konstante Berechnungsausführungen erforderlich sind. Typischerweise führen serverlose Anwendungen mit einem konstant hohen Bedarf an rechenintensiven Ausführungen zu höheren Preisen im Vergleich zu ihren serverbasierten Pendants.
Anwendungen mit starken Nutzungsschwankungen können jedoch von der dynamischen Zuweisung von Rechenressourcen profitieren, die Serverless-Computing-Optionen bieten. Ein wesentlicher Vorteil von Serverless Computing ist die Möglichkeit, die ständige Bereitstellung von Servern mit hoher Rechenkapazität zu vermeiden.
Da die Preisszenarien anwendungsspezifisch sind, gibt es keine allgemeingültige Antwort für den Vergleich der Preise von serverlosen und serverbasierten Optionen. Es ist von entscheidender Bedeutung, dass Anwendungseigentümer die Preisszenarien frühzeitig im Design- und Implementierungsprozess berechnen.
Verstehen Sie die Anwendungsfälle
In Anbetracht der Komplexität des Serverless Computings wird empfohlen, dass die Mitglieder des Entwicklungs- und Betriebsteams ein solides Verständnis der anwendbaren Anwendungsfälle für diese Technologie sowie ihrer Vor- und Nachteile haben.
Serverless-Computing-Implementierungen erfordern für den Einstieg keine umfangreiche Schulung. Es ist jedoch wichtig, dass Unternehmen sicherstellen, dass ihr Team über fortgeschrittene Serverless-Computing-Funktionen, Bereitstellungsautomatisierung, Preisgestaltung sowie Vorteile und Einschränkungen von Serverless Computing verfügt, bevor sie produktionsreife Serverless-Computing-Anwendungen einführen.