CI/CD-Pipeline für Datenverarbeitungsworkflows verwenden

Last reviewed 2023-05-12 UTC

In diesem Dokument wird beschrieben, wie Sie mit verwalteten Produkten auf Google Cloud durch Implementierung von Methoden zur kontinuierlichen Integration und kontinuierlichen Bereitstellung (Continuous Integration/Continuous Delivery, CI/CD) eine CI/CD-Pipeline für die Datenverarbeitung einrichten. Data Scientists und Datenanalysten können die Methoden der CI/CD-Verfahren anpassen, um eine hohe Qualität, Wartbarkeit und Anpassungsfähigkeit der Datenprozesse und Workflows sicherzustellen. Sie können folgende Methoden anwenden:

  • Versionskontrolle des Quellcodes.
  • Automatisches Erstellen, Testen und Bereitstellen von Anwendungen.
  • Isolation der Umgebung und Abgrenzung von der Produktion.
  • Replizierbare Verfahren zur Einrichtung der Umgebung.

Dieses Dokument richtet sich an Data Scientists und Datenanalysten, die Datenverarbeitungsjobs zur periodischen Ausführung erstellen, um ihre Forschung und Entwicklung (F&E) so zu strukturieren, dass Arbeitslasten im Rahmen der Datenverarbeitung systematisch und automatisch verwaltet werden.

Architektur

Im folgenden Diagramm sind die Schritte der CI/CD-Pipeline ausführlich dargestellt:

Architekturdiagramm der CI/CD-Pipeline

Die Bereitstellungen für die Test- und Produktionsumgebung werden in zwei verschiedene Cloud Build-Pipelines unterteilt – eine Test- und eine Produktionspipeline.

Die Testpipeline im vorangegangenen Diagramm setzt sich aus den folgenden Schritten zusammen:

  1. Ein Entwickler übergibt Änderungen am Code an Cloud Source Repositories.
  2. Die Änderungen lösen in Cloud Build einen Test-Build aus.
  3. Cloud Build erstellt die selbstausführende JAR-Datei und stellt sie im JAR-Test-Bucket in Cloud Storage bereit.
  4. Cloud Build stellt die Testdateien in den Testdatei-Buckets in Cloud Storage bereit.
  5. Cloud Build stellt die Variable in Cloud Composer so ein, dass sie auf die neu bereitgestellte JAR-Datei verweist.
  6. Cloud Build testet den gerichteten azyklischen Graphen (Directed Acyclic Graph, DAG) für den Datenverarbeitungsworkflow und stellt ihn im Cloud Composer-Bucket in Cloud Storage bereit.
  7. Die Workflow-DAG-Datei wird in Cloud Composer bereitgestellt.
  8. Cloud Build löst den neu bereitgestellten Datenverarbeitungsworkflow aus.
  9. Wenn der Integrationstest des Datenverarbeitungs-Workflows bestanden wurde, wird eine Nachricht an Pub/Sub veröffentlicht, die im Datenfeld der Nachricht einen Verweis auf das letzte selbstausführende JAR (aus den Airflow-Variablen) enthält.

Die Produktionspipeline im vorangegangenen Diagramm setzt sich aus den folgenden Schritten zusammen:

  1. Die Pipeline für die Produktionsbereitstellung wird ausgelöst, wenn eine Nachricht in einem Pub/Sub-Thema veröffentlicht wird.
  2. Ein Entwickler genehmigt die Pipeline für die Produktionsbereitstellung manuell und der Build wird ausgeführt.
  3. Cloud Build kopiert die neueste selbstausführende JAR-Datei aus dem JAR-Test-Bucket in den JAR-Produktions-Bucket in Cloud Storage.
  4. Cloud Build testet den Produktionsdatenverarbeitungs-Workflow-DAG und stellt ihn im Cloud Composer-Bucket in Cloud Storage bereit.
  5. Die Produktionsworkflow-DAG-Datei wird in Cloud Composer bereitgestellt.

In diesem Referenzarchitekturdokument wird der Produktionsdatenverarbeitungs-Workflow in derselben Cloud Composer-Umgebung wie der Testworkflow bereitgestellt, um eine konsolidierte Ansicht aller Datenverarbeitungsworkflows zu erhalten. In dieser Referenzarchitektur werden die Umgebungen mithilfe verschiedener Cloud Storage-Buckets getrennt, in denen die Eingabe- und Ausgabedaten abgelegt werden.

Zur vollständigen Trennung der Umgebungen müssen in verschiedenen Projekten mehrere Cloud Composer-Umgebungen erstellt werden, die standardmäßig voneinander getrennt sind. Diese Trennung trägt zum Schutz der Produktionsumgebung bei. Dieser Ansatz wird in dieser Anleitung nicht weiter erörtert. Weitere Informationen zum Zugriff auf Ressourcen in mehreren Google Cloud-Projekten finden Sie unter Dienstkontoberechtigungen festlegen.

Datenverarbeitungsworkflow

Die Anleitung zum Ausführen des Datenverarbeitungsworkflows in Cloud Composer ist in einem in Python geschriebenen gerichteten azyklischen Graphen (Directed Acyclic Graph, DAG) definiert. Im DAG werden alle Schritte des Datenverarbeitungsworkflows zusammen mit ihren jeweiligen Abhängigkeiten untereinander definiert.

Die CI/CD-Pipeline stellt die DAG-Definition aus Cloud Source Repositories automatisch in jedem Build in Cloud Composer bereit. Durch diese Vorgehensweise wird dafür gesorgt, dass Cloud Composer immer die neueste Workflowdefinition hat, ohne dass der Nutzer sich darum kümmern muss.

In der DAG-Definition für die Testumgebung ist neben dem Datenverarbeitungsworkflow ein End-to-End-Testschritt festgelegt. Dieser sorgt dafür, dass der Datenverarbeitungsworkflow ordnungsgemäß ausgeführt wird.

Im folgenden Diagramm ist der Datenverarbeitungsworkflow dargestellt.

Datenverarbeitungsworkflow in vier Schritten

Der Datenverarbeitungsworkflow umfasst die folgenden Schritte:

  1. Ausführung des WordCount-Datenprozesses in Dataflow.
  2. Herunterladen der Ausgabedateien aus dem WordCount-Prozess. Der WordCount-Prozess gibt drei Dateien aus:

    • download_result_1
    • download_result_2
    • download_result_3
  3. Herunterladen der Referenzdatei mit dem Namen download_ref_string.

  4. Prüfen des Ergebnisses anhand der Referenzdatei. Bei diesem Integrationstest werden alle drei Ergebnisse zusammengefasst und die zusammengefassten Ergebnisse mit der Referenzdatei verglichen.

  5. Veröffentlichen Sie eine Nachricht an Pub/Sub, nachdem der Integrationstest bestanden wurde.

Durch die Verwendung eines Frameworks zur Aufgabenorchestrierung wie Cloud Composer zum Verwalten des Datenverarbeitungsworkflows lässt sich der Code für den Workflow vereinfachen.

Kostenoptimierung

In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:

Bereitstellung

Informationen zum Bereitstellen dieser Architektur finden Sie unter CI/CD-Pipeline für Workflows zur Datenverarbeitung bereitstellen.

Nächste Schritte