Zum Inhalt springen
BlogTools für EntwicklerPortabilität in der Cloud: Ereignisgesteuerte Architektur (EDA) und Serverless Computing

Portabilität in der Cloud: Ereignisgesteuerte Architektur (EDA) & Serverless Computing

Portabilität in der Cloud: Ereignisgesteuerte Architektur (EDA) & Serverless Computing

Die ereignisgesteuerte Architektur (EDA) reagiert auf Ereignisse oder Nachrichten und löst spezifische Aktionen aus, anstatt sich auf eine direkte, synchrone Kommunikation zu verlassen. EDA ist asynchron, so dass die Komponenten unabhängig voneinander arbeiten können, was die Reaktionsfähigkeit und Leistung des Systems bei variabler Arbeitslast verbessert.

Betrachten wir zwei einfache Beispiele: das Hochladen von Dateien und die Registrierung eines neuen Benutzers. Beide Vorgänge können über einen synchronen Anfrage-Antwort-Fluss (d. h. REST API), aber es müsste eine neue Anfrage gestellt werden, um den Status des Datei-Uploads zu aktualisieren oder um die nächste Aktion auszulösen, nachdem die neuen Benutzerdaten in die Datenbank eingefügt wurden. Stellen Sie sich vor, Sie haben eine Reihe von Task-Runnern, die ständig nach Nachrichten fragen; sie arbeiten unermüdlich durch Zeiten der Funkstille oder des unzusammenhängenden Geplauders, um gelegentlich eine Nachricht zu erhalten, auf die sie reagieren können. Sie können sich vorstellen, dass dies nicht die effizienteste Nutzung der Elastizität von Cloud-Computing-Ressourcen auf Abruf ist. Die EDA löst dieses Problem mit einem Push-basierten Ansatz.

Ereignisgesteuerte Systeme können schnell skaliert werden, indem man Komponenten nach Bedarf hinzufügt oder entfernt, und sie sind äußerst ausfallsicher, da das System auch dann weiter funktionieren kann, wenn eine Komponente ausfällt. EDA eignet sich auch gut für die Echtzeitverarbeitung und den Umgang mit großen Datenmengen, da die Komponenten auf Ereignisse reagieren und Daten verarbeiten können, sobald sie eintreffen, ohne auf einen vollständigen Datensatz zu warten.

Warum sollten Sie EDA in Betracht ziehen?

  • Erhöhte Systemflexibilität: Die lose Kopplung einer ereignisgesteuerten Architektur ermöglicht es Ihnen, Komponenten problemlos zu ändern, hinzuzufügen oder zu entfernen, ohne dass sich dies auf das gesamte System auswirkt, so dass es an veränderte Anforderungen angepasst werden kann.
  • Verbesserte Skalierbarkeit: EDA unterstützt eine einfache horizontale Skalierung, so dass Unternehmen eine höhere Arbeitslast oder einen höheren Datenverkehr bewältigen können, indem sie bei Bedarf weitere Instanzen von Komponenten oder Diensten hinzufügen.
  • Erhöhte Ausfallsicherheit des Systems: Die asynchrone Kommunikation und die entkoppelten Komponenten der EDA tragen zu einer verbesserten Fehlertoleranz bei, da der Ausfall einer Komponente nicht unbedingt zu einem systemweiten Ausfall führt.
  • Echtzeit-Verarbeitungsfunktionen: EDA ermöglicht die Echtzeitverarbeitung großer Datenmengen und komplexer Ereignismuster und eignet sich daher für Unternehmen, die sofortige Einblicke oder Reaktionen auf sich schnell ändernde Bedingungen benötigen.
  • Optimierte Ressourcennutzung: Da EDA nur dann auf Ereignisse reagiert, wenn sie eintreten, trägt sie zur Optimierung der Ressourcennutzung bei und verringert den Bedarf an ständig laufenden Prozessen, was zu Kosteneinsparungen und verbesserter Effizienz führen kann.

Cloud Natives Serverloses Rechnen

EDA ermöglicht Anwendungsentwicklungsmodelle wie Serverless Computing, so dass der Code portabel und anbieterunabhängig ist, so dass Sie Ihren Cloud-Anbieter auf der Grundlage von Funktionen, unterstützter Sprache, Kosten usw. auswählen können. Functions-as-a-Service (FaaS) ist ein beliebtes Produkt, das von vielen Cloud-Anbietern angeboten wird und es den Benutzern ermöglicht, Funktionen und Anwendungsinfrastruktur in einem zu verwalten. Der Cloud-Anbieter übernimmt die Verantwortung für die zugrunde liegende Infrastruktur, einschließlich Serverbereitstellung, Skalierung und Wartung, so dass sich die Entwickler auf das Schreiben von Code konzentrieren können.

