Cloud-native Batch-Workloads mit dem Oracle Cloud Infrastructure-Batchservice bereitstellen

Einführung

Moderne Anwendungen verlassen sich stark auf die Hintergrundverarbeitung, um Aufgaben wie Datentransformation, Berichterstellung, Medienverarbeitung und groß angelegte Simulationen zu bewältigen. Diese Workloads sind häufig rechenintensiv, werden asynchron ausgeführt und können in Skalierung und Häufigkeit erheblich variieren. Die Verwaltung solcher Workloads mit herkömmlichen Ansätzen kann komplex sein, sodass Teams Infrastruktur bereitstellen, Planungssysteme erstellen und die Skalierung manuell durchführen müssen.

Oracle Cloud Infrastructure (OCI) Batch Service wurde entwickelt, um diesen Prozess zu vereinfachen. Es bietet eine vollständig verwaltete Möglichkeit, Batch-Workloads in großem Maßstab auszuführen, sodass Sie sich auf die Definition Ihrer Jobs konzentrieren können, während die Plattform die Ausführung und das Ressourcenmanagement übernimmt.

In diesem Tutorial werden die Funktionsweise von OCI Batch, die Architektur und die effektive Verwendung in realen Szenarien erläutert.

Welches Problem löst OCI Batch?

Die Ausführung von Batch-Workloads umfasst traditionell mehrere Komplexitätsebenen. Teams müssen häufig im Voraus Compute-Ressourcen bereitstellen, ihre eigenen Jobplanungsmechanismen implementieren und Logik für Wiederholungen, Fehler und Skalierung erstellen. Selbst bei der Verwendung von Plattformen wie Kubernetes ist erheblicher Aufwand erforderlich, um die Umgebung zu konfigurieren und zu warten. Dies erhöht den operativen Overhead und verlangsamt die Entwicklung.

OCI Batch bewältigt diese Herausforderungen, indem ein einheitlicher Service bereitgestellt wird, der den Lebenszyklus von Batch-Workloads verwaltet. Dadurch entfällt die Notwendigkeit, benutzerdefinierte Scheduler zu erstellen oder die Infrastruktur zu verwalten, sodass Teams Großaufträge effizienter und mit weniger Betriebsaufwand ausführen können.

Überblick über OCI Batch Service

OCI Batch fungiert als zentraler Service für die Verwaltung und Ausführung von Batch-Workloads. Wenn ein Job weitergeleitet wird, wird er in eine Queue gestellt und basierend auf Planungsentscheidungen und Ressourcenverfügbarkeit verarbeitet. Der Service wertet Jobanforderungen aus und stellt Rechenkapazität dynamisch bereit, um Aufgaben auszuführen. Jede Aufgabe wird in einer containerisierten Umgebung ausgeführt, um Konsistenz und Isolation sicherzustellen. Sobald die Ausführung abgeschlossen ist, werden Ausgaben gespeichert und Protokolle zur Überwachung und Fehlerbehebung generiert.

Dieser Ansatz bietet einen optimierten Workflow, in dem Jobweiterleitung, Planung, Ausführung und Beobachtbarkeit in einem einzigen verwalteten Service verarbeitet werden.

Architektur Deep Dive

Die Architektur von OCI Batch folgt einem klaren Ablauf von der Jobweiterleitung bis zur Ausführung und Ausgabe, wie im Diagramm dargestellt.

OCIBatchArch

Der Prozess beginnt, wenn ein Benutzer einen Job über die OCI-Konsole, die CLI oder die API weiterleitet. Diese Anforderung ist mit einer Batch Context verknüpft, die als grundlegende Konfigurationsschicht fungiert. Der Kontext definiert Schlüsseleinstellungen wie Networking, Compute-Flotten und Logging, um sicherzustellen, dass alle Jobs in einer konsistenten Umgebung ausgeführt werden.

Jobs werden dann in Job Pools organisiert, die eine logische Gruppierung bereitstellen und das Planungsverhalten steuern. Dies ist besonders nützlich bei der Verwaltung von Workloads über verschiedene Teams oder Umgebungen hinweg, da es Priorisierung und Isolation ermöglicht. Jeder weitergeleitete Job stellt eine vollständige Arbeitseinheit dar und kann eine oder mehrere Aufgaben enthalten. Aufgaben sind die kleinsten ausführbaren Einheiten und werden mit einer definierten Aufgabenumgebung ausgeführt. Dadurch können Jobs in kleinere Teile unterteilt werden, die je nach definierten Abhängigkeiten unabhängig oder nacheinander ausgeführt werden können.

