Ereignisgesteuerte serverlose Anwendung bereitstellen

Oracle Functions ist eine serverlose, hoch skalierbare, vollständig verwaltete Plattform, die auf Oracle Cloud Infrastructure basiert und von der Fn-Projekt-Open Source-Engine unterstützt wird. Entwickler können damit Code schreiben und bereitstellen, der geschäftlichen Nutzen bietet, ohne sich um Provisioning oder Verwaltung der zugrunde liegenden Infrastruktur zu kümmern. Oracle Functions ist containernativ mit Funktionen, die als Docker-Container-Images verpackt sind.

Architektur

Diese Referenzarchitektur ruft Oracle Functions mit dem Oracle Cloud Infrastructure Events-Service auf, der automatisch auf Änderungen an Oracle Cloud Infrastructure Object Storage reagiert. Wenn Sie ein Beispielimage in Object Storage hochladen, wird der Events-Service ausgelöst, der wiederum Oracle Functions aufruft. Das Fn-Projekt unterstützt die meisten Programmiersprachen. Diese Architektur verwendet Java in der Funktion, um die Metadaten aus dem hochgeladenen Image zu extrahieren und in Oracle Cloud Infrastructure Object Storage zu speichern.

Das folgende Diagramm veranschaulicht diese Referenzarchitektur.

Beschreibung von serverless-oci.png folgt
Beschreibung der Abbildung serverless-oci.png

serverless-oci-oracle.zip

Die Oracle Functions-Architektur enthält die folgenden Komponenten:

  • Region

    Eine Oracle Cloud Infrastructure-Region ist ein lokalisierter geografischer Bereich, der mindestens ein Data Center, sogenannte Availability-Domains, enthält. Regionen sind unabhängig von anderen Regionen, und große Entfernungen können sie (über Länder oder sogar Kontinente) trennen.

  • Availability-Domains

    Availability-Domains sind eigenständige, unabhängige Data Center in einer Region. Die physischen Ressourcen in jeder Availability-Domain sind von den Ressourcen in den anderen Availability-Domains isoliert, was eine Fehlertoleranz bietet. Availability-Domains haben keine gemeinsame Infrastruktur wie Stromversorgung oder Kühlung oder das interne Availability-Domainnetzwerk. Daher ist es wahrscheinlich, dass sich ein Fehler in einer Availability-Domain auf die anderen Availability-Domains in der Region auswirkt.

  • Virtuelles Cloud-Netzwerk (VCN) und Subnetze

    Ein VCN ist ein anpassbares, softwaredefiniertes Netzwerk, das Sie in einer Oracle Cloud Infrastructure-Region einrichten. Wie bei herkömmlichen Data Center-Netzwerken erhalten VCNs vollständige Kontrolle über Ihre Netzwerkumgebung. Ein VCN kann mehrere nicht überlappende CIDR-Blöcke haben, die Sie nach dem Erstellen des VCN ändern können. Sie können ein VCN in Subnetze segmentieren, die für eine Region oder eine Availability-Domain gelten können. Jedes Subnetz besteht aus einem fortlaufenden Adressbereich, der sich nicht mit den anderen Subnetzen im VCN überschneidet. Sie können die Größe eines Subnetzes nach der Erstellung ändern. Ein Subnetz kann öffentlich oder privat sein.

    Die Funktion in dieser Referenzarchitektur wird in einem öffentlichen regionalen Subnetz bereitgestellt.

  • Oracle Functions

    Mit Oracle Functions können Sie Ihren Code bereitstellen, direkt aufrufen oder als Reaktion auf Ereignisse auslösen. Oracle Functions wird ausgelöst, wenn der Events-Service sie aufruft, das Image verarbeitet und die Metadaten wieder in Object Storage speichert. Oracle Functions verwendet Docker-Container, die auf Oracle Cloud Infrastructure Registry gehostet werden.

  • Ereignisse

    Oracle Cloud Infrastructure-Services geben Ereignisse aus, bei denen es sich um strukturierte Nachrichten handelt, die Änderungen an Ressourcen angeben. Zu Ereignissen gehören Vorgänge zum Erstellen, Lesen, Aktualisieren oder Löschen (CRUD), Änderungen des Ressourcenlebenszyklusstatus und Systemereignisse, die sich auf eine Ressource auswirken. Ein Ereignis kann ausgegeben werden, wenn ein Backup abgeschlossen oder nicht erfolgreich ist oder wenn eine Datei in einem Object Storage-Bucket hinzugefügt, aktualisiert oder gelöscht wird.

  • Objektspeicher

    Oracle Cloud Infrastructure Object Storage ist eine internetbasierte, leistungsstarke Speicherplattform, die zuverlässige und kostengünstige Dauerhaftigkeit von Daten bietet. Object Storage kann eine unbegrenzte Menge unstrukturierter Daten eines beliebigen Inhaltstyps speichern, einschließlich Analysedaten und umfangreicher Inhalte, wie Bilder und Videos. Zwei unterschiedliche Speicher-Tiers stellen den Bedarf an häufig aufgerufenem "Hot"-Speicher (Standard) und seltener aufgerufenem "cold"-Speicher (Archive) dar. Standard-Object Storage ist für Daten vorgesehen, auf die Sie schnell, sofort und häufig zugreifen müssen. Archive Storage ist für Daten bestimmt, auf die Sie nur selten zugreifen können, die aber für lange Zeiträume beibehalten werden müssen.

