IoT-Daten mit serverlosen Funktionen in Autonomous Database streamen

Workloads, die Internet of Things-(IoT-)Geräte nutzen, müssen in Echtzeit effizient skaliert werden. Bei der Bereitstellung von mehr Geräten und Sensoren werden die Menge und die Vielzahl der gestreamten Daten an das Wachstum angepasst. Verwenden Sie serverlose Funktionen und eine autonome Datenbank in Oracle Cloud, um die Verarbeitung gestreamter IoT-Daten zu automatisieren und zu skalieren.

Architektur

In dieser Architektur fließen Daten von IoT-Geräten über ein API-Gateway in serverlose Funktionen ein, die den Streaming-Service zum Hochladen der Daten in eine autonome Datenbank in Oracle Cloud verwenden. Benutzer außerhalb der Cloud können auf die Daten über einen Flask-basierten Webserver zugreifen, der auf einer Oracle Cloud Infrastructure Compute-Instanz ausgeführt wird.

Das folgende Diagramm veranschaulicht diese Architektur.



oci-arch-iot-streaming-oracle.zip

Die Architektur verfügt über folgende Komponenten:

  • Region

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

  • Virtuelles Cloud-Netzwerk (VCN) und Subnetze

    Ein VCN ist ein anpassbares, softwaredefiniertes Netzwerk, das Sie in einer Oracle Cloud Infrastructure-Region eingerichtet haben. Wie herkömmliche Rechenzentrumsnetze geben VCNs Ihnen die vollständige Kontrolle über Ihre Netzwerkumgebung. Ein VCN kann mehrere nicht überlappende CIDR-Blöcke enthalten, 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 Geltungsbereich haben können. Jedes Subnetz besteht aus einem zusammenhängenden 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.

    In dieser Architektur werden die autonome Datenbank und eine Funktion zum Einrichten der Datenbank an ein privates Subnetz angehängt. Die Compute-Instanz, die den Webserver hostet, und die Funktionen, die die Streams verarbeiten, werden in einem öffentlichen Subnetz bereitgestellt.

  • Netzwerksicherheitsgruppen (NSG)

    NSGs fungieren als virtuelle Firewalls für Ihre Cloud-Ressourcen. Mit dem Null-Trust-Sicherheitsmodell von Oracle Cloud Infrastructure wird der gesamte Datenverkehr abgelehnt, und Sie können den Netzwerkverkehr in einem VCN steuern. Ein NSG besteht aus einer Gruppe von Ingress- und Egress-Sicherheitsregeln, die nur für eine bestimmte Gruppe von VNICs in einem einzelnen VCN gelten.

    Der Zugriff auf die Datenbank und den Webserver in dieser Architektur wird über separate NSGs gesteuert.

  • API Gateway

    Mit Oracle API Gateway können Sie APIs mit privaten Endpunkten veröffentlichen, auf die über Ihr Netzwerk zugegriffen werden kann und die Sie gegebenenfalls im öffentlichen Internet bereitstellen können. Die Endpunkte unterstützen API-Validierung, Anforderungs- und Reaktionstransformation, CORS, Authentifizierung und Autorisierung sowie Anforderungsbegrenzung.

  • Streaming

    Oracle Cloud Infrastructure Streaming bietet eine vollständig verwaltete, skalierbare und dauerhafte Speicherlösung für die Aufnahme kontinuierlicher, volumenreicher Datenströme, die Sie in Echtzeit verbrauchen und verarbeiten können. Sie können Streaming verwenden, um hochvolumige Daten wie Anwendungslogs, Betriebstelemetrie, Web-Click-Stream-Daten zu erfassen, oder für andere Anwendungsfälle, in denen Daten kontinuierlich und sequenziell in einem Publish-Abonnement-Messaging-Modell erzeugt und verarbeitet werden.

  • Funktionen

    Oracle Functions ist eine vollständig verwaltete, mehrmandantenfähige, hochskalierbare und On-Demand Functions-as-a-Service-(FaaS-)Plattform. Sie wird von der Open-Source-Engine des Fn-Projekts unterstützt. Mit Funktionen können Sie Ihren Code bereitstellen und entweder direkt aufrufen oder als Reaktion auf Ereignisse auslösen. Oracle Functions verwendet Docker-Container, die in Oracle Cloud Infrastructure Registry gehostet werden.

  • Autonome Datenbank

    Diese Architektur verwendet eine autonome Datenbank (Oracle Autonomous Data Warehouse oder Oracle Autonomous Transaction Processing) mit einem privaten Endpunkt.

    Oracle Autonomous Data Warehouse ist ein selbstfahrender, selbstsichernder, selbstreparierender Datenbankservice, der für Data Warehousing-Workloads optimiert ist. Sie müssen keine Hardware konfigurieren oder verwalten oder Software installieren. Oracle Cloud Infrastructure verarbeitet das Erstellen der Datenbank sowie das Sichern, Patchen, Upgraden und Optimieren der Datenbank.

    Oracle Autonomous Transaction Processing ist ein selbstfahrender, selbstsichernder, selbstreparierender Datenbankservice, der für Transaktionsverarbeitungs-Workloads optimiert ist. Sie müssen keine Hardware konfigurieren oder verwalten oder Software installieren. Oracle Cloud Infrastructure verarbeitet das Erstellen der Datenbank sowie das Sichern, Patchen, Upgraden und Optimieren der Datenbank.

  • Webserver

    In dieser Architektur wird ein Flask Mikrorahmen-Endpunkt auf einer Compute-Instanz bereitgestellt. Die Flask-basierte Anwendung kann die Daten in der autonomen Datenbank als dynamischen Webinhalt bereitstellen.