Nach dem Weiterleiten werden Jobs in eine Queue platziert, wo sie warten, bis Ressourcen verfügbar sind. Der Scheduler wertet die Queue kontinuierlich aus und wählt Jobs basierend auf Priorität und Kapazität aus. Dadurch wird sichergestellt, dass Arbeitslasten effizient verarbeitet werden, ohne das System zu überfordern.

Um diese Aufgaben auszuführen, verwendet OCI Batch Compute Fleets, das die zugrunde liegende Compute-Kapazität darstellt. Diese Flotten werden basierend auf dem Workload-Bedarf dynamisch bereitgestellt. Wenn weitere Jobs weitergeleitet werden, wird zusätzliche Kapazität zugewiesen. Wenn der Bedarf sinkt, werden die Ressourcen reduziert. Dies gewährleistet eine effiziente Nutzung, ohne dass ein manuelles Eingreifen erforderlich ist.

Nach der Ausführung werden die Ergebnisse in OCI storage services gespeichert, und Logs und Metriken werden zur Sichtbarkeit erfasst. Dadurch erhalten Sie einen vollständigen Überblick über die Jobausführung und die Systemperformance.

Warum diese Architektur wichtig ist

Eine wichtige Stärke von OCI Batch liegt in der Trennung zwischen Jobweiterleitung und -ausführung. Anstatt jeden Job sofort auszuführen, verwendet das System Queues und Planungslogik, um Arbeitslasten effizient zu verwalten. Mit diesem Design kann OCI Batch plötzliche Nachfragespitzen bewältigen, ohne dass eine vorab bereitgestellte Infrastruktur erforderlich ist. Außerdem wird sichergestellt, dass Jobs mit höherer Priorität zuerst ausgeführt werden können, wodurch die Vorhersehbarkeit in gemeinsam genutzten Umgebungen verbessert wird.

Durch die dynamische Verwaltung der Ressourcenzuweisung und die Kontrolle der Ausführung über Queues bietet der Service ein Gleichgewicht zwischen Performance, Skalierbarkeit und Kosteneffizienz.

Kernkomponenten von OCI Batch

OCI Batch basiert auf einer Reihe von Kernkomponenten, die zusammenarbeiten, um Batch-Verarbeitungsfunktionen bereitzustellen.

Real-World-Beispiel: Videoverarbeitungspipeline

Betrachten Sie ein Szenario, in dem Tausende von Videos verarbeitet werden müssen. Beispiel: Formate konvertieren, Miniaturansichten generieren oder Filter anwenden.

Mit OCI Batch kann jedes Video als separate Aufgabe innerhalb eines Jobs behandelt werden. Diese Aufgaben können über mehrere Compute-Ressourcen hinweg parallel ausgeführt werden, wodurch die gesamte Verarbeitungszeit erheblich reduziert wird. Wenn der Workload-Bedarf steigt, stellt OCI Batch automatisch zusätzliche Rechenkapazität bereit, um die Aufgaben zu bewältigen. Sobald die Verarbeitung abgeschlossen ist, werden Ergebnisse gespeichert und Protokolle zur Überwachung generiert. Dieses Muster kann auf viele andere Anwendungsfälle angewendet werden, darunter Datenpipelines, Workloads für maschinelles Lernen und technische Simulationen.

Voraussetzungen

Befolgen Sie die Beispiele für IAM-Policys, um dem OCI-Batchservice Zugriff auf die erforderlichen OCI-Services zu erteilen.

Sie müssen auch die OCI-CLI herunterladen, wenn Sie damit Jobs erstellen möchten.

Aufgabe 1. Batchkontext erstellen

Der Batchkontext ist die oberste Konfigurationsschicht für Ihre Batch-Workloads. Dazu gehören Networking, Flotten, Berechtigungen, Jobprioritätseinstellungen und Loggingkonfiguration.

