Codelebenszyklus verwalten

In diesem Dokument werden Best Practices für die Verwaltung des Codelebenszyklus in Dataform beschrieben: Erstellung, Entwicklungs-, Staging- und Produktionsumgebungen sowie die Konfiguration der Kompilierungs- und Ausführungseinstellungen für jede Umgebung.

Wenn Sie einen standardisierten Lebenszyklus von Dataform SQL-Workflows erstellen möchten, um die Datenpflege zu wahren und die Entwicklungsprozesse zu optimieren, empfehlen wir Folgendes:

  • Erstellen Sie Ausführungsumgebungen, um die bei der Entwicklung erstellten Tabellen von den für Endnutzer verfügbaren Tabellen zu isolieren.

  • Konfigurieren Sie Release- und Workflowkonfigurationen, um Workflows in einer Produktionsumgebung und optional in einer Staging-Umgebung auszuführen.

In diesem Dokument werden Lösungen zum Isolieren von Entwicklungstabellen mit Workspace-Compilation-Überschreibungen und zum Konfigurieren von Staging- und Produktionsumgebungen sowie Release-Konfigurationen und Workflow-Konfigurationen beschrieben.

Mit diesen Lösungen können Sie Ausführungsumgebungen in einem einzelnen Dataform-Repository und einem Google Cloud-Projekt erstellen. Sie können mehrere Kopien eines Dataform-Repositorys in einem anderen Google Cloud-Projekt haben, wobei jedes Projekt einer Phase Ihres Codelebenszyklus entspricht, z. B. Entwicklung, Staging und Produktion. Mit diesem Ansatz können Sie die Berechtigungen für die Identitäts- und Zugriffsverwaltung in jeder Phase des Codelebenszyklus anpassen.

Best Practices für isolierte Ausführungsumgebungen

Wir empfehlen, Tabellen, die während der Ausführung von Entwicklungs-SQL-Workflows erstellt wurden, von Produktionstabellen in BigQuery zu isolieren. So können Endnutzer mühelos zu Produktionstabellen wechseln und das Risiko vermeiden, dass Endnutzer versehentlich auf falsche Daten zugreifen.

Sie können isolierte Ausführungsumgebungen auf folgende Weise erstellen:

Entwicklungs- und Produktionstabellen nach Schema aufteilen
Empfohlen für kleine Teams. Dataform erstellt Entwicklungs- und Produktionstabellen in verschiedenen Schemas in BigQuery. Dataform führt alle Entwicklungstabellen in Schemas aus, die dasselbe Suffix haben, was angibt, dass sie während der Entwicklung erstellt wurden. Entwickler können sich gegenseitig in ihren Entwicklungstabellen überschreiben.
Entwicklungs- und Produktionstabellen nach Schema und Google Cloud-Projekt aufteilen
Empfohlen für mittelgroße Teams. Dataform erstellt Entwicklungs- und Produktionstabellen in verschiedenen Schemas und Projekten in BigQuery. Dataform hat alle Entwicklungstabellen in einem dedizierten Entwicklungs-Google Cloud-Projekt veröffentlicht. Jeder Dataform-Entwickler hat ein eigenes Schema für Entwicklungstabellen. So entfällt das Risiko, dass Entwicklerinnen und Entwickler versehentlich Entwicklungstabellen überschreiben. Der Nachteil dieses Ansatzes besteht darin, dass das Löschen von Entwicklungstabellen und -schemas sowie das erneute Erstellen aller Tabellen in jeder Umgebung länger dauern kann.
Entwicklungs-, Staging- und Produktionstabellen pro Google Cloud-Projekt aufteilen
Empfohlen für große Teams oder Teams, die eine Staging-Umgebung benötigen. Dataform führt Tabellen aus jeder Umgebung in einem dedizierten Google Cloud-Projekt in BigQuery aus. Diese Lösung bietet die größte Kontrolle über den Codelebenszyklus.

Für alle Lösungen ist ein Dataform-Repository erforderlich, das mit einem Remote-Repository eines Drittanbieters verbunden ist.

In allen Lösungen lösen Entwickler Entwicklerausführungen in Entwicklungstabellen innerhalb ihrer Dataform-Arbeitsbereiche manuell aus. Dataform kompiliert Produktions- und Staging-Tabellen automatisch in einer Releasekonfiguration und führt sie mit der in einer Workflowkonfiguration festgelegten Häufigkeit aus.

