Serverless Computing - Die Zukunft Ihrer Codes liegt in der Cloud!
Kurzlebiger IT-Trend oder die einzige Art des Computing, die es in der Zukunft noch geben wird?
Serverless oder Serverless Computing ist ein Prinzip, das in letzter Zeit in der IT-Welt an Bedeutung gewann. Für die IT-Verantwortlichen in Unternehmen wirft diese Innovation eine grundlegende Frage auf: Können wir bald ohne eigene Server auskommen?
Die Idee für Cloud Computing entstand aus dem Wunsch heraus, die Kosten für die IT-Infrastruktur zu senken und den Aufwand, der damit verbunden ist zu reduzieren.
Was ist die Definition von Serverless? Was sind die Vorteile? Doch noch viel wichtiger, was sind die Nachteile und Risiken?
In folgendem Text erfahren Sie alles, was Sie über Serverless Computing wissen müssen. Serverless ist kein Hexenwerk, sondern ein effektiver Mix aus Technologien und Geschäftsmodellen, der es ermöglicht, den sich ändernden Anforderungen gerecht zu werden.
Serverless: Definition von Serverless Computing
Was ist Serverless?
Der Begriff "Serverless" bezieht sich auf die Ausführung von Anwendungscode, ohne eine lokale oder Cloud-basierte Infrastruktur, die speziell für diese bestimmte Anwendung vorgesehen ist. Code wird in Containern gespeichert und dann auf der Cloud Infrastruktur abgelegt, wo er einen gewissen Speicherplatz in Anspruch nimmt, aber auch alle anderen benötigen digitalen Ressourcen (die benötigte CPU, RAM, Up/Download-Geschwindigkeit, usw.) nutzt. Der Provider übernimmt die Verantwortung dafür, dass immer genügend digitale Kapazitäten zur Verfügung stehen und die Infrastruktur der Anwendung angemessen ist.
Mit anderen Worten: In einer Serverlessen Architektur wird nicht nur die Ausführung des Codes, sondern auch die Wartung der Server vom Cloud-Anbieter verwaltet und sichergestellt, dass das vom User angeforderte Event ausgeführt wird.
Hier finden Sie die besten IT-Service-Software.
FaaS (Function as a Service)
Eine Sache sollte zu Beginn klargestellt werden, denn dieser eklatante Begriff, kann für den Leser irreführend sein. Auch wenn die Bezeichnung das Gegenteil vermuten lässt, benötigt man auch für ein FaaS Computing-Modell einen Server.
Denn die Technologie ist bisher noch nicht so weit, dass Computing völlig virtuell, ungreifbar und frei von jeglichen physikalischen Zwängen möglich ist. Es gibt physische Ressourcen und Server, auf denen der Code läuft.
Dieser Ansatz ist dem von Microservices sehr ähnlich. Der Unterschied besteht darin, dass die Serverlesse Architektur natürlich an einen Cloud Service Provider (auch CSP genannt) gebunden ist. Im Gegensatz dazu basieren Microservices auf Containern, die “on demand” auf verschiedenen Hosting-Plattformen ausgeführt werden können.
Im Alltag eines Entwicklers wird häufig der Begriff FaaS, (Function As A Service = Faas) verwendet. Dadurch kann der Entwickler eine Funktion bei Bedarf erstellen und ausführen, indem ein Cloud-Anbieter angefragt wird, der örtlich vom Entwickler entfernt ist:
- Der Entwickler muss lediglich seinen Code zur Verfügung stellen;
- Der Provider ist dafür zuständig, bei jeder Anfrage ein Ergebnis zu liefern.
In erster Linie geht es also darum, die Anforderungen und Kosten der hauseigenen Infrastruktur der Entwickler-Firma gering zu halten und ein hohes Maß an Anpassungsfähigkeit zu gewährleisten.
Vorteile und Grenzen von Serverless
Reduzierte Kosten - jedoch nicht immer!
Das Abrechnungsmodell ist meist ein Pay-as-you-go-Modell: Das Unternehmen zahlt für den genutzten Arbeitsspeicher, den Speicherplatz und die Rechenleistung, die für die Ausführung seiner Anwendung benötigt wird. Abhängig von der Anwendung, der User-Nachfrage, und der Art der Nutzung errechnet sich die verbrauchte Serverzeit. Das hat diese Folgen:
- mit Serverless ist es möglich, die Kosten für einen sehr wenig genutzten Dienst zu reduzieren;
- die Kosten stimmen zu 100% mit dem Bedarf und auch mit dem Erfolg der Anwendung überein;
- die Abrechnung bei Cloud Computing gibt Aufschluss über die Nutzerzahlen und die Nutzungsintensität eines Service;
- wenn eine ein Code nicht ausgeführt wird, entstehen für eben diese Anwendung (fast) keine Kosten;
- eine intensiv genutzte Anwendung kann dagegen hohe Kosten verursachen;
- ein weiterer Vorteil ist die Geschwindigkeit der Anpassung der zur Verfügung stehenden Ressourcen. Es ist in der Verantwortung des Providers, dass immer genügend Rechenleistung, Speicherplatz, usw. zur Verfügung steht, selbst wenn der Bedarf der Anwendung steigt. Es nicht mehr notwendig, sich Sorgen um die Infrastruktur zu machen, bevor ein Produkt oder einen Service live geschaltet wird;
- keine lästigen Updates mehr. Der Provider sorgt dafür, dass seine Systeme immer den aktuellen Standards entsprechen und kümmert sich um die Sicherheit der Systeme und der Programmierumgebung.
Auch die sogenannte Elastizität ist ein klarer Vorteil. Wenn Sie keine Zeit für das Sizing oder Testen von Hardware-Ressourcen aufwenden möchten, können Sie diese Aufgabe auf den Provider übertragen. Der CSP muss Ihnen immer die Ressourcen zur Verfügung stellen, die Sie benötigen. Das ist Teil des Vertrags.
Ohne (eigenen) Server, aber nicht ohne Vorgaben
Auch diese “Serverless Architecture” hat bestimmte Regeln.
Diese Regeln sind insbesondere auf die geringe Anzahl von Providern zurückzuführen. Die 3 wichtigsten CSP sind:
- AWS (Amazon Web Service), insbesondere AWS Lambda oder Amazon Aurora,
- Microsoft Azure Functions,
- und die Google Cloud.
Die Abrechnungsmethode setzt das einbetten eines Codes voraus, der nur wenig Rechenleistung in Anspruch nimmt und folgendes reguliert:
- Die Ausführungszeit für jede Anwendung ist begrenzt, zeitlich und was die genutzte Rechenleistung abgeht;
- Diese Grenzen können nicht überschritten werden ohne das System zu überlasten.
Wenn der Code einer Anwendung oder Website also schlecht geschrieben ist oder zu große Datenmengen verwendet sind, kann es bei der Nutzung zu einem “Timeout” kommen.
👉 Der Amazon Web Service Dienstleister, der dieses Konzept 2014 eingeführt hat, gibt zum Beispiel folgende Zahlen an:
- die durchschnittliche Ausführungszeit einer Funktion auf den Servern beträgt 800 ms,
- 25% der Online-Anwendungen benötigen mehr als drei Sekunden,
- und 12% mehr als 10 Sekunden.
Im Allgemeinen muss die Codierung in einer Programmiersprache (oder einer spezifischen Programmiersprache) erfolgen, die vom jeweiligen Cloud-Service-Provider unterstützt wird und vom System ausführbar ist. Die Entwickler haben also keine Macht über die Umgebung die genutzt wird und müssen sich an die Gegebenheiten anpassen.
Die Kosten für den Service hängen auch von dem Speicherplatz ab, der zur Ausführung Ihres Codes benötigt wird.
Auch wenn die Serverless-Architektur also sehr flexibel ist und eine optimale Performance Ihrer Services gewährleisten kann, sollten die entstehenden Kosten kontrolliert werden. Denn FaaS kann am Ende sogar teurer sein als selbst zu hosten oder klassische Cloud-Lösungen zu nutzen.
Außerdem sollten Sie bedenken, dass es sich schlussendlich immer noch um einen physischen Server handelt, auf dem Ihre Daten gespeichert sind, der genauso überlastet werden kann wie jeder andere Server auch.
Die Dienstleister sind mittlerweile extrem gut ausgestattet und haben gute Systeme zur Überwachung der Auslastungen. Sie nutzen teilweise Backups oder eine Art User-Limit. So können sie zu hohen Traffic verhindern oder frühzeitig handeln, um einen Absturz des Systems zu verhindern.
Allerdings ist es in den letzten Jahren bereits passiert, dass namhafte Anwendungen wegen Serverschäden oder Überlastungen zwischenzeitlich offline waren.
Serverless für optimale Sicherheit der Daten
Aufgrund der speziellen Gegebenheiten bietet Serverless einige einzigartige Vorteile, was die IT-Sicherheit betrifft:
- es ist der Verantwortungsbereich des Cloud Service Providers, das Betriebssystem, die Laufzeitsicherheit und das Patching zu verwalten. Das kann als Garantie betrachtet werden. Denn wenn man bedenkt, wie viele Anbieter es heute auf dem Markt gibt, ist klar, dass Anbieter mit schlechter Servicequalität schnell von der Konkurrenz geschluckt werden würde;
- die ephemere, zustandslose Natur des Serverless Computing macht Angreifern das Leben schwer. Die Tatsache, dass serverlose Funktionen ohne festen Speicherort funktionieren, sondern kommen und gehen, reduziert das Risiko von Langzeitangriffen;
- die geringe Größe der Code-Bausteine erleichtert die Analyse durch die CSP-Sicherheits-Tools.
Andererseits entstehen durch diese Architektur auch Schwachstellen. Jede neu hochgeladene Funktion wird zu einem potenziellen Angriffspunkt, was die Arbeit der Provider und die Überwachung ihrer Server komplex macht. Außerdem ist es sowohl für den CSP als auch für den Encoder komplizierter, mehrere Prozesse und mehrere Ein-/Ausgangspunkte zu beobachten.
Konventionelle Anwendungen haben eine klare Umrandung, bei der Außen- und Innenseite deutlich getrennt sind. Deshalb können konventionelle Sicherheitsfunktionen wie Web Application Firewalls (WAF), und Intrusion Detection Systems (IDS) bzw. Angriffserkennungssysteme genutzt werden.
Schließlich ist zu beachten, dass native Cloud-Anwendungen viele Module und Code-Bibliotheken aus einer Vielzahl von Drittanbieterquellen verwenden können. Potenzielle Angreifer könnten deshalb versuchen, bösartigen Code in gemeinsame Projekte einzubauen oder eine Sicherheitslücke beim Drittanbieter zu nutzen um sich Zugriff auf die Cloud-Daten zu verschaffen.
Ist Serverless das Richtige für Sie?
Wie so oft, wenn es um neue Technologien oder Konzepte geht, müssen Sie einen Schritt zurücktreten und entscheiden, ob diese Innovation für Ihre Anwendungen und Bedürfnisse geeignet ist oder nicht. Die Umstellung auf Serverless Computing macht nur in einem bestimmten Kontext Sinn.
Über den rein technischen Aspekt hinaus, kann der Einsatz auch Auswirkungen auf die personellen Ressourcen Ihres Unternehmens haben. Für den Einsatz dieser Technologie benötigt Ihr Unternehmen die Unterstützung von einem kompetenten Coding und IT-Team. Möglicherweise müssen sie also Ihre IT-Abteilung vergrößern oder diese Aufgaben bei Dienstleistern in Auftrag geben.
Es kann allerdings später dazu führen, dass weniger Ressourcen, die für die digitale Infrastruktur und deren Verwaltung eingesetzt werden müssen.
Abschließend ist also zu sagen, dass Serverless Computing und der Einsatz von FaaS viele Vorteile bietet, man aber auch einige Nachteile in seine Entscheidung einbeziehen sollte. Außerdem muss man sich der Risiken bewusst sein und sollte niemals vorschnell handeln!
Haben Sie vielleicht selbst schon Erfahrungen mit Serverless Computing gemacht? Teilen sie Ihre Erfahrungen gerne in den Kommentaren!
Ursprünglicher Appvizer-Artikel des französischen Experten Laurent Hercé, auf deutsch übersetzt.