Was ist serverlos?


42

Alle Cloud-Anbieter vermarkten ihre "serverlosen" Lösungen. Das Versprechen ist, dass Serverless die Art und Weise ersetzen wird, in der Entwickler ihre Software derzeit entwickeln, und Operations sie in der Produktion verwalten wird.

Was ist "serverlos"? Wo kann man mehr darüber erfahren und wie kann es heute verwendet werden?


serverless computing ist "server less", da "chicken burger" vegan ist, da du das chicken nicht persönlich getroffen hast
Sai Addanki

Antworten:


43

Der Wikipedia-Artikel über Serverless Computing bietet eine anständige Einführung in das Thema:

Serverless Computing, auch als Function as a Service (FaaS) bezeichnet, ist ein Cloud-Computing-Codeausführungsmodell, bei dem der Cloud-Anbieter das Starten und Stoppen der Containerplattform einer Funktion als Service (PaaS) nach Bedarf verwaltet, um Anforderungen und Anforderungen zu erfüllen werden nach einem abstrakten Maß für die Ressourcen berechnet, die zur Erfüllung der Anforderung erforderlich sind, und nicht nach virtueller Maschine und Stunde.

Die Idee ist, dass ein Entwickler sich überhaupt nicht um die Serverinfrastruktur kümmern muss . Der Cloud-Anbieter verwaltet die physischen Server, das verwendete Betriebssystem und alle herkömmlichen Schwierigkeiten beim Betrieb eines Servers.

Serverloses Computing verändert Ihre Architektur von der Überlegung, welche Maschinen welche Funktionen ausführen . AWS Lambda ist das Beispiel, an das man denkt: Sie bezahlen und führen Funktionen aus , ohne zu erwähnen, welche Art von physischer Infrastruktur im Folgenden ausgeführt wird. Es gibt auch konkurrierende serverlose Hosts wie z. B. Azure-Funktionen (oder Sie können einfach suchen, wenn Sie nicht an diesen interessiert sind).

Serverless bietet einige Vorteile (obwohl Sie in einigen Fällen etwas anders schreiben müssen, als Sie es gewohnt sind, da es sich um eine völlig andere Architektur handelt):

  • Die Skalierbarkeit ist im Wesentlichen kostenlos - da Sie nur für die Ausführung einer Funktion zahlen, kann der Cloud-Anbieter bei Bedarf problemlos mehr Hardware für die Ausführung Ihres Codes bereitstellen. Sie können auch potenziell skalieren, wenn die Nachfrage steigt, anstatt einen festen Satz zu zahlen, unabhängig davon, ob Ihre Anwendung einmal oder millionenfach verwendet wird.

  • Die Serversoftware und -hardware muss nicht mehr von einem Entwickler verwaltet werden - der Cloud-Anbieter übernimmt dies. Wenn Sie jemals so etwas wie Arch auf einem Server verwendet haben, wissen Sie, wie einfach es ist, ein kritisches Paket auszulöschen und alles zu zerstören!

  • Entwickler können sich auf das konzentrieren, was sie gut können - Code . Die meisten Entwickler werden wahrscheinlich sowohl auf Server - Infrastruktur nicht groß sein und Programmierung - serverless dauert nur ein Problem aus der Gleichung heraus .


msgstr "sollte sich überhaupt nicht um die Serverinfrastruktur kümmern müssen". Das ist eine wirklich gute Sache, denn meiner Erfahrung nach haben schon viel zu viele von ihnen katastrophale Folgen!
Phill W.

15

Martin Fowler hat einen guten Überblick:
https://martinfowler.com/articles/serverless.html

TL; DR
"Serverless" beschreibt die Anwendungsentwicklung und -architektur, die Anwendungen entwirft, bei denen die Infrastruktur kurzlebig ist. Dies bedeutet, dass sie in der Regel containergestützt sind und auf der Grundlage eines dynamischen Skalierungsmechanismus "kommen und gehen" können. Dies schreibt die Verwendung zustandsloser Architekturen vor, die von verteilten Technologien abhängen (z. B. Schlüssel- / Wertspeicher).


2
Nicht nur kurzlebig, sondern vollständig abstrahiert. In vielen modernen nicht serverlosen Setups (wie z. B. AWS EC2-ASGs) ist die Infrastruktur ebenfalls kurzlebig. Eine EC2-Instanz in einem ASG kann jederzeit beendet werden.
Adrian

14

"Serverlos" wird, wie viele andere Dinge in unserem Umfeld, zu einem überlasteten Begriff. Im Allgemeinen bedeutet dies jedoch, dass "unsere Architektur funktional nicht von der Bereitstellung oder laufenden Wartung eines Servers abhängt".