Um einen Batchkontext zu erstellen, gehen Sie zum Batchservice, und wählen Sie Batchkontexte und dann Batchkontext erstellen aus. Geben Sie die folgenden Details basierend auf Ihrer Umgebung ein.

  1. Name
  2. Compartment
  3. Beschreibung
  4. VCN
  5. Subnetz
  6. Flotte
  7. Berechtigungen (optional)
  8. Jobprioritätskonfiguration (optional)
  9. Logging-Konfiguration

    Batchkontext erstellen

Aufgabe 2. Jobpool erstellen

Ein Jobpool ist einfach ein logischer Container für Jobs. Wenn Sie einen Job ausführen, wählen Sie einen Jobpool aus, unter dem er erstellt werden soll. Zum Erstellen eines Jobpools sind nur die folgenden Konfigurationen erforderlich.

  1. Name
  2. Beschreibung
  3. Compartment

    Jobpool erstellen

Aufgabe 3. Aufgabenprofil erstellen

Ein Aufgabenprofil ist eine wiederverwendbare Konfiguration, mit der die minimal erforderlichen Compute-Ressourcen für Aufgaben definiert werden, wie 1 OCPU und 16 GB Arbeitsspeicher. Sie können mehrere Profile erstellen, die jeweils einer anderen Ressourcenanforderung entsprechen. Zum Erstellen eines Aufgabenprofils benötigen Sie die folgenden Konfigurationen:

  1. Name
  2. Beschreibung
  3. Mindestanzahl OCPUs - Sie können diesen Wert für dieses Beispiel auf 1 setzen
  4. Minimaler Arbeitsspeicher in GB - Sie können diesen Wert für dieses Beispiel auf 8 setzen

    Aufgabenprofil erstellen

Aufgabe 4. Lokale Umgebung einrichten und Containerimages pushen

  1. Code aus GitHub abrufen und in das richtige Verzeichnis verschieben.

     git clone https://github.com/oracle-devrel/technology-engineering.git
     cd technology-engineering/app-dev/developer-tools-and-lowcode/batch/video-transcoding/ 
    
  2. Erstellen Sie ein Repository in OCI Container Registry (OCIR).

    Container-Registry erstellen

  3. Senden Sie das Containerimage an OCIR. Der Imagepfad muss mit der Region, dem Mandanten-Namespace, dem Repository-Namen und dem Imagetag übereinstimmen, d.h. mit iad.ocir.io/<tenancy-namespace>/convert_mp4_to_avi:latest

     docker build -t <image>:<tag> .
     docker push <image>:<tag>
    

    Container an OCIR übertragen

  4. Erstellen Sie Object Storage-Buckets für Ein- und Ausgabevideos.

    Eingabe-Bucket erstellen

    Ausgabe-Bucket erstellen

  5. Videodatei in Object Storage hochladen

Aufgabe 5. Aufgabenumgebung erstellen

Eine Aufgabenumgebung ist die Laufzeitkonfiguration für Ihre Aufgaben. Zum Einrichten einer Aufgabenumgebung benötigen Sie:

  1. Name
  2. Beschreibung
  3. Sicherheitskontext:
    1. Benutzer-ID: Auf 1 setzen
    2. Gruppenkennung: Auf 1 setzen
    3. Dateisystemgruppen-ID: Auf 1 setzen
  4. Arbeitsverzeichnis: Stellen Sie dies auf /video

    Aufgabenumgebung erstellen

Aufgabe 6. Job weiterleiten

