Serverless Computing. Wofür braucht man das und wofür eignet es sich eher nicht?


Studienarbeit, 2020

21 Seiten, Note: 1,3


Leseprobe

1 Inhaltsverzeichnis

1 Inhaltsverzeichnis

2 Einleitung

3 Was ist Serverless Computing?
3.1 Definition und Merkmal
3.1.1 Definition
3.1.2 Merkmale
3.2 Serverless Computing Anbieter
3.2.1 AWS Lambda
3.2.2 Google Functions
3.2.3 Microsoft Azure Functions

4 Vor und Nachteile von Serverless Computing
4.1 Vorteile von Serverless Computing
4.1.1 Einsatz und Wartung
4.1.2 Skalierbarkeit
4.1.3 Green Computing
4.1.4 Kurze Einführungszeit
4.2 Herausforderungen von Serverless Computing
4.2.1 inbegriffene Einschränkungen
4.2.2 Einschränkungen bei der Implementierung

5 Anwendungsmöglichkeiten von Serverless Computing
5.1 Nachrichtengesteuerte Anwendungen
5.2 Single-page Applikation
5.2.1 PhotoVogue
5.2.2 Die Herausforderungen von PhotoVogue
5.2.3 Die Lösung
5.2.4 Die Vorteile

6 Zusammenfassung

7 Fazit

8 Literaturverzeichnis

9 Abbildungsverzeichnis

2 Einleitung

In diesem Dokument wird die Technologie hinter Serverless Computing erörtert. Es beginnt mit einer Einführung in die Konzepte des Serverless Computing, den Vor- und Nachteilen dieser Technologie und beschreibt, wofür serverlose Anwendungen üblicherweise eingesetzt werden. Am Ende werden wir den Inhalt dieses Dokuments kurz zusammenfassen und die Frage beantworten „Wofür man Serverless Computing braucht und wofür es sich eher nicht eignet".

3 Was ist Serverless Computing?

Serverloses Computing ist ein Ausführungsmodell für die Cloud, bei dem nur genau so viel Rechenressourcen und Speicherplatz dynamisch zugewiesen wird, wie zur Ausführung eines Codes benötigt wird. Dieser Vorgang wird auf einem von dem Cloud-Anbieter gewarteten Server ausgeführt. Serverless Computing ist also nicht tatsächlich Serverless. Der Begriff Serverless wird in dem Kontext nur benutzt, da der Cloud- Anbieter, der eine Serverless Computing Struktur hostet, die Bereitstellung und Wartung vollständig übernimmt. Natürlich sind immer noch Server beteiligt, aber nicht eigene, sondern die Server des Anbieters. Aus der Sicht des Entwicklerteams, das den Code schreibt und einsetzt, gibt es keine Server da Sie die Server nicht verwalten müssen und denn Code einfach bei ihrem Provider hochladen.

Wie Entwickler Mike Roberts (Roberts, 2018).erklärt, wurde der Begriff zuerst für so genannte Backend-as-a-Service Anwendungen (BaaS) verwendet, bei denen eine mobile Anwendung eine Verbindung zu einem vollständig in der Cloud gehosteten Back-End-Server herstellt. Wenn heute jedoch von serverlosem Computing oder einer serverlosen Architektur gesprochen wird, dann sind damit Funktions-as-a-Service-Anwendungen (FaaS) gemeint, bei denen ein Kunde Code schreibt, der nur die Geschäftslogik beinhält, und diesen zu einem Provider hochlädt.

In der Folgenden Arbeit wird, wenn von Serverless Computing Anwendungen bzw. Providern gesprochen wird, primär von Anwendungen die Rede sein, die auf dem FaaS Prinzip bestehen. Da BaaS und FaaS jedoch in ihren Betriebseigenschaften miteinander verbunden sind werden sie oft in Kombination genutzt. Die meisten der großen Cloud Anbieter bieten „Serverless Portfolios" an die die sowohl BaaS- als auch FaaS-Produkte umfassen, beispielsweise Amazons Serverless Anwendung AWS Lambda.

3.1 Definition und Merkmal

Es gibt keine formale Definition für das Konzept des Serverless Computing. Da es verschiedene Serverless Computing Dienste gibt werden im Folgenden die gängigsten (Chaudhary S., 2017 S. 3) )anerkannten Dienste aufgezählt und besprochen.

3.1.1 Definition

3.1.1.1 Function as a Service

FaaS ist eine Entwicklung im Bereich des Cloud Computing, AWS erfand dieses Konzept mit ihrem Lambda-Angebot im Dezember 2014, dann kündigten Azure und Google in Form von Google Cloud Functions und Microsoft Azure Functions im Jahr 2016 an.

