Java >> Java Tutorial >  >> Java

Einführung in serverlose Architekturmuster

In diesem Beitrag werde ich serverlose Architekturmuster behandeln. Bei mehreren Cloud-Anbietern ist die On-Premise-Infrastruktur veraltet. Per einfacher Definition kann serverlos das Fehlen eines Servers sein. Aber ist das wahr? Nicht wirklich. Zu Beginn werden wir die Grundlagen der serverlosen Architektur und dann ihre Vor- und Nachteile herausfinden.

Was ist eine serverlose Architektur?

In letzter Zeit entwickelt sich die serverlose Architektur immer mehr zu einem Trend. Der Entwickler schreibt immer noch den serverseitigen Code, aber er läuft in zustandslosen Compute-Containern statt in der traditionellen Serverarchitektur. Ein Ereignis löst diesen Code aus und ein Drittanbieter (wie AWS Lambda) verwaltet ihn. Grundsätzlich handelt es sich dabei um Function as a Service (FaaS). AWS Lambda ist die beliebteste Form von FaaS.

Also die Definition von Serverless Architecture –

Serverlose Architektur ist ein Designmuster, bei dem Anwendungen von einem Drittanbieterdienst gehostet werden, wodurch die Notwendigkeit von Serversoftware und -hardware entfällt.

In der traditionellen Architektur führt ein Benutzer eine Aktivität auf der UI-Seite aus und sendet eine Anfrage an den Server, wo der serverseitige Code einige Datenbanktransaktionen durchführt. Bei dieser Architektur hat der Client keine Ahnung, was passiert, da sich die meiste Logik auf der Serverseite befindet.

Mit der serverlosen Architektur haben wir mehrere Funktionen (Lambdas) für einzelne Dienste und die Client-Benutzeroberfläche ruft sie über das API-Gateway auf.

Also in der obigen Architektur

  1. Wenn auf eine Client-Benutzeroberfläche zugegriffen wird, authentifiziert sie den Benutzer über eine Authentifizierungsfunktion, die mit der Benutzerdatenbank interagiert.
  2. In ähnlicher Weise kann der Benutzer, sobald er sich anmeldet, Produkte kaufen oder mithilfe von Kauf- und Suchfunktionen suchen.

In der traditionellen serverbasierten Architektur gab es ein zentrales Element, das den Datenfluss, die Kontrolle und die Sicherheit verwaltete. In der serverlosen Architektur gibt es kein zentrales Element. Der Nachteil der serverlosen Architektur besteht darin, dass wir uns dann für die Sicherheit auf die zugrunde liegende Plattform verlassen.

Warum eine serverlose Architektur?

Bei einer traditionellen Architektur besaß man früher einen Server, und dann konfigurierte man den Webserver und die Anwendung. Dann kam die Cloud-Revolution und jetzt will jeder in der Cloud sein. Auch bei mehreren Cloud-Anbietern müssen wir noch das Betriebssystem auf dem Server und Webserver verwalten.

Was wäre, wenn es eine Möglichkeit gäbe, sich ausschließlich auf den Code zu konzentrieren und ein Dienst den Server und den Webserver verwaltet. AWS stellt Lambda bereit, Microsoft Azure stellt Funktionen bereit, um sich um physische Hardware, virtuelle Betriebssysteme und Webserver zu kümmern. So reduziert Serverless Architecture die Komplexität, indem sich Entwickler nur auf den Code konzentrieren können.

Funktion als Dienst (FAAS)

Wir haben mit Serverless Architecture einiges abgedeckt. Dieses Muster ist jedoch nur mit Function as a Service möglich. Lambda ist eine Art von Function as a Service. Im Grunde geht es bei FaaS darum, Backend-Code auszuführen, ohne Server oder Serveranwendungen zu verwalten.

Ein wesentlicher Vorteil von FaaS wie AWS Lambda besteht darin, dass Sie jede Programmiersprache (wie Java, Javascript, Python, Ruby) zum Codieren verwenden können und die Lambda-Infrastruktur sich um die Einrichtung einer Umgebung für diese Sprache kümmert.

Ein weiterer Vorteil von FaaS ist die horizontale Skalierung. Es ist meist automatisch und elastisch. Der Cloud-Anbieter übernimmt die horizontale Skalierung.

Werkzeuge

Es gibt eine Reihe von Tools zum Erstellen serverloser Architekturfunktionen. Dieses spezielle serverlose Framework macht es zu einem einfachen Prozess.

Vorteile

  1. Der Hauptvorteil der Verwendung einer serverlosen Architektur sind reduzierte Betriebskosten. Sobald sich ein Cloud-Anbieter um die Infrastruktur kümmert, müssen Sie sich nicht mehr auf die Infrastruktur konzentrieren.
  2. Schnellere Bereitstellung, große Flexibilität – Geschwindigkeit hilft bei der Innovation. Durch die schnellere Bereitstellung erleichtert serverlos das Ändern von Funktionen und das Testen der Änderungen.
  3. Reduzierte Skalierungskosten und -zeit. Da Infrastrukturanbieter den Großteil der horizontalen Skalierung übernehmen, muss sich der Anwendungseigentümer keine Gedanken über die Skalierung machen.
  4. Konzentrieren Sie sich mehr auf UX. Daher können sich Entwickler mehr auf die Benutzererfahrung (UX) konzentrieren, wobei die Architektur einfacher wird.

Nachteile

Schließlich gibt es bei jedem architektonischen Design Kompromisse.

  1. Anbieterkontrolle – Durch die Nutzung eines Infrastrukturanbieters geben wir die Kontrolle über den Backend-Service ab. Wir müssen uns auf ihre Sicherheitsinfrastruktur verlassen, anstatt unsere eigene zu entwickeln.
  2. Das Ausführen von Workloads könnte für Serverless teurer sein.
  3. Wiederholung der Logik – Datenbankmigration bedeutet Wiederholung von Code und Koordination für die neue Datenbank.
  4. Startlatenzprobleme – Wenn die erste Anfrage kommt, muss die Plattform die erforderlichen Ressourcen starten, bevor sie die Anfrage bedienen kann, und dies führt zu anfänglichen Latenzproblemen.

Schlussfolgerung

In diesem Beitrag habe ich serverlose Architekturmuster besprochen und erklärt, was es möglich macht, dieses Muster zu verwenden. Ich habe auch die Vor- und Nachteile besprochen. Wenn Sie weitere Fragen zu Serverless Architecture haben, posten Sie bitte Ihren Kommentar und ich werde Ihnen gerne antworten. Hier können Sie meinen Blog abonnieren.

Referenzen

  1. Serverlose Architektur – Serverlos

Java-Tag