Homepage > Journal > Wissensweg > Management der Webentwicklung > Serverless - ein Geschäft ohne Server
Journal

Serverless - ein Geschäft ohne Server

Wie gefällt Ihnen das:

Lambda Serverless? Kommt Ihnen dieser Begriff bekannt vor? Nein? Was ist mit AWS Serverless oder Amazon Serverless? Wissen Sie, was Serverless, Serverless Architecture ist? Dann haben Sie vielleicht schon einmal von Cloud Computing Diensten gehört?

Nein? Okay. Vielleicht über Serverless Computing, Serverless Technologie, Serverless Apps oder Microservices? Auch nicht? Großartig! Dann könnte dieses Thema für Sie interessant sein. Warum?

Denn wir sprechen nicht nur über Technologie, sondern in erster Linie über Dienstleistungen, was aus der Sicht eines Kunden (eines Eigentümers einer Webanwendung, B2B Webplattform usw.) bedeutet:

  • Weniger Ärger (Verantwortung)
  • Weniger Arbeit (die normalerweise sehr teuer ist)
  • Geringere Kosten (die Verwendung von serverless Lösungen bedeutet eine erhebliche Kostenreduzierung).

Finden wir also heraus, was es mit Serverless auf sich hat.

Wir entwickeln Anwendungen auf der Grundlage von AWS Services und AWS Komponenten.

Cloud Computing

Beginnen wir mit der Tatsache, dass wir seit langem die Möglichkeit haben, Cloud Services zu nutzen. Anstatt Dateien, Daten, Anwendungen und Programme auf unseren eigenen Computern zu speichern und weitere Server zu kaufen, nutzen wir Speicherplatz, der von Drittanbietern (Cloud Service Providers) zur Verfügung gestellt wird.

Cloud Computing Services stellen auch die notwendigen Anwendungen, die Infrastruktur und die Plattform für die Arbeit (z. B. Programmierung) bereit.

Cloud Lösungen decken ein breites Spektrum an Diensten ab (z. B. Software as a Service, Functions as a Service, Backend dienste usw.), es gibt sie in verschiedenen Ausführungen (öffentlich, privat, hybrid) und sie bieten verschiedene Möglichkeiten der Migration (z. B. Lift und Shift).

Clouds bieten permanenten (ohne zeitliche Beschränkungen) und unbegrenzten (ohne räumliche Beschränkungen) Zugang zu ihren Ressourcen und deren Nutzung. Bei relativ geringen Kosten bieten sie außerdem hohe Datensicherheit, fortschrittliche Technik, aktuelle Technologie (Cloud Computing Services werden ständig weiterentwickelt) und Benutzerfreundlichkeit.

Cloud Computing wird inzwischen nicht nur von großen Anbietern wie z. B:

  • Amazon (Amazon Web Services - der absolute Weltmarktführer mit mehr als 30% Marktanteil)
  • Google (Google Cloud Plattform)
  • Microsoft (Microsoft Azure).

Wir haben immer mehr Möglichkeiten, Angebote und Lösungen von Unternehmen anzunehmen, die nach unerschlossenen Nischen in diesen Diensten suchen (z. B. Oracle Cloud, Alibaba Cloud).

In nur wenigen Jahren ist der Cloud Computing Service so populär geworden, dass Geschäftskunden aller Branchen ihn zunehmend nutzen. Von kleinen Geschäften bis hin zu Weltkonzernen.

Im Paket der Cloud Services, die auf der Serverless Idee und Technologie basieren (z. B. AWS - Amazon Web Services), finden wir einige sehr bekannte Lösungen.

Unternehmen haben ihre Wirksamkeit und Effizienz auf allen Ebenen und in den meisten Branchen getestet. Außerdem sind sie heute in vielen Fällen zum Standard geworden (z. B. Amazon EC2, Amazon DynamoDB).

Was ist Serverless (Serverlos)?

Serverless Computing ist ein Sammelbegriff für eine Reihe von Cloud Computing Services.

Der Anbieter einer solchen Lösung, eines solchen Dienstes (Serverless ist sowohl eine Technologie als auch ein Dienst) stellt die Produktionsumgebung bereit und ist für deren Leistung, Skalierbarkeit und Sicherheit verantwortlich.

Mit anderen Worten: Die "Sorgen" eines Anbieters sind die Themen, die am meisten Stress verursachen, die die meiste Verantwortung und die meisten Ressourcen (in Bezug auf Finanzen, Kompetenz und Organisation) erfordern.

Und um es noch einfacher auszudrücken: Um eine Webanwendung zu erstellen und zu entwickeln, müssen wir nicht über die folgenden Dinge verfügen:

  • Unsere eigenen Server
  • Unsere eigene Infrastruktur.

Wir brauchen auch nicht eine große Anzahl von Spezialisten. Der Anbieter führt auch Wartungsarbeiten durch. Wenn wir keine Server kaufen, die Kosten für ihre Konfiguration und Amortisation tragen und keine Spezialisten für ihre Verwaltung einstellen wollen, dann ist die beste Lösung die Verwendung einer Serverless Option.

AWS Serverless
AWS Amazon - der weltweit führende Anbieter von Services und Serverless Lösungen.

Serverless Architekturen erfreuen sich zunehmender Beliebtheit (der steigende Marktanteil von Amazon Web Services ist ein Beweis dafür), da sie eine viel effizientere und kostengünstigere Art der Nutzung, Entwicklung, Implementierung und Bereitstellung von Software darstellen. Serverless ermöglicht es uns, Webanwendungen zu erstellen, die sind:

  • Flexibel
  • Effektiv (wir können Anwendungen schnell an Marktveränderungen anpassen)
  • Billiger
  • Innovativ.

Serverless Services (z. B. AWS Lambda) werden mit automatischer Skalierung, integrierter Hochverfügbarkeit und einem Pay for Value und Pay As You Go Abrechnungsmodell angeboten. Lambda ermöglicht auch die Ausführung von Code als Reaktion auf Ereignisse, die von mehreren hundert integrierten AWS und SaaS Quellen eingehen.

Serverless entbindet uns auch von der Notwendigkeit, eine Infrastruktur zu erstellen, zu verwalten, zu pflegen und anzupassen. In der Praxis müssen wir uns nicht um die Hardware kümmern, geschweige denn um die Programmierung (Software).

Wir müssen uns zum Beispiel nicht um Datenbanken, Sicherheit oder Skalierbarkeit kümmern. Sie liegen in der Verantwortung eines Anbieters, der diese Dienstleistung für mehrere Kunden erbringt, so dass der Stückpreis reduziert werden kann. Daher erweisen sich Cloud Lösungen in einer Reihe von Use Cases als sehr vorteilhaft.

Bei der Verwendung von Serverless Lösungen zahlen wir nur für die genutzten Ressourcen, nicht für verfügbare Optionen, Daten oder Übertragungen (Pay As You Go Abrechnungsmodell). Die gemeinsame Nutzung von Hardware, Servern und deren Infrastruktur verringert in keiner Weise die Leistung dieser Lösung und führt nicht zu einer Verringerung der Qualität der Software, die wir erstellen wollen.

Serverless (z. B. Serverless AWS) wird z. B. für die Entwicklung von serverless applications verwendet. Es reduziert die Kosten für deren Produktion und Implementierung. Gleichzeitig ermöglicht es uns, eine hohe Effizienz zu erhalten.

Die Auslagerung eines Teils der notwendigen Arbeiten und Verantwortlichkeiten an einen externen Anbieter ermöglicht es, eine Anwendung in viel kürzerer Zeit und mit viel weniger Risiko zu erstellen.

Aus der Sicht der Softwareentwickler ist es eine Lösung, die es ihnen ermöglicht, sich auf die Geschäftsziele, die Funktionalität, die Benutzerfreundlichkeit, die Ästhetik und die Zuverlässigkeit der Software zu konzentrieren und nicht auf die Sicherheit, Skalierbarkeit, Zuverlässigkeit oder Leistung der Infrastruktur.

Und genau das ist es, was Serverless bedeutet: Die Kunden müssen die von ihnen genutzten Server nicht verwalten.

Sie kümmern sich nicht um die Umgebung, sondern konzentrieren sich in erster Linie auf die App Entwicklung und überlassen Backend und Infrastrukturfragen dem Serverless Dienstanbieter.