Empfehlungen

Verwenden Sie die folgenden Empfehlungen als Ausgangspunkt. Ihre Anforderungen können unterschiedlich sein.

  • VCN-Größe

    Wenn Sie ein VCN erstellen, bestimmen Sie die Anzahl der erforderlichen CIDR-Blöcke und die Größe jedes Blocks basierend auf der Anzahl der Ressourcen, die Sie an Subnetze in VCN anhängen möchten. Verwenden Sie CIDR-Blöcke, die sich innerhalb des standardmäßigen privaten IP-Adressraums befinden.

    Wählen Sie CIDR-Blöcke, die sich nicht mit einem anderen Netzwerk überschneiden (in Oracle Cloud Infrastructure, Ihrem On-Premise-Rechenzentrum oder einem anderen Cloud-Provider), zu dem Sie private Verbindungen einrichten möchten.

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

  • Compute Shapes

    In dieser Architektur werden ein Oracle Linux 7.8-Bild und die VM.Standard2.1-Form für den Flash-basierten Webserver verwendet. Wählen Sie eine Form, die für die Ressourcenanforderungen Ihrer Anwendung geeignet ist.

  • API-Gateway-Features

    Die API-Gateway-Endpunkte unterstützen API-Validierung, Anforderungs- und Antworttransformation, CORS, Authentifizierung und Autorisierung sowie Anforderungsbeschränkung. Wählen Sie die Funktionen, die Ihren geschäftlichen und IT-Anforderungen entsprechen.

  • Stream-Partitionierung

    Der Streaming-Service gibt Ihnen ein partitioniertes, anhängendes Log von Nachrichten: einen Stream. Eine Partition ist ein Abschnitt eines Streams. Mit Partitionen können Sie einen Stream verteilen, indem Sie Nachrichten auf mehrere Knoten aufteilen. Sie können jede Partition auf einem separaten Rechner platzieren, damit mehrere Consumer parallel aus einem Stream lesen können. Bei großen und computerintensiven Workloads sollten Sie die Anzahl der Partitionen erhöhen.

  • Autonome Datenbankversion

    Verwenden Sie die neueste verfügbare Version für die autonome Datenbank.

Überlegungen