Entwicklung und Produktion nach Schema aufteilen

Diese Lösung erstellt zwei Ausführungsumgebungen, in denen Dataform Ihre SQL-Workflows ausführt: Entwicklung und Produktion. Wenn Sie Entwicklungs- und Produktionstabellen nach Schema aufteilen möchten, müssen Sie dataform.json, Überschreibungen für Arbeitsbereichskompilierungen und eine Releasekonfiguration konfigurieren. Zum Planen von Produktionsausführungen müssen Sie eine Workflowkonfiguration erstellen.

Dataform führt alle Entwicklungstabellen in Schemas aus, die dasselbe Suffix haben, was angibt, dass sie während der Entwicklung erstellt wurden. Dataform führt alle Produktionstabellen in Schemas ohne Suffix aus.

Die folgende Tabelle zeigt eine Konfiguration, die Entwicklungs- und Produktionstabellen nach Schema mit einem Entwicklungsschema aufteilt:

Einstellung Entwicklung Produktion
Google Cloud-Projekt enterprise-analytics enterprise-analytics
Git-Zweig Name des Arbeitsbereichs main
Überschreibungen von Arbeitsbereichskompilierungen Schema-Suffix: dev -
Releasekonfiguration - production
Workflowkonfiguration - production

Bei dieser Lösung werden Entwicklungs- und Produktionstabellen in einem einzigen Google Cloud-Projekt gespeichert.

Entwickler lösen die Ausführung manuell in ihren Dataform-Arbeitsbereichen aus. In allen manuell ausgelösten Ausführungen führt Dataform Tabellen in Schemas mit demselben Suffix aus, was angibt, dass sie während der Entwicklung erstellt wurden. Entwickler müssen wissen, dass sie die Tabellen der jeweils anderen überschreiben können.

In Dataform führen Entwickler ihre Änderungen durch und übertragen ihre Änderungen in ihre benutzerdefinierten Zweige des Remote-Repositorys. Dann senden sie auf der Drittanbieter-Git-Hosting-Plattform Pull-Anfragen. Durch die Genehmigung einer Pull-Anfrage werden Änderungen mit dem main-Zweig des Remote-Repositorys zusammengeführt.

Dataform kompiliert Produktionstabellen aus dem main-Zweig des Remote-Repositorys automatisch gemäß den Konfigurationseinstellungen für den production-Release zu Kompilierungsergebnissen.

Dataform führt das production-Compilationsergebnis gemäß dem in der Workflow-Konfiguration production festgelegten Zeitplan automatisch aus.

Konfigurieren Sie die folgenden Dataform-Einstellungen, um diese Lösung zu implementieren:

dataform.json

{
defaultSchema: "analytics",
defaultDatabase: "enterprise-analytics"
}

Arbeitsbereichsüberschreibungen

{
schema_suffix: "dev"
}

Releasekonfiguration

{
gitCommitish: "main"
}

Erstellen Sie eine Workflowkonfiguration, um die Ausführung von Kompilierungsergebnissen für production zu planen.

Beispielentwicklungsprozess

In diesem Beispiel arbeiten die Entwickler Sasha und Kai im selben Dataform-Repository. Das Dataform-Repository ist mit einem Remote-Git-Repository eines Drittanbieters verbunden.

Damit werden Änderungen an benutzerdefinierten Zweigen im Remote-Repository mit dem Namen sasha und kai per Commit übertragen und übertragen.

Die folgende Tabelle zeigt die angewendeten Umgebungseinstellungen für Sasha, Kai und die Produktionsumgebung:

Einstellung Logo: Sasha Kai Produktion
Google Cloud-Projekt enterprise-analytics enterprise-analytics enterprise-analytics
Git-Zweig sasha kai main
Schema analytics_dev analytics_dev analytics

Sasha erstellt eine neue Tabelle und stellt sie im folgenden Prozess für die Produktion bereit:

  1. In einem Dataform-Arbeitsbereich erstellt Sasha die Tabelle user_stats.sqlx.
  2. Im Arbeitsbereich löst Sasha manuell die Ausführung der Tabelle aus.
  3. Dataform erstellt die Tabelle enterprise-analytics.analytics_dev.user_stats im Schema analytics_dev im Google Cloud-Projekt enterprise-analytics in BigQuery.
  4. Im Arbeitsbereich führt Sasha die Änderung durch und überträgt sie per Push in den sasha-Zweig im Remote-Git-Repository.
  5. Im Remote-Repository sendet Sasha eine Pull-Anfrage.
  6. Kai prüft und genehmigt im Pull-Repository die Pull-Anfrage und führt die Änderung mit dem main-Zweig zusammen.
  7. Dataform aktualisiert das Kompilierungsergebnis im production-Release automatisch mit der angegebenen Häufigkeit. Während der nächsten Aktualisierung des production-Compilationsergebnisses fügt Dataform dem Kompilierungsergebnis die Tabelle enterprise-analytics.analytics.user_stats hinzu.
  8. Während einer geplanten Workflow-Konfiguration führt Dataform die Tabelle enterprise-analytics.analytics.user_stats im Schema analytics im Google Cloud-Projekt enterprise-analytics in BigQuery aus.
  9. Die Tabelle user_stats.sqlx ist für Endnutzer im Schema analytics im Google Cloud-Projekt enterprise-analytics in BigQuery verfügbar.

Entwicklung und Produktion nach Schema und Google Cloud-Projekt aufteilen

Diese Lösung erstellt zwei Ausführungsumgebungen: Entwicklung und Produktion. Wenn Sie Entwicklungs- und Produktionstabellen nach Schema und Google Cloud-Projekt aufteilen möchten, müssen Sie dataform.json, Überschreibungen für Arbeitsbereichskompilierungen und eine Releasekonfiguration konfigurieren. Zum Planen von Produktionsausführungen müssen Sie eine Workflowkonfiguration erstellen.

In dieser Lösung führt Dataform die Entwicklung in einem dedizierten Entwicklungs-Google Cloud-Projekt in Schemas mit einem anderen Schemasuffix für jeden Arbeitsbereich aus.

Dataform führt alle Produktionstabellen in BigQuery einem dedizierten Produktions-Google Cloud-Projekt ohne Schema-Suffix aus.

Die folgende Tabelle zeigt eine Konfiguration, die Entwicklungs- und Produktionstabellen nach Schema und Google Cloud-Projekt aufteilt, mit einem Entwicklungsschema pro Dataform-Arbeitsbereich:

Einstellung Entwicklung Produktion
Google Cloud-Projekt enterprise-dev enterprise-prod
Git-Zweig Name des Arbeitsbereichs main
Überschreibungen von Arbeitsbereichskompilierungen Schema-Suffix: ${workspaceName} -
Releasekonfiguration - production
Workflowkonfiguration - production

In dieser Lösung führt Dataform Entwicklungs- und Produktionstabellen in verschiedenen Schemas und Google Cloud-Projekten in BigQuery aus.

Entwickler lösen die Ausführung manuell in ihren Dataform-Arbeitsbereichen aus. Jeder Entwickler arbeitet in seinem eigenen Arbeitsbereich, der nach ihm benannt ist, z. B. sasha.

Wenn ein Entwickler die Ausführung in seinem Arbeitsbereich auslöst, hängt Dataform den Namen des Arbeitsbereichs als Schema-Suffix an alle Schemas an. Anschließend führt Dataform Tabellen im benutzerdefinierten Schema aus.

Dataform erstellt beispielsweise Tabellen aus dem Arbeitsbereich sasha im Schema analytics_sasha in BigQuery. Auf diese Weise speichert jeder Entwickler seine Entwicklungstabellen in eigenen Schemas. Es besteht nicht das Risiko, versehentlich Tabellen anderer Entwickler zu überschreiben.

In Dataform führen Entwickler ihre Änderungen durch und übertragen ihre Änderungen in ihre benutzerdefinierten Zweige des Remote-Repositorys. Dann senden sie auf der Drittanbieter-Git-Hosting-Plattform Pull-Anfragen. Durch die Genehmigung einer Pull-Anfrage werden Änderungen mit dem main-Zweig des Remote-Repositorys zusammengeführt.

Dataform kompiliert Produktionstabellen aus dem main-Zweig des Remote-Repositorys automatisch gemäß den Konfigurationseinstellungen für den production-Release zu Kompilierungsergebnissen.