Vorteile von Serverless

Wir können sagen, dass drei Dinge den Erfolg von Cloud Lösungen bestimmt haben:

  • Kosten
  • Bequemlichkeit
  • Sicherheit.

Das mag wie eine zu starke Vereinfachung des Themas erscheinen, aber es ist etwas dran. Die Kostenunterschiede können verblüffend sein, was den Serverless Lösungen zugute kommt. Die Unterschiede ergeben sich, wie bereits erwähnt, aus der gemeinsamen Nutzung von Lösungen mit anderen Nutzern und einem anderen Abrechnungsmodell.

Bei dem Pay As You Go Abrechnungsmodell werden Gebühren nur für die effektive Ausführung unseres Codes oder die tatsächliche Datenübertragung erhoben. Während der Zeit der Inaktivität berechnen die Anbieter keine Kosten. Das bedeutet, dass wir moderne Werkzeuge, Lösungen und Funktionen erhalten, die die Arbeit bei relativ geringen Investitionskosten beschleunigen, was wiederum die Zeit für die Erstellung unserer eigenen Lösungen verkürzt.

Ein weiterer Vorteil von Serverless ist ein kürzerer Entwicklungszyklus von Anwendungen/Webplattformen. Ein rascher Markteintritt bei großer Konkurrenz und einer Vielzahl von Lösungen ist ein unschlagbarer Vorteil. Serverless Lösungen haben zudem den Vorteil, dass sie besser auf die Implementierung und Entwicklung einer Anwendung und deren unerwartete Erfolge vorbereitet sind (automatische Skalierbarkeit).

Serverless Lösungen sind auch viel attraktiver, wenn man die Kosten unter dem Gesichtspunkt der täglichen, wöchentlichen oder saisonalen Schwankungen der Serverlast betrachtet. Herkömmliche Abrechnungsmodelle sind selten flexibel und ermöglichen selten eine präzise Abrechnung. Sie sind völlig unverständlich und spiegeln ihre zeitliche Variabilität nicht wider. Sie bieten Abonnementlösungen an, die aus Sicht des Kunden nicht vorteilhaft sind.

Nachteile von Serverless

Jede Lösung hat Nachteile oder Unannehmlichkeiten. Serverless ist da keine Ausnahme. Bei Serverless ist das Problem der sogenannte Cold Start unseres Codes. Nach einer gewissen Ausfallzeit, in der Regel mindestens ein paar Minuten, in denen die Serverless Funktion nicht verwendet wird, wird unsere Funktion aus dem Service Cache entfernt. Ein Neustart nimmt relativ mehr Zeit in Anspruch als jeder weitere Start.

Bild der OneDrive Website
Microsoft - OneDrive. Einer der drei größten Anbieter von Serverless Services.

Die Länge der Verzögerung hängt von verschiedenen Faktoren ab, aber das Phänomen des Cold Starts wird als Nachteil dieser Lösung angesehen. Die Auswirkungen des Cold Starts können signifikant sein oder auch nicht, weshalb der Schweregrad jedes Mal unterschiedlich ist.

Wir können jedoch Probleme mit dem Cold Start entweder vollständig beseitigen oder erheblich verringern. Wie? Ich werde es erklären. Unter den Diensten gibt es immer eine solche Funktion, die nur selten in Betrieb ist und sich nicht ständig in Bereitschaft halten kann.

Um die Bereitschaft aufrechtzuerhalten, können wir WarmUp Lösungen verwenden, die eine bestimmte Funktion in festen Intervallen auslösen und sie nicht "abkühlen" lassen. Natürlich kann dies zusätzliche Kosten verursachen, und wir sollten diesen Ansatz dort anwenden, wo er wirklich notwendig ist.

Serverless wird auch oft für die zu große Abhängigkeit eines Serviceempfängers von einem Serviceanbieter kritisiert (Vendor Lock-In). Cloud Infrastrukturen können sehr unterschiedlich sein, so dass ein Wechsel des Anbieters mühsam, zeitaufwändig und ressourcenintensiv sein kann.