Beachten Sie bei der Implementierung dieser Architektur Ihre Anforderungen an die folgenden Parameter:

  • Throttling anfordern

    Nachdem Sie das API-Gateway erstellt und eine oder mehrere APIs bereitgestellt haben, können Sie die Rate einschränken, mit der Frontend-Clients Anforderungen an Backend-Services senden können. Entscheiden Sie die Anforderungsratengrenze basierend auf Ihrer Anforderung, hohe Verfügbarkeit und faire Nutzung aufrechtzuerhalten, indem Sie die Backend-Ressourcen vor zu vielen Anfragen schützen. Möglicherweise müssen Sie auch Denial-of-Service-Angriffe (DoS) verhindern oder den Ressourcenverbrauch steuern und einschränken. Letztlich wenden Sie ein Tariflimit global auf alle Routen in einer API-Deployment-Spezifikation an.

  • Servicelimits

    Berücksichtigen Sie beim Entwerfen der Architektur die Servicelimits für die Streaming- und Functions-Services. Weitere Informationen finden Sie in der Dokumentation zu den Servicelimits, die im Abschnitt "Weitere Informationen" aufgeführt ist.

  • Skalierbarkeit
    • Datenbank

      Sie können die Anzahl der CPU-Kerne der Datenbank jederzeit manuell nach oben oder unten skalieren. Mit dem Autoscaling-Feature autonomer Datenbanken kann Ihre Datenbank jederzeit bis zu dreimal so viele CPU-Kerne verwenden. Mit zunehmender Nachfrage erhöht die automatische Skalierung automatisch die Anzahl der verwendeten Kerne. Mit autonomen Datenbanken können Sie die Speicherkapazität jederzeit skalieren, ohne die Verfügbarkeit oder Performance zu beeinträchtigen.

    • Anwendung

      Sie können die Flask-Anwendung skalieren, indem Sie Instanzpool und automatische Skalierungsfunktionen verwenden.

      Mit Instanzpools können Sie mehrere Compute-Instanzen basierend auf derselben Konfiguration innerhalb derselben Region bereitstellen und erstellen.

      Verwenden Sie die automatische Skalierung, um die Anzahl der Compute-Instanzen in einem Instanzpool basierend auf Performancemetriken, wie der CPU-Auslastung, automatisch anzupassen. Mit Autoscaling können Sie konsistente Performance für Benutzer in Zeiträumen mit hohem Bedarf bereitstellen und die Kosten bei niedrigem Bedarf reduzieren.

    • Funktionen

      Oracle Functions erstellt und entfernt Funktionscontainer automatisch basierend auf der Anforderungsladung. Sie zahlen nur, wenn die Funktionen aufgerufen werden und für die Dauer, die sie ausgeführt werden.

  • Anwendungsverfügbarkeit

    Fault-Domains bieten die beste Resilienz innerhalb einer Availability-Domain. Wenn Sie eine höhere Verfügbarkeit benötigen, sollten Sie nach Möglichkeit mehrere Availability-Domains oder mehrere Regionen verwenden.

  • Backups
    • Datenbank

      Oracle Cloud Infrastructure sichert autonome Datenbanken automatisch und behält die Backups für 60 Tage bei. Sie können die Datenbank zu einem beliebigen Zeitpunkt während des Aufbewahrungszeitraums wiederherstellen und wiederherstellen. Sie können auch manuelle Backups erstellen, um die automatischen Backups zu ergänzen. Manuelle Backups werden in einem von Ihnen erstellten Oracle Cloud Infrastructure Object Storage-Bucket gespeichert und für 60 Tage beibehalten.

    • Anwendung

      Mit dem Oracle Cloud Infrastructure Block Volumes-Service können Sie Point-in-Time-Backups von Daten auf einem Block-Volume erstellen. Sie können diese Backups jederzeit auf neue Volumes wiederherstellen.

      Mit dem Service können Sie auch ein Point-in-Time-Backup eines Boot-Volumes ohne Anwendungsunterbrechung oder Ausfallzeit erstellen. Boot- und Block-Volumes verfügen über dieselben Backup-Funktionen.

  • Sicherheit
    • Zugriffskontrolle

      Mit Policys können Sie einschränken, wer auf Ihre Ressourcen in der Cloud zugreifen kann, und welche Aktionen sie ausführen können.

    • Netzwerksicherheit

      Der Networking-Service bietet zwei virtuelle Firewall-Funktionen, die Sicherheitsregeln zur Steuerung des Datenverkehrs auf Paketebene verwenden: Sicherheitslisten und Netzwerksicherheitsgruppen (NSG). Ein NSG besteht aus einer Gruppe von Ingress- und Egress-Sicherheitsregeln, die nur für eine Gruppe von VNICs Ihrer Wahl in einem einzelnen VCN gelten. Beispiel: Sie können alle Compute-Instanzen wählen, die als Webserver in der Web-Tier einer Multi-Tier-Anwendung in Ihrem VCN fungieren.

      NSG-Sicherheitsregeln entsprechen den Sicherheitslistenregeln. Für die Quelle oder das Ziel einer NSG-Sicherheitsregel können Sie jedoch ein NSG anstelle eines CIDR-Blocks angeben. Sie können also problemlos Sicherheitsregeln schreiben, um den Traffic zwischen zwei NSGs in demselben VCN oder Traffic innerhalb eines NSG zu steuern. Wenn Sie ein Datenbanksystem erstellen, können Sie eine oder mehrere NSGs angeben. Sie können auch ein vorhandenes Datenbanksystem aktualisieren, um eine oder mehrere NSGs zu verwenden.

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 ziehen, 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-CLI bereitstellen.

  • Deployment mit Oracle Cloud Infrastructure Resource Manager:
    1. Wählen Sie In Oracle Cloud bereitstellen

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

    2. Prüfen und akzeptieren Sie die Allgemeinen Geschäftsbedingungen.
    3. Wählen Sie den Bereich, in dem Sie den Stack bereitstellen möchten.
    4. Befolgen Sie die Anweisungen und Aufforderungen auf dem Bildschirm, um den Stack zu erstellen.
    5. Klicken Sie nach dem Erstellen des Stacks auf Terraform-Aktionen und auf Plan.
    6. Warten Sie, bis der Job abgeschlossen ist, und prüfen Sie den Plan.

      Um Änderungen vorzunehmen, kehren Sie zur Seite "Stackdetails" zurück, klicken Sie auf Stack bearbeiten und die erforderlichen Änderungen vornehmen. Führen Sie dann die Aktion Plan 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 aus.
  • Deployment mit der Terraform-CLI:
    1. Gehen Sie zu GitHub.
    2. Laden Sie den Code herunter oder klonen Sie ihn auf Ihren lokalen Computer.
    3. Befolgen Sie die Anweisungen im README.

Mehr erfahren

Erfahren Sie mehr über die Verwendung serverloser Funktionen für Ihre Workloads in der Cloud.

Änderungslog

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