Dataform führt das production-Compilationsergebnis gemäß dem in der Workflow-Konfiguration production festgelegten Zeitplan automatisch aus.

Konfigurieren Sie die folgenden Dataform-Einstellungen, um diese Lösung zu implementieren:

dataform.json

{
defaultSchema: "analytics",
defaultDatabase: "enterprise-dev"
}

Arbeitsbereichsüberschreibungen

{
schema_suffix: "${workspaceName}"
}

Releasekonfiguration

{
gitCommitish: "main"
gcloudprojectid: "enterprise-prod"
}

Erstellen Sie zum Planen der Ausführung von production-Compilationsergebnissen eine Workflow-Konfiguration mit einem benutzerdefinierten Zeitplan, der Ihren Anforderungen am besten entspricht.

Beispielentwicklungsprozess

In diesem Beispiel arbeiten die Entwickler Sasha und Kai am selben Dataform-Repository. Das Dataform-Repository ist mit einem Remote-Git-Repository eines Drittanbieters verbunden.

Sasha arbeitet in ihrem eigenen Arbeitsbereich namens sasha und Kai in ihrem eigenen Arbeitsbereich namens Kai. Damit werden Änderungen an benutzerdefinierten Zweigen im Remote-Repository mit dem Namen sasha und kai per Commit übertragen und übertragen.

Die folgende Tabelle zeigt die angewendeten Umgebungseinstellungen für Sasha, Kai und die Produktionsumgebung:

Einstellung Logo: Sasha Kai Produktion
Google Cloud-Projekt enterprise-dev enterprise-dev enterprise-prod
Git-Zweig sasha kai main
Überschreibungen von Arbeitsbereichskompilierungen Schema-Suffix: ${workspaceName} Schema-Suffix: ${workspaceName} -
Releasekonfiguration - - production
Workflowkonfiguration - - production

Sasha erstellt eine neue Tabelle und stellt sie im folgenden Prozess für die Produktion bereit:

  1. Im Dataform-Arbeitsbereich sasha erstellt Sasha die Tabelle user_stats.sqlx.
  2. Im Arbeitsbereich sasha löst Sasha manuell die Ausführung der Tabelle aus.
  3. Dataform führt die Tabelle enterprise-dev.analytics_sasha.user_stats im Schema analytics_sasha im Google Cloud-Projekt enterprise-dev in BigQuery aus.
  4. Im Arbeitsbereich sasha nimmt Sasha einen Commit der Änderung vor und überträgt sie per Push in den Zweig sasha im Remote-Git-Repository.
  5. Im Remote-Repository sendet Sasha eine Pull-Anfrage.
  6. Kai prüft und genehmigt im Pull-Repository die Pull-Anfrage und führt die Änderung mit dem main-Zweig zusammen.
  7. Dataform aktualisiert das Kompilierungsergebnis im production-Release automatisch mit der angegebenen Häufigkeit. Während der nächsten Aktualisierung des production-Compilationsergebnisses fügt Dataform dem Kompilierungsergebnis die Tabelle enterprise-prod.analytics.user_stats hinzu.
  8. Während einer geplanten Workflow-Konfiguration führt Dataform die Tabelle enterprise-prod.analytics.user_stats im Schema analytics im Google Cloud-Projekt enterprise-prod in BigQuery aus.
  9. Die Tabelle user_stats.sqlx ist für Endnutzer im Schema analytics im Google Cloud-Projekt enterprise-prod in BigQuery verfügbar.

Aufteilen, Staging und Produktion nach Schema und Google Cloud-Projekt aufteilen

Diese Lösung erstellt drei Ausführungsumgebungen: Entwicklung, Staging und Produktion. Alle Umgebungen sind nach Google Cloud-Projekt aufgeteilt. Darüber hinaus wird die Entwicklung aus Staging und Produktion nach Schema aufgeteilt.

Wenn Sie Entwicklungs-, Staging- und Produktionstabellen nach Schema und Google Cloud-Projekt aufteilen möchten, müssen Sie dataform.json, Überschreibungen für die Arbeitsbereichskompilierung und zwei Releasekonfigurationen konfigurieren. Zum Planen von Staging- und Produktionsausführungen müssen Sie zwei separate Workflowkonfigurationen erstellen.