Die Situation ist nicht hoffnungslos, denn es werden ständig quelloffene Frameworks entwickelt, um dieses Problem zu lösen oder zu entschärfen.

Microservices in Serverless

Es ist wahrscheinlich nicht übertrieben zu sagen, dass Microservices die Essenz, das "Fleisch" von Services und der Ansatz zur Entwicklung von Software und Web Apps durch Serverless Services sind.

AWS Microservices
Amazon AWS - Microservices ermöglichen es uns, digitale Produkte zu erstellen, die aus kleinen unabhängigen Services bestehen.

Microservices sind eine Möglichkeit, eine Anwendungsarchitektur durch eine Reihe von Diensten zu erstellen, die nicht streng und absolut voneinander abhängig sind. Diese Herangehensweise an den Prozess der Entwicklung eines digitalen Produkts ist nicht neu. Bislang war sie als serviceorientierte Architektur bekannt. Mit der Verbreitung und Entwicklung von Serverless Services ist dieser Ansatz zurückgekehrt.

Microservices sind ein ideales Mittel gegen die Probleme, die monolithische Architekturen kennzeichnen, in denen alle Funktionen und Prozesse als ein einziger Dienst funktionieren.

Monolithische Webanwendungen sind zwar einfacher zu erstellen, aber nicht so effizient, flexibel und einfach zu entwickeln wie Anwendungen, die mit Microservices erstellt werden. Das gilt insbesondere für große und komplexe Systeme, an denen mehrere Entwicklungsteams in einem Webentwicklungsunternehmen arbeiten.

In der Microservices Architektur wird eine Anwendung als eine Sammlung unabhängiger Elemente oder Funktionen erstellt, die für einen kleinen Teil der Funktionalität einer gesamten Anwendung verantwortlich sind. Diese Dienste kommunizieren über APIs miteinander.

Ein weiteres wichtiges Merkmal ist, dass sie implementiert werden können, ohne dass eine Konsistenz der Programmiersprachen, Datenbanken, Hardware und Infrastruktur erforderlich ist. Die Verteilung solcher Dienste erfolgt kontinuierlich und automatisiert (Continuous Delivery/Continuous Integration).

Microservices werden im Sinne von SRP (Single Responsibility) erstellt, was bedeutet, dass ein einzelner Microservice eine Funktion, einen Zweck und eine Aufgabe hat.

Weitere Vorteile und wesentliche Merkmale von Microservices sind:

  • Sie sind geschäftsorientiert (sie konzentrieren sich mehr auf die Lösung von Geschäftsproblemen)
  • Die Flexibilität der Optimierung (einzelne Teile unserer Anwendung können je nach aktueller Belastung und Nutzungsintensität skaliert werden)
  • Technologische Flexibilität (sie können mit verschiedenen Technologien, Sprachen oder Frameworks erstellt werden)
  • Stabilität und Störungsresistenz (bei einer monolithischen Architektur kann der Ausfall einer einzigen Komponente zum Absturz der gesamten Anwendung führen, bei Microservices gibt es dieses Problem nicht, da nur ein bestimmter Dienst ausfällt)
  • Die Optimierung des Ressourcenverbrauchs
  • Einfachere Skalierbarkeit (Dienste, die mehr Ressourcen benötigen, werden getrennt und an verschiedenen Orten platziert, und die horizontale Skalierung ist viel einfacher als im Falle von Monolithen)
  • Weitreichende Anwendbarkeit (wir können einen gut geschriebenen Dienst leicht in einer anderen Anwendung wiederverwenden)
  • Höhere Disziplin und Codequalität (das Schreiben von Anwendungen erfordert von den Teammitgliedern mehr Disziplin bei der Pflege eines klaren Codes, dem Schreiben von Einheitstests und der Pflege der Dokumentation)
  • Agile (sie sind ideal für kleine, unverbundene, unabhängige Teams).

Leider hat die Microservices Softwarearchitektur ihre Grenzen. Sie ist komplexer und erfordert Folgendes:

  • Sorgfältige Prüfung ihrer Aufteilung
  • Angemessene Konfiguration
  • Dies wirft viele diagnostische Probleme bei der Ermittlung der tatsächlichen Fehlerquelle auf.

AWS Amazon