Es gibt verschiedene Möglichkeiten, einen Job an den Batch-Dienst weiterzuleiten. Für dieses Tutorial verwenden wir die OCI-CLI.

  1. Erstellen Sie eine Datei mit dem Namen video_conversion_job.json
  2. Kopieren Sie Folgendes und fügen Sie es in video_conversion_job.json ein
     {
     "batchJobPoolId": "JOB_POOL_OCID",
     "compartmentId": "COMPARTMENT_ID",
     "description": "Task to convert video from MP4 to AVI format",
     "displayName": "convert_video",
     "maxWaitSeconds": 0,
     "tasks": [
         {
         "batchJobPoolId": "JOB_POOL_OCID",
         "compartmentId": "COMPARTMENT_ID",
         "description": "Task to convert video from MP4 to AVI format",
         "displayName": "convert_video",
         "maxWaitSeconds": 0,
         "tasks": [
             {
               "batchTaskEnvironmentId": "TASK_ENVIRONMENT_OCID",
               "batchTaskProfileId": "TASK_PROFILE_OCID",
               "description": "Task to convert video from MP4 to AVI format",
               "environmentVariables": [
                 {
                   "name": "INPUT_BUCKET",
                   "value": "input_bucket"
                 },
                 {
                   "name": "INPUT_OBJECT",
                   "value": "input.mp4"
                 },
               {
                   "name": "OCI_BUCKET",
                   "value": "output_bucket"
               },
               {
                   "name": "OUTPUT_FILENAME",
                   "value": "output.avi"
               },
               {
                   "name": "OCI_NAMESPACE",
                   "value": "TENANCY_NAMESPACE"
               },
               {
                   "name": "OCI_REGION",
                   "value": "REGION"
               }
               ],
               "fleetAssignmentPolicy":
               {
                   "type": "BEST_FIT"
                 },
               "name": "convert_video",
               "type": "COMPUTE"
             }
         ],
         "waitForState": [
           "ACCEPTED"
         ],
         "waitIntervalSeconds": 0
              
    

    Ersetzen Sie Folgendes entsprechend Ihrer Umgebung:

    • JOB_POOL_OCID
    • COMPARTMENT_ID
    • TASK_ENVIRONMENT_OCID
    • TASK_PROFILE_OCID
    • TENANCY_NAMESPACE
    • REGION
  3. Führen Sie den folgenden Befehl aus:

     oci batch batch-job create --from-json file://video_conversion_job.json
    

    Die Ausführung des Jobs dauert bis zu 10 Minuten. Beachten Sie den Job in der OCI-Konsole, um zu sehen, in welcher Phase er sich befindet.

Aufgabe 7. Ergebnisse validieren

  1. Gehen Sie in der OCI-Konsole zu Object Storage.
  2. Suchen Sie den Ausgabe-Bucket, und prüfen Sie, ob transcodiertes Video vorhanden ist.

OCI-Batch- vs. herkömmliche Ansätze

Herkömmliche Batch-Verarbeitungslösungen erfordern häufig die Verwaltung der Infrastruktur, die Konfiguration von Scheduler und die manuelle Skalierung. Dies erhöht die Komplexität und den Betriebsaufwand. Mit OCI Batch werden diese Herausforderungen jedoch beseitigt, indem eine verwaltete Umgebung bereitgestellt wird, in der Planung, Ausführung und Ressourcen-Provisioning automatisch verarbeitet werden. Dies erleichtert die Ausführung großer Workloads ohne umfassende Infrastrukturkenntnisse.

Best Practices

Um OCI Batch effektiv zu verwenden, sollten Workloads unter Berücksichtigung der Skalierbarkeit konzipiert werden. Das Aufteilen großer Jobs in kleinere Tasks ermöglicht eine bessere parallele Ausführung und verbesserte Performance. Außerdem ist es wichtig, geeignete Aufgabenprofile zu definieren, damit Ressourcen effizient zugewiesen werden. Die richtige Protokollierung und Überwachung sollte aktiviert werden, um einen Einblick in die Jobausführung zu gewährleisten. Durch die Verwendung von Jobpools und Prioritäten wird sichergestellt, dass kritische Workloads pünktlich ausgeführt werden, insbesondere in gemeinsam genutzten Umgebungen.

Schlussfolgerung

Der OCI Batch-Service bietet eine optimierte und skalierbare Möglichkeit, Batch-Workloads in der Cloud auszuführen. Durch die Verarbeitung von Joborchestrierung, Planung und Compute-Bereitstellung in einem einzigen Service reduziert es die betriebliche Komplexität und verbessert die Effizienz. Für Unternehmen, die sich mit groß angelegten, rechenintensiven Workloads befassen, bietet OCI Batch eine zuverlässige und flexible Lösung, mit der sich Teams auf die Bereitstellung von Ergebnissen konzentrieren können, anstatt die Infrastruktur zu verwalten.

Verwandte Links

Bestätigungen

Weitere Lernressourcen

Sehen Sie sich weitere Übungen auf docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im YouTube-Kanal von Oracle Learning zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um ein Oracle Learning Explorer zu werden.

Die Produktdokumentation finden Sie im Oracle Help Center.