Function as a Service ist ein Cloud-Computing-Dienst, der dem Kunden eine Plattform bietet, um Anwendungen zu entwickeln, auszuführen und zu verwalten. Dies ohne sich dabei mit dem komplexen Aufbau oder der Wartung einer dazugehörige Infrastruktur beschäftigen zu müssen. Damit fällt die mit der Serverseitigen Infrastruktur zusammenhängende Entwicklung und Einführung einer Anwendung für den Entwickler komplett weg.

FaaS ist ein eventgesteuerter Lösungsansatz für das Serverless Computing. In einer Traditionellen monolithischen serverseitigen Anwendung werden mehreren Operationen in einer einzelnen Entity eingesetzt. Bei FaaS sind die Operationen nicht gebündelt, sondern werden als einzelne Functions, eine nach der anderen, auf eine von einem Anbieter bereitgestellte FaaS-Plattform hochgeladen.

Diese Funktionen sind in einem Serverprozess jedoch nicht kontinuierlich aktiv sondern bleiben inaktiv, bis sie ausgeführt werden müssen. Die FaaS-Plattform ist so konfiguriert, dass sie für jeden Vorgang auf ein bestimmtes Ereignis reagiert. Wenn dieses Ereignis eintritt, initiiert die Anbieterplattform die Funktion und ruft damit zum auslösenden Event auf. Sobald die Ausführung der Funktion beendet ist, kann die FaaS-Plattform abgebrochen werden.

3.1.1.2 Backup as a Service

Backup as a Service (BaaS) ist eine moderne Alternative zu traditionellen Datensicherungsansätzen. Bei BaaS ist ein Cloud-Computing-Dienst der sich mit dem Backup, der Wiederherstellung, Authentifizierung oder Benachrichtigung einer Anwendung befasst. Anstatt interne Datensicherungslösungen aufzubauen und zu warten, kaufen Unternehmen Backup- und Wiederherstellungsdienste von Cloud-basierten Anbietern. Damit wird die Ausführung und Verwaltung der Datensicherung an den Anbieter abgegeben. Sowohl BaaS als auch FaaS erfordern keine Ressourcen oder Management von den Kunden.

3.1.1.3 Microservices

Eine Anwendung, die aus Microservices besteht, führt lose miteinander gekoppelte Dienste, Microservices genannt, aus. Diese können dann unabhängig voneinander entwickelt, eingesetzt und gewartet werden. Jeder dieser Dienste ist für eine bestimmte, abgeschlossene Aufgabe zuständig und kann über einfache APIs mit anderen Diensten kommunizieren, um eine größere Anwendung zu bilden. Microservices erlauben eine einfache Skalierung bei punktuellen Auslastungsspitzen.

3.1.2 Merkmale

Um als Serverless Computing Service zu qualifizieren muss Ein Anbieter die folgenden Merkmale besitzen.Die vom Anbieter bereitgestellte Serverless Computing Plattform verwaltet, wie bereits erwähnt die Infrastruktur der Server. Zur Infrastruktur gehört das Betriebssystem, das Netzwerk , die Speicherkapazität, virtuelle und Physikalischen Umgebungen des Servers. Der Anbieter sollte automatische Skalierung anbieten bei dem die für die Anwendung benötigten Ressourcen nach Bedarf zur Verfügung gestellt werden. Die Preisberechnung der Plattform sollte darauf basieren wie viele Ressourcen der Kunde tatsächlich genutzt hat.

3.2 Serverless Computing Anbieter

3.2.1 AWS Lambda

Das allgemeine Konzept des Serverless Computing wurde von Amazon Web Services (AWS) um 2014 mit der Veröffentlichung von AWS Lambda 1 (Vgl. Roberts) auf den Markt gebracht. Amazon hatte einen Vorsprung von zwei Jahren bis die nächste Cloud Computing Software auf denn Markt kam. Damit war es nur natürlich, dass AWS Lambda die Serverless Computing Landschaft dominiert.

Durch die frühe Markteinführung gelang es AWS Lambda vor der Konkurrenz eine große Entwicklergemeinde mit dem System vertraut zu machen und ein breites Spektrum von Anwendungsfällen abzudecken.

AWS Lambda ist ein Serverless Computing Dienst, der Code als Reaktion auf Ereignisse ausführt und die zugrunde liegenden Rechenressourcen automatisch verwaltet. AWS Lambda kann dazu verwendet werden, um andere AWS-Dienste mit benutzerdefinierter Logik zu erweitern oder eigene Back-EndDienste zu erstellen. (Amazon)