Wir können sagen, dass die Erstellung von Webanwendungen, Websites und Chatbots mit Hilfe von AWS Amazon (cloud provider) ein bisschen wie der Bau einer Burg mit Legosteinen ist. Die vorgefertigten Komponenten, die von Entwicklern bei Amazon Web Services erstellt werden, ermöglichen eine schnellere, effizientere und kostengünstigere Herstellung von digitalen Produkten.

Der wichtigste Vorteil von AWS Lambda (Lambda ist einer der wichtigsten Dienste innerhalb der in der AWS Cloud verfügbaren Serverless Tools) ist auch die Sicherheit der entwickelten Software.

Wie jeder Serverless Service ermöglicht auch Lambda die Erstellung voll funktionsfähiger Software, ohne dass eine eigenständige Serverinfrastruktur erstellt, gewartet und entwickelt werden muss. Lambda Nutzer heben auch seine Flexibilität hervor. Lambda ermöglicht es uns, in verschiedenen Programmiersprachen geschriebenen Code auszuführen.

Google Cloud Plattform

YouTube, die Google Suchmaschine, und die polnische Allegro Plattform sind die bekanntesten Beispiele für Dienste, die Lösungen nutzen, die über die Google Cloud Plattform verfügbar sind. Das ist nicht verwunderlich, denn die Leistung der Google Server gilt als der wesentliche Vorteil dieser Cloud Lösungen.

Mit AWS, Amazon und Microsoft Azure bildet die Google Cloud Plattform seit Jahren ein Führungsdreieck, das weltweit den Standard für Cloud Lösungen setzt. Mit Google Cloud Plattform können wir Anwendungen selbst erstellen, implementieren, testen und entwickeln.

Die Plattform bietet verschiedene Dienstleistungen und fertige Produkte an, mit denen kleine Unternehmen, große Organisationen und Konzerne arbeiten können. Der führende Dienst für den Aufbau von Serverless Lösungen in Google Cloud ist Cloud Functions.

Die Website von Alibaba Cloud - ein Serverless Anbieter
Alibaba Cloud ist ein Anbieter von Serverless Services, der sich besonders für Unternehmen empfiehlt, die in China und anderen asiatischen Märkten tätig sind.

Zusammenfassung - Lohnt sich der Einsatz der Serverless Services?

Serverless Services bringen einem Unternehmen greifbare und messbare Vorteile in drei wichtigen Dimensionen seines Betriebs: Finanzen, Organisation und Sicherheit.

Betrachtet man die Vorteile von Cloud Lösungen aus finanzieller Sicht, so ergibt sich folgendes Bild:

  • Bezahlung für die tatsächliche Nutzung von Ressourcen, Werkzeugen
  • Umwandlung von Kapitalkosten in Betriebskosten
  • Keine Amortisationskosten, Beschäftigungskosten
  • Kostengünstigere Implementierung neuer Lösungen
  • Die Fähigkeit, technologisch weitaus fortgeschrittenere Anwendungen zu entwickeln.

Der organisatorische Vorteil ist darin zu sehen:

  • Geschwindigkeit der Zielerreichung, Aufgabenausführung
  • Technologische Angemessenheit, es kann jedes Verkehrsaufkommen bewältigen
  • Geringeres Risiko beim Start von Projekten oder Änderungen.

Serverless Lösungen sind auch wegen des gebotenen Sicherheitsniveaus attraktiv, insbesondere in Bezug auf:

  • Schutz vor Cyberangriffen
  • Übertragung der Verantwortung für die Sicherheit der Infrastruktur auf den Dienstanbieter
  • Leichtere Erstellung von Microservices.
Wie gefällt Ihnen das:
Journal / JPG / Jarek - avatar
Autor: Yaroslav Shatkevich
A programmer with 17 years of experience. Co-founder and CTO of The Story. Fascinated with planning programming works, author of numerous IT and DevOps specifications. Honored by Awwwards, awarded iF Design Award 2018. He works in Python, PHP, React and JavaScript technologies. He created over 90 web and mobile applications and dedicated systems.

Sind Sie an einer Zusammenarbeit mit uns interessiert? Werfen Sie einen Blick auf unser Portfolio