In dieser Lösung führt Dataform Entwicklungstabellen in BigQuery in mehreren Entwicklungsschemas, eines pro Dataform-Arbeitsbereich, in einem dedizierten Entwicklungs-Google Cloud-Projekt aus.

Dataform führt alle Staging-Tabellen in BigQuery in einem dedizierten Staging-Projekt von Google Cloud in Schemas mit demselben Suffix aus. Das bedeutet, dass sie in Staging erstellt wurden.

Dataform führt alle Produktionstabellen in BigQuery in einem dedizierten Produktions-Google Cloud-Projekt in Schemas mit demselben Suffix aus, was angibt, dass sie in der Produktion erstellt wurden.

Die folgende Tabelle zeigt eine Beispielkonfiguration, die Entwicklungs-, Staging- und Produktionstabellen nach Schema und Google Cloud-Projekt aufteilt, mit einem Entwicklungsschema pro Dataform-Arbeitsbereich:

Einstellung Entwicklung Staging wird ausgeführt… Produktion
Google Cloud-Projekt enterprise-dev enterprise-staging enterprise-prod
Git-Zweig Name des Arbeitsbereichs main prod
Überschreibungen von Arbeitsbereichskompilierungen Schema-Suffix: ${workspaceName} - -
Releasekonfiguration - staging production
Workflowkonfiguration - staging production

In dieser Lösung führt Dataform Entwicklungs-, Staging- und Produktionstabellen in verschiedenen Google Cloud-Projekten in BigQuery aus. Außerdem führt Dataform Entwicklungstabellen in mehreren benutzerdefinierten Schemas aus, eines pro Arbeitsbereich. Dataform führt Staging- und Produktionstabellen im selben Schema, jedoch in verschiedenen Google Cloud-Projekten aus.

Entwickler lösen die Ausführung manuell in ihren Dataform-Arbeitsbereichen aus. Jeder Entwickler arbeitet in seinem eigenen Arbeitsbereich, der nach ihm benannt ist, z. B. sasha.

Jeder Arbeitsbereich entspricht einem benutzerdefinierten BigQuery-Schema, das nach dem Arbeitsbereich benannt ist. Wenn ein Entwickler die Ausführung in seinem Arbeitsbereich auslöst, hängt Dataform den Namen des Arbeitsbereichs als Schemasuffix an das Standardschema an. Anschließend führt Dataform Tabellen im benutzerdefinierten Schema in BigQuery aus.

Dataform führt beispielsweise Tabellen aus dem Arbeitsbereich sasha im Schema analytics_sasha in BigQuery aus. Auf diese Weise speichert jeder Entwickler seine Entwicklungstabellen in seinem eigenen Schema. Es besteht nicht das Risiko, versehentlich Tabellen anderer Entwickler zu überschreiben.

In Dataform führen Entwickler ihre Änderungen durch und übertragen ihre Änderungen in ihre benutzerdefinierten Zweige des Remote-Repositorys. Dann senden sie in der Git-Hosting-Plattform des Drittanbieters Pull-Anfragen an den Zweig main. Durch die Genehmigung einer Pull-Anfrage werden Änderungen mit dem main-Zweig des Remote-Repositorys zusammengeführt.

Dataform kompiliert Staging-Tabellen aus dem Zweig main des Remote-Repositorys automatisch in einem Kompilierungsergebnis gemäß den Konfigurationseinstellungen für staging.

Dataform führt das staging-Compilationsergebnis gemäß dem in der Workflow-Konfiguration staging festgelegten Zeitplan automatisch aus.

Zum Hochstufen von Tabellen vom Staging in die Produktion senden Entwickler in der Git-Hosting-Plattform des Drittanbieters Pull-Anfragen aus dem Zweig main an den Zweig prod. Durch die Genehmigung einer Pull-Anfrage werden Änderungen mit dem prod-Zweig des Remote-Repositorys zusammengeführt.

Dataform kompiliert Produktionstabellen aus dem prod-Zweig des Remote-Repositorys automatisch gemäß den Konfigurationseinstellungen für den production-Release zu Kompilierungsergebnissen.

Dataform führt das production-Compilationsergebnis gemäß dem in der Workflow-Konfiguration production festgelegten Zeitplan automatisch aus.