Zum jetzigen Zeitpunkt unterstützt AWS Lambda Code, der in JavaScript, Node.js, Python, Java und C# geschrieben wurde. Lambda bietet API-Operationen an, mit denen Lambda-Funktionen mit Hilfe eines Deployment-Pakets erstellt und aktualisiert werden können. Diese werden in einer ZIP-Datei auf die Konsole hochgeladen oder in der Konsole selbst bearbeitet.

Zurzeit begrenzt AWS Lambda die Gesamtzahl der gleichzeitigen Ausführungen von Funktionen innerhalb einer bestimmten Region auf 1000. Das gleichzeitige Ausführen von Functions kann auf zwei Arten gesteuert werden, auf einzelner Funktionsebenen und auf Kontoebene. Außerdem beträgt die maximale Funktionsausführungszeit 900 Sekunden oder 15 Minuten.

AWS Lambda unterstützt die dynamische Skalierbarkeit als Reaktion auf erhöhten Datenverkehr. Was jedoch von einer Begrenzung der gleichzeitigen Ausführung auf Ebene einzelner Konten eingeschränkt wird.

3.2.2 Google Functions

Google Cloud Functions wurde 2017 als Beta-Version und 2018 zur allgemeinen Verfügbarkeit veröffentlicht. Das Angebot von Google hinkte etwa vier Jahre hinterher, hat es aber in vielerlei Hinsicht geschafft aufzuholen.

Google Cloud Functions ist eine Serverless Computing Umgebung für den Aufbau und die Verbindung von Cloud-Diensten. Mit Cloud Functions können einfache, zweckgebundene Funktionen geschrieben werden, die mit Ereignissen, die von der Cloud-Infrastruktur und deren Services ausgelöst werden, verknüpft sind. Die Funktion wird ausgelöst, wenn ein beobachtetes Ereignis ausgelöst wird.

Bei Google Cloud Functions variiert die Ausführung der Funktionen je nach dem welche Programmiersprache gewählt wurde. Derzeit werden Node.js 6, Node.js 7 und Python 3.7 unterstützt. Je nach ausgewählter Sprache werden diese Funktionen durch CLI, Zip-Upload, Inline-Webeditor, Cloud-Storage und Cloud-Storage-Repositories bereitgestellt.

Mit Google Cloud Functions gibt es keine Einschränkung für gleichzeitige HTTP-Aufrufe. Für andere Arten von Aufrufen beträgt die maximale Anzahl gleichzeitiger Funktionsanfragen 1000. Im Gegensatz zu anderen Dienstanbietern beträgt die maximale Ausführungszeit jedoch standardmäßig 60 Sekunden, die optional auf 540 Sekunden oder 9 Minuten erhöht werden kann. (Google, 2020)

Ein wichtiger Unterschied zwischen AWS und Google Cloud Functions besteht darin, dass die Parallelität bei AWS auf Kontoebene, bei Cloud Functions jedoch auf Projektebene gemessen wird.

Beispielsweise könnten man theoretisch 10 Funktionen mit jeweils 1.000 gleichzeitigen Ausführungen auf Cloud Functions haben, während man auf AWS nur eine solche Funktion ausführen könnte.

Bei Google Functions wird alles automatisch skaliert, allerdings skalieren sowohl Hintergrundfunktionen als auch Funktionen mit längerer Ausführungsdauer langsamer.

3.2.3 Microsoft Azure Functions

Microsoft Azure Functions wurde im Jahr 2016 eingeführt. Azure Functions ermöglicht es Entwicklern, serverlose Anwendungen auf Microsoft Azure zu erstellen.

Azure Functions ist ein ereignisgesteuertes System, die die bestehende Azure-Anwendungsplattform um die Möglichkeit erweitert, Code zu implementieren, der durch Ereignisse ausgelöst wird, die in Azure- oder Drittanbietersystemen sowie in Systemen vor Ort auftreten.(vgl (Azure Microsoft, 2020))

Wie bei den anderen "serverlosen" Lösungen muss sich der Entwickler mit Azure nicht mehr um das Schreiben einer ganzen Anwendung oder deren Infrastruktur kümmern, sondern nur noch den Code schreiben, der auf ein bestimmtes Ereignis reagieren soll.

Azure Functions unterstützt die Sprachen, C#, F#, Python, Java, Node.js, Python und PHP. Im Gegensatz zu AWS Lambda bietet Azure Functions mehrere Optionen für die Implementierung von Functions, wie z. B. GitHub, DropBox, Visual Studio, Kudu-Konsole, Bereitstellung durch ZIP und One Drive.