Empfehlungen

Ihre Anforderungen können sich von der hier beschriebenen Architektur unterscheiden. Verwenden Sie die folgenden Empfehlungen als Ausgangspunkt.

  • VCN

    Bestimmen Sie beim Erstellen eines VCN die Anzahl der erforderlichen CIDR-Blöcke und die Größe jedes Blocks basierend auf der Anzahl der Ressourcen, die Sie an Subnetze im VCN anhängen möchten. Verwenden Sie CIDR-Blöcke, die sich im standardmäßigen privaten IP-Adressbereich befinden.

    Nachdem Sie ein VCN erstellt haben, können Sie die zugehörigen CIDR-Blöcke ändern, hinzufügen und entfernen.

    Diese Architektur verwendet ein öffentliches VCN, um die Funktion bereitzustellen. Die Funktion wird in einem öffentlichen regionalen Subnetz im VCN gehostet. Sie können auch ein privates VCN verwenden. In diesem Fall müssen Sie ein NAT-Gateway für den Zugriff auf das Internet verwenden.

  • Oracle Functions

    In dieser Architektur wurden die Funktionen mit der Java-Programmierung entwickelt. Da das Fn-Projekt mehrere Programmiersprachen unterstützt, können Sie die Funktionen in der gewünschten Sprache entwickeln und bereitstellen.

  • Objektspeicher

    Diese Architektur verwendet Standard Object Storage, um ein Image hochzuladen und zu speichern, sodass der Events-Service es bei der Erstellung des Objekts aufnehmen kann. Object Storage speichert die Metadaten zum Objekt nach Functions-Prozessen.

  • Ereignisse

    In dieser Architektur ist der Oracle Cloud Infrastructure Events-Service so konfiguriert, dass er auf Änderungen bei der Object Storage-Erstellung horcht. Der Service wird aufgerufen, nachdem das Objekt in Object Storage hochgeladen wurde, und ruft die Funktion zur Verarbeitung auf.

Überlegungen

  • Verfügbarkeit

    Der Events-Service ist nicht in Regionen innerhalb der Government Cloud-Realm verfügbar.

  • Verwaltungsfreundlichkeit

    Diese Architektur verwendet eine Java-Beispielanwendung zum Schreiben der Funktionen. Sie können jedoch die gewünschte Programmiersprache verwenden.

  • Sicherheit

    Mit Policys können Sie einschränken, wer auf die Oracle Cloud Infrastructure-Ressourcen Ihres Unternehmens zugreifen kann und wie.

    Für Object Storage ist die Verschlüsselung standardmäßig aktiviert und kann nicht deaktiviert werden.

    Der gesamte Zugriff auf Funktionen, die in Oracle Functions bereitgestellt werden, wird über Oracle Cloud Infrastructure Identity and Access Management (IAM) gesteuert. IAM ermöglicht die Zuweisung von Funktionsverwaltungs- und Funktionsaufrufberechtigungen zu bestimmten Benutzern und Benutzergruppen.

  • Kostenfaktor

    Sie zahlen nur für die Ressourcen, die während der Ausführung einer Funktion verwendet werden.

Bereitstellen

Der Terraform-Code für diese Referenzarchitektur ist in GitHub verfügbar. Sie können den Code mit einem einzigen Klick in Oracle Cloud Infrastructure Resource Manager abrufen, den Stack erstellen und bereitstellen. Alternativ können Sie den Code von GitHub auf Ihren Computer herunterladen, den Code anpassen und die Architektur mit der Terraform-Befehlszeilenschnittstelle (CLI) bereitstellen.

  • Mit Oracle Cloud Infrastructure Resource Manager bereitstellen:
    1. Klicken Sie auf In Oracle Cloud bereitstellen

      Wenn Sie noch nicht angemeldet sind, geben Sie den Mandanten und die Benutzerzugangsdaten ein.

    2. Prüfen und akzeptieren Sie die Vertragsbedingungen.
    3. Wählen Sie die Region aus, in der der Stack bereitgestellt werden soll.
    4. Befolgen Sie die Prompts und Anweisungen zum Erstellen des Stacks auf dem Bildschirm.
    5. Nachdem Sie den Stack erstellt haben, klicken Sie auf Terraform-Aktionen, und wählen Sie Planen aus.
    6. Warten Sie auf den Abschluss des Jobs, und prüfen Sie dann den Plan.

      Um Änderungen vorzunehmen, kehren Sie zur Seite "Stackdetails" zurück, klicken Sie auf Stack bearbeiten, und nehmen Sie die erforderlichen Änderungen vor. Führen Sie anschließend die Aktion Planen erneut aus.

    7. Wenn keine weiteren Änderungen erforderlich sind, kehren Sie zur Seite "Stackdetails" zurück, klicken Sie auf Terraform-Aktionen, und wählen Sie Anwenden.
  • Mit dem Terraform-Code in GitHub bereitstellen:
    1. Gehen Sie zu GitHub.
    2. Klonen Sie das Repository, oder laden Sie es auf Ihren lokalen Computer herunter.
    3. Befolgen Sie die Anweisungen im Dokument README.

Änderungslog

In diesem Log werden nur die wesentlichen Änderungen aufgeführt: