5 native AWS-Services, die eine serverlose End-to-End-Plattform aufbauen können

Der Aufbau eines automatisierten Softwaresystems bedeutete viele Jahre lang die Einrichtung mehrerer Server mit dedizierter CPU-Konfiguration, Arbeitsspeicher, Massenspeicher und anderen Ressourcen. Als nächstes wurde ein Team von Administratoren gebildet, um diese Systeme zu verwalten. Dann übernahm das Entwicklungsteam die Infrastruktur und begann, Prozesse zu erstellen, die die Server verbinden.

Dieser Prozess kann kompliziert sein, da viele verschiedene Gruppen auf ein gemeinsames Ziel hinarbeiten. Diese Interessenkonflikte können dann zum Problem werden.

Es kann auch ziemlich teuer werden. Dies erfordert, dass Sie Administratoren auf Ihrer Gehaltsliste haben. Server, die kontinuierlich laufen, verbrauchen Ressourcen, obwohl sie nicht genutzt werden.

Um die beste Leistung im Laufe der Zeit aufrechtzuerhalten, benötigen Sie eine Auto-Scaling-Lösung, die die Serverressourcen automatisch skaliert.

Die Cloud-Plattform hat einen Vorteil: Sie ermöglicht es Ihnen, eine End-to-End-Architektur zu erstellen, ohne dass ein Server-Cluster eingerichtet werden muss. Aus administrativer Sicht gibt es nichts zu pflegen.

Dies ist eine kostengünstige Option für Startups und die Minimum Viable Product (MVP)-Phasen von Projekten. Es ist ein guter Ausgangspunkt, wenn es schwierig ist, zukünftige Produktionslasten und Benutzeraktivitäten vorherzusagen. Hier kann es schwierig sein, die Konfiguration von Cluster-Servern zu bestimmen.

Die Automatisierung von Prozessen durch serverlose Cloud-Dienste zeichnet die serverlose Architektur aus. Es verbindet Dienste und erzeugt Ergebnisse, die denen herkömmlicher Cluster-Server ähneln.

Dies ist ein Beispiel für den Aufbau einer solchen Architektur, bei der nur native AWS-Services verwendet werden.

Abholen des Serverless-Flows der Dienste

Stellen Sie sich vor, Sie möchten eine Plattform erstellen, um verschiedene Daten und Bilder (oder Fotos) der Infrastruktur einiger konkreter Anlagen zu sammeln (dies kann jede Produktions- oder Versorgungsanlage sein).

  • Um zukünftige Analysen zu ermöglichen, ist es notwendig, dass die eingehenden Daten zuerst aufgenommen werden.
  • Nach der Anwendung von Geschäftsregeln speichert ein Backend-Verfahren die berechneten Ergebnisse als normalisierte Informationen in einer relationalen Datenbank.
  • Ein Anwendungs-Front-End, das normalisierte saubere Daten anzeigt, ermöglicht es Benutzern, die Ergebnisse anzuzeigen.

Lassen Sie uns untersuchen, welche Komponenten die Architektur enthalten könnte.

AWS S3-Buckets

Quelle: aws.amazon.com

Amazon S3-Buckets sind eine großartige Möglichkeit, Dateien oder Bilder in der AWS-Cloud zu speichern. Der Preis für den Speicher auf dem S3-Eimer ist bemerkenswert niedrig. Darüber hinaus senkt die Einführung einer S3-Bucket-Lebenszyklusrichtlinie diesen Preis weiter.

Eine solche Richtlinie verschiebt ältere Dateien automatisch in verschiedene Klassen von S3-Buckets, z. B. ein Archiv oder einen tiefen Archivzugriff. Die Klassen unterscheiden sich dann auch durch die Geschwindigkeit der Zugriffszeit, aber für alte Daten wird dies weniger ein Problem sein. Es dient hauptsächlich dem Zugriff auf die archivierten Daten im Falle eines dringenden Ereignisses und nicht dem normalen Betriebsbedarf.

  • Sie können Ihre Daten in Unterordnern organisieren.
  • Sie sollten geeignete Berechtigungsbeschränkungen festlegen.
  • Fügen Sie Tags zu Buckets hinzu, um sie leicht zu identifizieren und für die mögliche Verwendung in dynamischen S3-Bucket-Richtlinien zu ermöglichen.
  • Der Bucket ist vom Design her serverlos. Es ist einfach ein Speicherplatz für Ihre Daten.
  Erstellen Sie mit diesen Vorlagen in wenigen Minuten einen Projektplan

Ein S3-Bucket ist vom Design her serverlos. Es ist einfach ein Speicherplatz für Ihre Daten.

AWS Athena-Datenbank

Quelle: aws.amazon.com