Konfigurieren Sie die folgenden Dataform-Einstellungen, um diese Lösung zu implementieren:

dataform.json

{
defaultSchema: "analytics",
defaultDatabase: "enterprise-dev"
}

Arbeitsbereichsüberschreibungen

{
schema_suffix: "${workspaceName}"
}

staging-Release-Konfiguration

{
gitCommitish: "main"
gcloudprojectid: "enterprise-staging"
}

prod-Release-Konfiguration

{
gitCommitish: "prod"
gcloudprojectid: "enterprise-prod"
}

Erstellen Sie zwei separate Workflowkonfigurationen mit benutzerdefinierten Zeitplänen, die Ihren Anforderungen am besten entsprechen, um die Ausführung der Kompilierungsergebnisse staging und production zu planen.

Beispielentwicklungsprozess

In diesem Beispiel arbeiten die Entwickler Sasha und Kai im selben Dataform-Repository. Das Dataform-Repository ist mit einem Remote-Git-Repository eines Drittanbieters verbunden.

Sasha arbeitet in ihrem eigenen Arbeitsbereich namens sasha und Kai in ihrem eigenen Arbeitsbereich namens Kai. Damit werden Änderungen an benutzerdefinierten Zweigen im Remote-Repository mit dem Namen sasha und kai per Commit übertragen und übertragen.

Die folgende Tabelle zeigt die angewendeten Umgebungseinstellungen für Sasha, Kai und die Produktionsumgebung:

Einstellung Logo: Sasha Kai Staging wird ausgeführt… Produktion
Google Cloud-Projekt enterprise-dev enterprise-dev enterprise-staging enterprise-prod
Git-Zweig sasha kai main prod
Schema analytics_sasha analytics_kai analytics analytics

Sasha erstellt eine neue Tabelle und stellt sie im folgenden Prozess für die Produktion bereit:

  1. Im Dataform-Arbeitsbereich sasha erstellt Sasha die Tabelle user_stats.sqlx.
  2. Im Arbeitsbereich sasha löst Sasha manuell die Ausführung der Tabelle aus.
  3. Dataform führt die Tabelle enterprise-dev.analytics_sasha.user_stats im Schema analytics_sasha im Google Cloud-Projekt enterprise-dev in BigQuery aus.
  4. Im Arbeitsbereich sasha nimmt Sasha einen Commit der Änderung vor und überträgt sie per Push in den Zweig sasha im Remote-Git-Repository.
  5. Im Remote-Repository sendet Sasha eine Pull-Anfrage an den Zweig main.
  6. Kai prüft und genehmigt im Pull-Repository die Pull-Anfrage und führt die Änderung mit dem main-Zweig zusammen.
  7. Dataform aktualisiert das Kompilierungsergebnis im staging-Release automatisch mit der angegebenen Häufigkeit. Während der nächsten Aktualisierung des staging-Compilationsergebnisses fügt Dataform dem Kompilierungsergebnis die Tabelle enterprise-staging.analytics.user_stats hinzu.
  8. Während einer geplanten Workflow-Konfiguration führt Dataform die Tabelle enterprise-staging.analytics.user_stats im Schema analytics im Google Cloud-Projekt enterprise-staging in BigQuery aus.
  9. Im Remote-Repository sendet Sasha eine Pull-Anfrage an den Zweig prod.
  10. Kai prüft und genehmigt im Pull-Repository die Pull-Anfrage und führt die Änderung mit dem prod-Zweig zusammen.
  11. Dataform aktualisiert das Kompilierungsergebnis im production-Release automatisch mit der angegebenen Häufigkeit. Während der nächsten Aktualisierung des production-Compilationsergebnisses fügt Dataform dem Kompilierungsergebnis die Tabelle enterprise-prod.analytics.user_stats hinzu.
  12. Während einer geplanten Ausführung einer Workflowkonfiguration führt Dataform die Tabelle enterprise-prod.analytics.user_stats im Schema analytics im Google Cloud-Projekt enterprise-prod in BigQuery aus.
  13. Die Tabelle user_stats.sqlx ist für Endnutzer im Schema analytics im Google Cloud-Projekt enterprise-prod in BigQuery verfügbar.

Nächste Schritte