Bekannte FaaS-Dienste wie AWS Lambda, Azure Functions und Google Cloud Functions werden von uns als plattformspezifisch bezeichnet. Sie binden Sie oft an einen bestimmten Cloud-Anbieter und bieten keine einfache Möglichkeit, von dort zu migrieren. Wir sprechen oft über Knative, eine Open-Source-Plattform auf Kubernetes-Basis für die Ausführung von Serverless, die Ihre Anwendung innerhalb weniger Sekunden von 0 auf N Replikate skalieren kann. Die Skalierung auf 0 ist fantastisch, weil sie es Kubernetes und Knative ermöglicht, Ressourcen nach Bedarf neu zuzuweisen.

Ein einziges Codefragment kann die Ressourcen automatisch skalieren, da es mehrmals parallel aufgerufen werden kann. Im Kern sind die zuvor erwähnten plattformspezifischen FaaS-Angebote aufgrund ihrer unvorhersehbaren Preisgestaltung nicht günstig. Wenn Sie Knative über unseren verwalteten Kubernetes-Service auf unseren Compute-Instanzen ausführen, zahlen Sie einen pauschalen und vorhersehbaren Preis und müssen sich keine Gedanken über die Bezahlung pro Ausführung machen, die nach einigen kostenlosen Stufen einsetzt.

Warum sollten Sie Serverless in Betracht ziehen?

  • Kosteneffizienz: Das Pay-as-you-go-Preismodell des Serverless Computing kann zu Kosteneinsparungen führen, da Unternehmen nur für die genutzte Rechenzeit zahlen, ohne Ressourcen im Voraus zuzuweisen.
  • Verbesserte Skalierbarkeit: Serverless Computing kann die Ressourcen automatisch an den Bedarf anpassen und so sicherstellen, dass Anwendungen ohne manuelle Eingriffe oder Ausfallzeiten eine höhere Arbeitslast bewältigen können.
  • Geringerer betrieblicher Aufwand: Beim serverlosen Computing verwaltet der Cloud-Anbieter die zugrunde liegende Infrastruktur, sodass sich die IT-Teams auf die Anwendungsentwicklung, Innovation und andere strategische Initiativen konzentrieren können.
  • Kürzere Markteinführungszeit: Die vereinfachten Entwicklungs- und Bereitstellungsprozesse, die Serverless Computing bietet, können Unternehmen dabei helfen, die Veröffentlichung neuer Funktionen, Updates und Fehlerbehebungen zu beschleunigen und so ihren Wettbewerbsvorteil zu vergrößern.
  • Flexibilität und Anpassungsfähigkeit: Serverloses Computing ermöglicht es Unternehmen, Anwendungen mit einer Vielzahl von Programmiersprachen und Technologien zu erstellen und bereitzustellen. So können sie sich leichter an veränderte Anforderungen anpassen oder bei Bedarf neue Technologien einbinden.

Wie bereits erwähnt, basiert das serverlose Computing auf einer ereignisgesteuerten Architektur, d. h. Funktionen werden durch Ereignisse wie HTTP-Anfragen, Datei-Uploads, Datenbankaktualisierungen usw. ausgelöst. Dies kann dazu beitragen, die Anwendungsarchitektur zu vereinfachen und die Skalierbarkeit zu verbessern.

Serverlose Funktionen sollten auch zustandslos sein. Sie speichern keine Daten oder Zustände zwischen den Aufrufen, wodurch sichergestellt wird, dass die Funktionen leicht skalierbar sind und bei einem Ausfall ersetzt werden können. Sie sollten auch kurzlebig sein, damit keine Ressourcen verschwendet werden und die Funktion schnell skaliert werden kann. Wenn die Aufgabe einer Funktion langwierig ist, sollten Sie prüfen, ob ein ständig laufender Dienst nicht besser geeignet ist.

Vergessen Sie nicht, Ihre serverlosen Funktionen zu überwachen und zu protokollieren, um sicherzustellen, dass sie wie erwartet funktionieren, und um etwaige Probleme oder Fehler zu erkennen. Verwenden Sie Tools wie Log-Aggregatoren und Application Performance Monitoring (APM)-Tools wie Prometheus und Grafana. Vergessen Sie nicht, Ihre Funktionen mit Best Practices wie Authentifizierung, Autorisierung und Verschlüsselung zu sichern. Dies gewährleistet, dass die Anwendung sicher ist und sensible Daten geschützt werden. Testen Sie sie gründlich, bevor Sie sie in der Produktion einsetzen, um sicherzustellen, dass sie wie erwartet funktionieren und keine Schwachstellen aufweisen.

Serverloses Computing kann kosteneffektiv sein, aber es ist wichtig, Kostenoptimierungstechniken wie Funktionsoptimierung, gemeinsame Nutzung von Ressourcen und automatische Skalierung einzusetzen, um Kosten zu senken und die Effizienz zu verbessern. Bewerten Sie Ihre Arbeitslast, Nutzungsmuster und Anforderungen, um festzustellen, ob Serverless Computing für Ihren speziellen Anwendungsfall kosteneffizient ist. Berücksichtigen Sie die erwarteten Nutzungsmuster, die Leistungsanforderungen und die Preisstruktur der Serverless-Plattform, die Sie verwenden möchten.


Kommentare

Kommentar abgeben

Ihre E-Mail Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit *gekennzeichnet