Bei Microsoft können mehrere Azure-Functions gleichzeitig ausgeführt werden, vorausgesetzt diese befinden sich innerhalb einer einzigen Anwendungsinstanz, die keine Begrenzung hat. Die Anzahl der gleichzeitigen Ausführung von Aktivitäten und Orchestrierungsfunktionen ist auf das 10-fache der Anzahl der Kerne auf der Virtuellen Maschine begrenzt. Wie bei AWS Lambda gibt es auch hier ein Ausführungszeitlimit von 300 Sekunden, das je nach des Nutzungsplan auf 600 Sekunden erweitert werden kann.

Bei Microsoft Azure Functions hängt die Skalierbarkeit der Anwendung vom Nutzungsmodell ab. In einem Modell ist die Skalierung automatisch, wenn die Ausführung einer Funktion nach einer konfigurierbaren Zeitspanne ausläuft. Im anderen Modell, dem App-Service-Plan wird jede Funktionsanwendung einer oder mehreren spezifischen VMs zugeordnet. Wenn die Anzahl der bereitgestellten VMs nicht ausreicht, muss manuell eingegriffen werden.

4 Vor und Nachteile von Serverless Computing

4.1 Vorteile von Serverless Computing

4.1.1 Einsatz und Wartung

Die automatische Skalierung von Serverless Computing Anwendungen ist mitunter der Hauptgrund warum viele Entwickler und Firmen von monolithischen Anwendungen auf FaaS umsteigen. Bei Serverless geht es darum, dass die Anwender sich nicht um die eigenen Server-Prozesse kümmern müssen, sondern nur um die Geschäftslogik und den Zustand der Anwendung.

Der erste offensichtliche Vorteil ist, dass es weniger Arbeit bei den Operationen gibt. Die Wartung von Betriebssystemen, Patch-Level, Datenbankversions-Upgrades usw. werden alle durch die Serverless Computing Plattform verwaltet. Bei BaaS-Datenbanken werden auch Infrastrukturen wie Objektspeicher und „Message Bus" vom Anbieter übernommen. Ein Message-Bus ist eine MessagingInfrastruktur, die es verschiedenen Systemen ermöglicht, über einen gemeinsamen Satz von Schnittstellen (Message-Bus) zu kommunizieren.

Ein BaaS-Dienst, der ebenfalls häufig genutzt wird, ist der Authentifizierungsdienst. Insgesamt muss weniger Code definiert, entwickelt, getestet, bereitgestellt und betreiben werden, was Zeit und Kosten für die Entwicklung spart.

FaaS bietet ebenfalls erhebliche Wartungsvorteile gegenüber einem traditionellen Ansatz. Die Software-Entwicklung mit FaaS wird vereinfacht, da ein Großteil des infrastrukturellen Codes auf die Plattform ausgelagert wird. Ein Beispiel hierfür ist die Entwicklung von HTTP-API-Diensten - hier wird die gesamte Anfrage- und Antwortverarbeitung auf HTTP-Ebene vom API-Gateway übernommen. .vgl (Roberts, 2018)

Die Bereitstellung mit FaaS ist einfacher, da nur grundlegende Code-Einheiten hochlgeladen werden - ZIP-Dateien des Quellcodes im Falle von Javascript oder Python und einfache JAR-Dateien im Falle von JVM-basierten Sprachen. Es sind keine Puppet-, Chef-, Ansible- oder Docker-Konfigurationen zu verwalten.

[...]

Ende der Leseprobe aus 21 Seiten

Details

Titel
Serverless Computing. Wofür braucht man das und wofür eignet es sich eher nicht?
Hochschule
Hochschule der Medien Stuttgart
Note
1,3
Autor
Jahr
2020
Seiten
21
Katalognummer
V983504
ISBN (eBook)
9783346339454
ISBN (Buch)
9783346339461
Sprache
Deutsch
Schlagworte
Serverless Computing, FaaS, BaaS, Microservices
Arbeit zitieren
Vanessa Kraiss (Autor:in), 2020, Serverless Computing. Wofür braucht man das und wofür eignet es sich eher nicht?, München, GRIN Verlag, https://www.grin.com/document/983504

Kommentare

  • Noch keine Kommentare.
Im eBook lesen
Titel: Serverless Computing. Wofür braucht man das und wofür eignet es sich eher nicht?



Ihre Arbeit hochladen

Ihre Hausarbeit / Abschlussarbeit:

- Publikation als eBook und Buch
- Hohes Honorar auf die Verkäufe
- Für Sie komplett kostenlos – mit ISBN
- Es dauert nur 5 Minuten
- Jede Arbeit findet Leser

Kostenlos Autor werden