Die erste Instanz, die mir in den Sinn kommt, ist eine Single-Page-Javascript-App, die lokalen Speicher verwendet und auf so etwas wie Amazon S # oder Github Pages (oder einer statischen Site - das sind nur allgemeine Beispiele) gespeichert ist. Stellen Sie sich so etwas wie eine "Aufgaben" - oder "Aufgaben erledigen" -Anwendung vor, die vollständig in Ihrem Browser ausgeführt wird. Ihr Browser ruft einen Dienst wie S3 auf, um den Code herunterzuladen, und die von Ihnen gespeicherten Elemente werden alle im lokalen Speicher Ihres Browsers gespeichert. Es gibt keinen Server, den Sie dafür pflegen.

Die zweite Instanz ist etwas komplizierter (und auch die, die den Begriff "serverlos" populär machte) und verwendet einen Dienst wie AWS Lambda. Lassen Sie mich dies erklären, indem Sie das Problem darstellen, das es löst:

Viele Male in meiner Karriere habe ich ein Geschäftsproblem für einen Kunden mit etwas mehr als Ruby-Code gelöst, der ein periodisches Extrahieren, Transformieren und Laden durchführte (normalerweise als Rechenaufgabe geschrieben). Einmal gelöst, würde ich es normalerweise mit cron automatisieren. Dann stellt sich das Problem: "Wo kann ich dieses Ding hosten, das einmal pro Stunde ausgeführt wird?" Für einige Clients haben wir einen Server in ihrer vorhandenen Infrastruktur eingerichtet. Für andere hatten wir eine EC2-Instanz eingerichtet, obwohl sie zu 99% im Leerlauf war. In beiden Fällen muss ein Server bereitgestellt, gepatcht, überwacht, aktualisiert usw. werden.

Mit Amazon Lambda kann ich diese Rechenaufgabe als reine "Funktion" ausführen. Ich kann es sogar planen. Dieser Kunde würde für eine so einfache Sache, die einmal pro Stunde erledigt wird, keine Infrastruktur mehr benötigen.

Bei "Serverless" gibt es immer noch einen Server, genau wie bei "Cloud" immer noch einen Computer. Darüber hinaus gibt es nur eine Abstraktionsebene, die einen Teil der Umweltverantwortung für Sie übernimmt.


Mein Vorteil für das reale Beispiel eines einmal pro Stunde ausgeführten Jobs, für den normalerweise ein EC2 erforderlich ist. Jetzt brauchen Sie nur noch eine Lambda-Funktion!
HopeKing

10

Alles tolle Antworten schon. Ich habe den Blogbeitrag Thinking Serverless - Wie neue Ansätze die Anforderungen moderner Datenverarbeitung in HighScalability erfüllen, durchgesehen. Dabei habe ich folgende hervorragende Erklärung gefunden, was serverlos bedeutet:

Der Ausdruck „serverlos“ bedeutet nicht, dass Server nicht mehr beteiligt sind. Das bedeutet einfach, dass Entwickler nicht mehr so ​​viel über sie nachdenken müssen. Computerressourcen werden als Services verwendet, ohne dass physische Kapazitäten oder Grenzen überschritten werden müssen. Dienstanbieter übernehmen zunehmend die Verantwortung für die Verwaltung von Servern, Datenspeichern und anderen Infrastrukturressourcen. Durch den Verzicht auf Server können Entwickler ihren Fokus von der Serverebene auf die Aufgabenebene verlagern. Mit serverlosen Lösungen können sich Entwickler auf die Aufgaben ihrer Anwendung oder ihres Systems konzentrieren, indem die Komplexität der Back-End-Infrastruktur verringert wird.

Eine weitere Erkenntnis aus meiner persönlichen Erfahrung beim Aufbau einer serverlosen Infrastruktur ist:

  • Serverlose Daten-Pipelines müssen nicht unbedingt nur in Echtzeit ausgeführt werden. Über die CloudWatch-Warnmechanismen von AWS können Sie effiziente serverlose Batch-Verarbeitungs-Pipelines erstellen, mit denen Sie die Tools überwachen und Warnungen für die Berechnung von (AWS) Lambda auslösen können.

Zum Beispiel: Speichern Sie die Dateien in einer AWS SQS-Warteschlange. Sobald die Anzahl der Nachrichten in der Warteschlange 10 erreicht hat, feuere ein Ereignis an Lambda ab.


6

Neben der einfachen Erklärung der Definition des Begriffs Serverless geben die Ursprünge des Begriffs und seine Geschichte auch einen Einblick in seine Bedeutung. Das Konzept entstand mit dem JAWS Rahmen von Austen Collins , das wurde später umbenannt als Serverless . Ich habe es zuerst in der AWS re: Invent 2015- Sitzung erfahren , bei der das Konzept aktualisiert werden kann. Das hat eigentlich den Begriff Serverless geprägt, der sich dann schnell auf andere Cloud-Systeme ausbreitete:

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.