Athena macht es einfach, einen AWS Basic Data Lake zu erstellen. Es ist eine Datenbank ohne Server, die einen S3-Bucket zum Speichern ihrer Daten verwendet. Die Datenorganisation wird durch strukturierte Dateiformate wie Parquet- oder CSV-Dateien (Comma-Separated Value) aufrechterhalten. Der S3-Bucket enthält die Dateien, und Athena verweist auf sie, wenn Prozesse die Daten aus der Datenbank auswählen.

Beachten Sie jedoch, dass Athena verschiedene Funktionalitäten nicht unterstützt, die ansonsten als Standard gelten, z. B. Update-Anweisungen. Aus diesem Grund müssen Sie Athena als eine sehr einfache Option betrachten.

Es unterstützt jedoch Indizierung und Partitionierung. Es kann auch sehr einfach horizontal skaliert werden, da dies so komplex ist wie das Hinzufügen neuer Buckets zur Infrastruktur. Für eine einfache, aber funktionale Data-Lake-Erstellung kann dies in den meisten Fällen noch ausreichen.

Für eine gute Leistung ist die Auswahl des besten Datendesigns mit Fokus auf die zukünftige Verwendung unerlässlich. Es ist wichtig, dass Sie sich sehr klar darüber sind, wie Sie Daten auswählen möchten. Es ist schwierig, Tabellen später neu zu erstellen, wenn sie bereits vorhanden und mit vielen Daten gefüllt sind.

Athena DB ist eine großartige Wahl und passt gut zu Ihrem Ziel, wenn Sie einen einfachen und unveränderlichen Datenpool erstellen möchten, der im Laufe der Zeit einfach horizontal skaliert werden kann.

AWS Aurora-Datenbank

Quelle: aws.amazon.com

Athena DB zeichnet sich durch das Speichern unkuratierter Daten aus. So möchten Sie schließlich Ihre Originalinhalte speichern, um deren zukünftige Wiederverwendung zu maximieren. Es ist jedoch langsam, ausgewählte Ergebnisse für eine Front-End-App bereitzustellen.

Eine der besten Optionen, hauptsächlich im Hinblick auf eine einfach auszuführende Einrichtung, ist die Aurora-Datenbank, die im serverlosen Modus ausgeführt wird.

Aurora ist weit entfernt von einer einfachen Datenbank. Es ist eine der fortschrittlichsten nativen relationalen Datenbanklösungen in AWS. Es ist auch eine hochkomplexe native relationale Datenbanklösung, die mit jeder Version verbessert wird.

  So kombinieren Sie Word-Dokumente

Aurora ist einzigartig, weil es im serverlosen Modus ausgeführt werden kann, wodurch es sich von anderen relationalen Diensten abhebt. So funktioniert der Modus:

  • Verwenden Sie zum Konfigurieren des Aurora-Clusters die AWS-Konsole. Sie müssen die Standard-CPU- und RAM-Stufen sowie das maximale Intervall der automatischen Skalierungsfunktion angeben. Dies wirkt sich auf die Leistung aus, die der Aurora-Cluster dynamisch hinzufügen oder entfernen kann. Basierend auf der aktuellen Auslastung der Datenbank entscheidet AWS über die Skalierung nach oben oder unten.
  • Der Aurora-Cluster wird nicht gestartet, es sei denn, der Benutzer oder Prozess initiiert eine echte Anfrage. Zum Beispiel, wenn die geplante Stapelverarbeitung beginnt. Oder wenn die Anwendung einen Back-End-API-Aufruf durchführt, um Daten aus einer Datenbank abzurufen. Die Datenbank wird automatisch geöffnet und bleibt für eine vorher festgelegte Zeit aktiv, nachdem die Anfrageprozesse abgeschlossen sind.
  • Der Aurora-Cluster wird automatisch heruntergefahren, wenn keine Arbeit mehr in der Datenbank vorhanden ist.

Um es noch einmal zu betonen, die serverlose Aurora DB läuft nur, wenn sie wirklich arbeiten muss. Der automatisch gestartete Cluster wird wieder heruntergefahren, wenn er keine Arbeit verarbeitet. Die tatsächliche Arbeit ist das, wofür Sie bezahlen, und nicht Ihre Leerlaufzeit.

Das serverlose Aurora wird vollständig von AWS verwaltet und erfordert keinen Administrator.

AWS verstärken

Amplify bietet eine serverlose Plattform für die schnelle Bereitstellung von Front-End-Anwendungen, die mit JavaScript- und React-Bibliotheken erstellt wurden. Cluster-Server müssen nicht eingerichtet werden. Verwenden Sie die AWS-Konsole, um den Code direkt bereitzustellen, oder verwenden Sie eine automatisierte DevOps-Pipeline.

Sie können Back-End-APIs aufrufen, um auf in Datenbanken gespeicherte Daten zuzugreifen. Diese Aufrufe ermöglichen Ihnen den Zugriff auf die eigentlichen Daten in der Frontend-Anwendung. Die Hauptoptimierung der Leistung im Backend sollte vom Team durchgeführt werden. Sie können die Möglichkeit einer langsamen Reaktion in der Benutzeroberfläche sogar noch weiter reduzieren, wenn Sie effektive select-Anweisungen direkt in den API-Aufrufen entwerfen.

AWS Step-Funktionen

Quelle: aws.amazon.com

Obwohl alle Hauptkomponenten eines Systems serverlos sind, garantiert dies keine vollständig serverlose Architektur. Dies ist nur möglich, wenn alle Batch-Prozesse zwischen den Komponenten serverlos sind.

AWS Step-Funktionen bieten die beste Lösung in der AWS-Cloud. Eine verbundene Liste von AWS Lambda-Funktionen bildet die Schrittfunktion. Diese Funktionen erstellen ein Flussdiagramm mit klaren Start- und Endzuständen. Eine Lambda-Funktion, die normalerweise in den Sprachen Python oder Node JS geschrieben ist, ist ein ausführbares Code-Bit, das alles verarbeitet, was benötigt wird.

  GIFDeck verwandelt Präsentationen auf SlideShare in GIFs

Das folgende Beispiel zeigt, wie Sie eine Schrittfunktion ausführen könnten:

  • AWS löst eine automatische Lambda-Funktion aus, wenn eine neue Datei in den S3-Ordner kommt. Nach dem Analysieren der Datei lädt das Lambda sie in Athena. Das Lambda speichert seine Ergebnisse vor dem Schließen entweder in einem CSV-Format in einem S3-Bucket (oder in einer Datenbank-Tracking-Tabelle).
  • Dieses Ergebnis wird dann vom nächsten Lambda verwendet, um die nächsten Schritte auszuführen. Dies kann das Aufrufen eines maschinellen Lernmodells und das Transformieren einer Teilmenge der neuen Daten in normalisierte Tabellen umfassen. Der letzte Schritt kann darin bestehen, die Daten in die Aurora-Datenbank zu laden.
  • Eine Schrittfunktion verknüpft diese Lambdas miteinander, um einen Stapelfluss zu bilden. Es ist sogar möglich, anstelle eines Schritts einer anderen Wurzelschrittfunktion eine andere Schrittfunktion auszuführen. Auf diese Weise ist es möglich, viele Szenarien abzudecken.
  • Dieser serverlose Ablauf hat einen großen Nachteil: Jede Lambda-Funktion kann maximal 15 Minuten lang ausgeführt werden. Daher kann die Aufteilung des Flusses in kleinere Lambda-Funktionen dies weniger problematisch machen.

    Es ist möglich, mehrere Lambda-Funktionen gleichzeitig in einem Schritt aufzurufen, was im Grunde bedeutet, einen Schritt mit mehreren gleichzeitig ausgeführten Lambdas zu parallelisieren. Warten Sie einfach, bis die gesamte parallele Lambda-Verarbeitung abgeschlossen ist, bevor Sie fortfahren. Fahren Sie dann mit der nächsten Lambda-Verarbeitung fort.

    Letzte Worte

    Die serverlose Architektur bietet die einzigartige Möglichkeit, eine Cloud-Plattform zu schaffen, die die gesamte Systemlandschaft abdeckt. Diese Plattform ist horizontal skalierbar und hat dabei niedrige Betriebskosten.

    Es ist die perfekte Lösung für Projekte mit begrenztem Budget. Es ist eine ausgezeichnete Explorationsoption, typischerweise wenn niemand die Realität der Produktionslast kennt. Dies ist besonders wichtig, nachdem Sie alle Benutzer erfolgreich eingebunden haben. Projektteams können sich dennoch einen Gesamtüberblick über die Funktionsweise des Systems verschaffen. All diese Vorteile können Sie nutzen und müssen trotzdem keine Kompromisse eingehen.

    Diese Abdeckung ist nicht für alle Fälle ausreichend, insbesondere nicht für Fälle mit hoher CPU-Auslastung. Die AWS-Cloud entwickelt sich jedoch ständig in Bezug auf serverlose Anwendungsfälle weiter. Es ist normalerweise eine gute Idee, gründliche Nachforschungen anzustellen, bevor Sie sich für die serverlose Option für Ihr nächstes AWS-Cloud-Projekt entscheiden.

    Sehen Sie sich als Nächstes die besten serverlosen Datenbanken für moderne Anwendungen an.

    x