Mengelola siklus proses kode

Dokumen ini menjelaskan praktik terbaik untuk mengelola siklus proses kode di Dataform: membuat lingkungan pengembangan, staging, dan produksi, serta mengonfigurasi setelan kompilasi dan eksekusi untuk setiap lingkungan.

Untuk membuat siklus proses standar alur kerja SQL Dataform yang mempertahankan kebersihan data dan mengoptimalkan proses pengembangan, sebaiknya Anda:

  • Buat lingkungan eksekusi untuk mengisolasi tabel yang dibuat selama pengembangan dari tabel yang tersedia untuk pengguna akhir.

  • Konfigurasikan konfigurasi rilis dan alur kerja untuk menjalankan alur kerja di lingkungan produksi, dan secara opsional di lingkungan staging.

Dokumen ini menjelaskan solusi untuk mengisolasi tabel pengembangan dengan penggantian kompilasi ruang kerja dan mengonfigurasi konfigurasi rilis dan konfigurasi alur kerja lingkungan staging dan produksi.

Solusi ini memungkinkan Anda membuat lingkungan eksekusi dalam satu repositori Dataform dan project Google Cloud. Anda dapat memilih untuk memiliki beberapa salinan repositori Dataform, yang disimpan di project Google Cloud yang berbeda, dengan setiap project sesuai dengan tahap siklus proses kode Anda, misalnya, pengembangan, staging, dan produksi. Pendekatan ini memungkinkan Anda menyesuaikan izin Identity and Access Management di setiap tahap siklus proses kode.

Praktik terbaik untuk lingkungan eksekusi terisolasi

Sebaiknya isolasi tabel yang dibuat selama eksekusi alur kerja SQL pengembangan dari tabel produksi di BigQuery. Hal ini memastikan bahwa pengguna akhir dapat membuka tabel produksi dan menghilangkan risiko pengguna akhir mengakses data yang salah secara tidak sengaja.

Anda dapat membuat lingkungan eksekusi terisolasi dengan cara berikut:

Memisahkan tabel pengembangan dan produksi menurut skema
Direkomendasikan untuk tim kecil. Dataform membuat tabel pengembangan dan produksi dalam skema yang berbeda di BigQuery. Dataform mengeksekusi semua tabel pengembangan dalam skema yang memiliki akhiran yang sama, yang menandai bahwa tabel tersebut dibuat selama pengembangan. Developer dapat menimpa tabel pengembangan satu sama lain.
Memisahkan tabel pengembangan dan produksi menurut skema dan project Google Cloud
Direkomendasikan untuk tim berukuran sedang. Dataform membuat tabel pengembangan dan produksi dalam berbagai skema dan project di BigQuery. Dataform memublikasikan semua tabel pengembangan dalam project Google Cloud pengembangan khusus. Setiap developer Dataform memiliki skema unik untuk tabel pengembangannya. Solusi ini menghilangkan risiko developer tidak sengaja menimpa tabel pengembangan satu sama lain. Kelemahan dari pendekatan ini adalah menghapus tabel dan skema pengembangan, serta membuat ulang semua tabel di setiap lingkungan mungkin memerlukan lebih banyak waktu.
Memisahkan tabel pengembangan, staging, dan produksi per project Google Cloud
Direkomendasikan untuk tim besar atau tim yang memerlukan lingkungan staging. Dataform mengeksekusi tabel dari setiap lingkungan dalam project Google Cloud khusus di BigQuery. Solusi ini memberi Anda kontrol terbesar atas siklus proses kode.

Semua solusi memerlukan satu repositori Dataform yang terhubung ke satu repositori jarak jauh pihak ketiga.

Dalam semua solusi, developer memicu eksekusi secara manual dari tabel pengembangan di dalam ruang kerja Dataform mereka. Dataform otomatis mengompilasi tabel produksi dan staging dalam konfigurasi rilis, dan menjalankannya pada frekuensi yang ditetapkan dalam konfigurasi alur kerja.

Memisahkan pengembangan dan produksi menurut skema

Solusi ini membuat dua lingkungan eksekusi tempat Dataform akan menjalankan alur kerja SQL Anda: pengembangan dan produksi. Untuk memisahkan tabel pengembangan dan produksi menurut skema, Anda perlu mengonfigurasi setelan alur kerja, penggantian kompilasi ruang kerja, dan konfigurasi rilis. Untuk menjadwalkan eksekusi produksi, Anda perlu membuat konfigurasi alur kerja.

Dataform mengeksekusi semua tabel pengembangan dalam skema yang memiliki akhiran yang sama, yang menandai bahwa tabel tersebut dibuat selama pengembangan. Dataform mengeksekusi semua tabel produksi dalam skema tanpa akhiran apa pun.

Tabel berikut menunjukkan konfigurasi yang memisahkan tabel pengembangan dan produksi menurut skema, dengan satu skema pengembangan:

Setelan Pengembangan Produksi
Project Google Cloud enterprise-analytics enterprise-analytics
Cabang Git nama ruang kerja main
Penggantian kompilasi Workspace akhiran skema: dev -
Konfigurasi rilis - production
Konfigurasi alur kerja - production

Dalam solusi ini, tabel pengembangan dan produksi disimpan dalam satu project Google Cloud.

Developer memicu eksekusi secara manual di ruang kerja Dataform mereka. Dalam semua eksekusi yang dipicu secara manual, Dataform mengeksekusi tabel dalam skema yang memiliki akhiran yang sama, yang menandai bahwa tabel tersebut dibuat selama pengembangan. Developer harus menyadari bahwa mereka dapat mengganti tabel satu sama lain.

Di Dataform, developer melakukan commit dan mendorong perubahan mereka ke cabang kustom repositori jarak jauh. Kemudian, di platform hosting Git pihak ketiga, mereka mengirimkan permintaan pull. Persetujuan permintaan pull akan menggabungkan perubahan ke cabang main repositori jarak jauh.

Dataform otomatis mengompilasi tabel produksi dari cabang main repositori jarak jauh menjadi hasil kompilasi sesuai dengan setelan konfigurasi rilis production.

Dataform akan otomatis mengeksekusi hasil kompilasi production sesuai dengan jadwal yang ditetapkan dalam konfigurasi alur kerja production.

Untuk menerapkan solusi ini, konfigurasikan setelan Dataform berikut:

Setelan alur kerja

Bergantung pada versi inti Dataform Anda, setelan alur kerja disimpan di workflow_settings.yaml atau dataform.json. Untuk informasi selengkapnya, lihat Mengonfigurasi setelan alur kerja Dataform.

Di workflow_settings.yaml, konfigurasikan setelan berikut:

defaultProject: enterprise-analytics
defaultDataset: analytics

Di dataform.json, konfigurasikan setelan berikut:

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

Penggantian ruang kerja

Akhiran skema: "dev"

Konfigurasi rilis

Git commitish: "main"

Untuk menjadwalkan eksekusi hasil kompilasi production, buat konfigurasi alur kerja.

Contoh proses pengembangan

Dalam contoh ini, developer Sasha dan Kai bekerja di repositori Dataform yang sama. Repositori Dataform terhubung ke repositori Git pihak ketiga jarak jauh.

Kedua perintah ini melakukan commit dan mendorong perubahan ke cabang kustom di repositori jarak jauh, yang disebut sasha dan kai.

Tabel berikut menunjukkan setelan lingkungan yang diterapkan untuk Sasha, Kai, dan lingkungan produksi:

Setelan Sasha Kai Produksi
Project Google Cloud enterprise-analytics enterprise-analytics enterprise-analytics
Cabang Git sasha kai main
Skema analytics_dev analytics_dev analytics

Sasha membuat tabel baru dan men-deploy-nya ke produksi dalam proses berikut:

  1. Di ruang kerja Dataform, Sasha membuat tabel user_stats.
  2. Di ruang kerja, Sasha memicu eksekusi tabel secara manual.
  3. Dataform membuat tabel enterprise-analytics.analytics_dev.user_stats dalam skema analytics_dev di project Google Cloud enterprise-analytics di BigQuery.
  4. Di ruang kerja, Sasha melakukan commit pada perubahan dan mengirimkannya ke cabang sasha di repositori Git jarak jauh.
  5. Di repositori jarak jauh, Sasha mengirimkan permintaan pull.
  6. Di repositori jarak jauh, Kai meninjau dan menyetujui permintaan pull, yang menggabungkan perubahan ke cabang main.
  7. Dataform otomatis memperbarui hasil kompilasi dalam rilis production pada frekuensi yang ditentukan. Selama update berikutnya dari hasil kompilasi production, Dataform akan menambahkan tabel enterprise-analytics.analytics.user_stats ke hasil kompilasi.
  8. Selama eksekusi terjadwal konfigurasi alur kerja, Dataform akan menjalankan tabel enterprise-analytics.analytics.user_stats dalam skema analytics di project Google Cloud enterprise-analytics di BigQuery.
  9. Tabel user_stats tersedia untuk pengguna akhir dalam skema analytics di project Google Cloud enterprise-analytics di BigQuery.

Memisahkan pengembangan dan produksi menurut skema dan project

Solusi ini membuat dua lingkungan eksekusi: pengembangan dan produksi. Untuk memisahkan tabel pengembangan dan produksi menurut skema dan project Google Cloud, Anda perlu mengonfigurasi setelan alur kerja, penggantian kompilasi ruang kerja, dan konfigurasi rilis. Untuk menjadwalkan eksekusi produksi, Anda perlu membuat konfigurasi alur kerja.

Dalam solusi ini, Dataform menjalankan pengembangan dalam project Google Cloud pengembangan khusus, dalam skema dengan akhiran skema yang berbeda untuk setiap ruang kerja.

Dataform mengeksekusi semua tabel produksi di BigQuery, yaitu project Google Cloud produksi khusus tanpa akhiran skema.

Tabel berikut menunjukkan konfigurasi yang membagi tabel pengembangan dan produksi menurut skema dan project Google Cloud, dengan satu skema pengembangan per ruang kerja Dataform:

Setelan Pengembangan Produksi
Project Google Cloud enterprise-dev enterprise-prod
Cabang Git nama ruang kerja main
Penggantian kompilasi Workspace akhiran skema: ${workspaceName} -
Konfigurasi rilis - production
Konfigurasi alur kerja - production

Dalam solusi ini, Dataform mengeksekusi tabel pengembangan dan produksi dalam skema dan project Google Cloud yang berbeda di BigQuery.

Developer memicu eksekusi secara manual di ruang kerja Dataform mereka. Setiap developer bekerja di ruang kerja khusus mereka, yang diberi nama sesuai nama mereka, misalnya, sasha.

Saat developer memicu eksekusi di ruang kerjanya, Dataform akan menambahkan nama ruang kerja sebagai akhiran skema ke semua skema. Kemudian, Dataform akan menjalankan tabel dalam skema kustom.

Misalnya, Dataform membuat tabel dari ruang kerja sasha dalam skema analytics_sasha di BigQuery. Dengan cara ini, setiap developer menyimpan tabel pengembangannya dalam skema mereka sendiri. Tidak ada risiko menulis ulang tabel developer lain secara tidak sengaja.

Di Dataform, developer melakukan commit dan mendorong perubahan mereka ke cabang kustom repositori jarak jauh. Kemudian, di platform hosting Git pihak ketiga, mereka mengirimkan permintaan pull. Persetujuan permintaan pull akan menggabungkan perubahan ke cabang main repositori jarak jauh.

Dataform otomatis mengompilasi tabel produksi dari cabang main repositori jarak jauh menjadi hasil kompilasi sesuai dengan setelan konfigurasi rilis production.

Dataform akan otomatis mengeksekusi hasil kompilasi production sesuai dengan jadwal yang ditetapkan dalam konfigurasi alur kerja production.

Untuk menerapkan solusi ini, konfigurasikan setelan Dataform berikut:

Setelan alur kerja

Bergantung pada versi inti Dataform Anda, setelan alur kerja disimpan di workflow_settings.yaml atau dataform.json. Untuk informasi selengkapnya, lihat Mengonfigurasi setelan alur kerja Dataform.

Di workflow_settings.yaml, konfigurasikan setelan berikut:

defaultProject: enterprise-dev
defaultDataset: analytics

Di dataform.json, konfigurasikan setelan berikut:

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

Penggantian ruang kerja

Akhiran skema: "${workspaceName}"

Konfigurasi rilis

  • Git commitish: "main"
  • ID project Google Cloud: "enterprise-prod"

Untuk menjadwalkan eksekusi hasil kompilasi production, buat konfigurasi alur kerja dengan jadwal kustom yang paling sesuai dengan kebutuhan Anda.

Contoh proses pengembangan

Dalam contoh ini, developer Sasha dan Kai bekerja pada repositori Dataform yang sama. Repositori Dataform terhubung ke repositori Git pihak ketiga jarak jauh.

Sasha bekerja di ruang kerja khusus yang disebut sasha, dan Kai bekerja di ruang kerja khusus yang disebut Kai. Kedua perintah ini melakukan commit dan mendorong perubahan ke cabang kustom di repositori jarak jauh, yang disebut sasha dan kai.

Tabel berikut menunjukkan setelan lingkungan yang diterapkan untuk Sasha, Kai, dan lingkungan produksi:

Setelan Sasha Kai Produksi
Project Google Cloud enterprise-dev enterprise-dev enterprise-prod
Cabang Git sasha kai main
Penggantian kompilasi Workspace akhiran skema: ${workspaceName} akhiran skema: ${workspaceName} -
Konfigurasi rilis - - production
Konfigurasi alur kerja - - production

Sasha membuat tabel baru dan men-deploy-nya ke produksi dalam proses berikut:

  1. Di ruang kerja Dataform sasha, Sasha membuat tabel user_stats.
  2. Di ruang kerja sasha, Sasha memicu eksekusi tabel secara manual.
  3. Dataform mengeksekusi tabel enterprise-dev.analytics_sasha.user_stats dalam skema analytics_sasha di project Google Cloud enterprise-dev di BigQuery.
  4. Di ruang kerja sasha, Sasha melakukan commit pada perubahan dan mengirimkannya ke cabang sasha di repositori Git jarak jauh.
  5. Di repositori jarak jauh, Sasha mengirimkan permintaan pull.
  6. Di repositori jarak jauh, Kai meninjau dan menyetujui permintaan pull, yang menggabungkan perubahan ke cabang main.
  7. Dataform otomatis memperbarui hasil kompilasi dalam rilis production pada frekuensi yang ditentukan. Selama update berikutnya dari hasil kompilasi production, Dataform akan menambahkan tabel enterprise-prod.analytics.user_stats ke hasil kompilasi.
  8. Selama eksekusi terjadwal konfigurasi alur kerja, Dataform akan menjalankan tabel enterprise-prod.analytics.user_stats dalam skema analytics di project Google Cloud enterprise-prod di BigQuery.
  9. Tabel user_stats tersedia untuk pengguna akhir dalam skema analytics di project Google Cloud enterprise-prod di BigQuery.

Memisahkan pengembangan, staging, dan produksi menurut skema dan project

Solusi ini membuat tiga lingkungan eksekusi: pengembangan, staging, dan produksi. Semua lingkungan dibagi menurut project Google Cloud. Selain itu, pengembangan dipisahkan dari staging dan produksi menurut skema.

Untuk memisahkan tabel pengembangan, staging, dan produksi menurut skema dan project Google Cloud, Anda perlu mengonfigurasi setelan alur kerja, penggantian kompilasi ruang kerja, dan dua konfigurasi rilis. Untuk menjadwalkan eksekusi staging dan produksi, Anda perlu membuat dua konfigurasi alur kerja terpisah.

Dalam solusi ini, Dataform menjalankan tabel pengembangan di BigQuery dalam beberapa skema pengembangan, satu per ruang kerja Dataform, dalam project Google Cloud pengembangan khusus.

Dataform mengeksekusi semua tabel staging di BigQuery dalam project Google Cloud staging khusus dalam skema yang memiliki akhiran yang sama, yang menandai bahwa tabel tersebut dibuat dalam staging.

Dataform mengeksekusi semua tabel produksi di BigQuery dalam project Google Cloud produksi khusus dalam skema yang memiliki akhiran yang sama, yang menandai bahwa tabel tersebut dibuat dalam produksi.

Tabel berikut menunjukkan contoh konfigurasi yang membagi tabel pengembangan, staging, dan produksi menurut skema dan project Google Cloud, dengan satu skema pengembangan per ruang kerja Dataform:

Setelan Pengembangan Staging Produksi
Project Google Cloud enterprise-dev enterprise-staging enterprise-prod
Cabang Git nama ruang kerja main prod
Penggantian kompilasi Workspace akhiran skema: ${workspaceName} - -
Konfigurasi rilis - staging production
Konfigurasi alur kerja - staging production

Dalam solusi ini, Dataform menjalankan tabel pengembangan, staging, dan produksi di berbagai project Google Cloud di BigQuery. Selain itu, Dataform menjalankan tabel pengembangan dalam beberapa skema kustom, satu per ruang kerja. Dataform mengeksekusi tabel staging dan produksi dalam skema yang sama, tetapi dalam project Google Cloud yang berbeda.

Developer memicu eksekusi secara manual di ruang kerja Dataform mereka. Setiap developer bekerja di ruang kerja khusus mereka, yang diberi nama sesuai nama mereka, misalnya, sasha.

Setiap ruang kerja sesuai dengan skema BigQuery kustom, yang diberi nama sesuai dengan ruang kerja. Saat developer memicu eksekusi di ruang kerjanya, Dataform akan menambahkan nama ruang kerja sebagai akhiran skema ke skema default. Kemudian, Dataform akan mengeksekusi tabel dalam skema kustom di BigQuery.

Misalnya, Dataform mengeksekusi tabel dari ruang kerja sasha dalam skema analytics_sasha di BigQuery. Dengan cara ini, setiap developer menyimpan tabel pengembangan mereka dalam skema mereka sendiri. Tidak ada risiko menulis ulang tabel developer lain secara tidak sengaja.

Di Dataform, developer melakukan commit dan mendorong perubahan mereka ke cabang kustom repositori jarak jauh. Kemudian, di platform hosting Git pihak ketiga, mereka mengirimkan permintaan pull ke cabang main. Persetujuan permintaan pull akan menggabungkan perubahan ke cabang main di repositori jarak jauh.

Dataform otomatis mengompilasi tabel staging dari cabang main repositori jarak jauh menjadi hasil kompilasi sesuai dengan setelan konfigurasi rilis staging.

Dataform akan otomatis mengeksekusi hasil kompilasi staging sesuai dengan jadwal yang ditetapkan dalam konfigurasi alur kerja staging.

Untuk mempromosikan tabel dari staging ke produksi, di platform hosting Git pihak ketiga, developer mengirimkan permintaan pull dari cabang main ke cabang prod. Persetujuan permintaan pull akan menggabungkan perubahan ke cabang prod repositori jarak jauh.

Dataform otomatis mengompilasi tabel produksi dari cabang prod repositori jarak jauh menjadi hasil kompilasi sesuai dengan setelan konfigurasi rilis production.

Dataform akan otomatis mengeksekusi hasil kompilasi production sesuai dengan jadwal yang ditetapkan dalam konfigurasi alur kerja production.

Untuk menerapkan solusi ini, konfigurasikan setelan Dataform berikut:

Setelan alur kerja

Bergantung pada versi inti Dataform Anda, setelan alur kerja disimpan di workflow_settings.yaml atau dataform.json. Untuk informasi selengkapnya, lihat Mengonfigurasi setelan alur kerja Dataform.

Di workflow_settings.yaml, konfigurasikan setelan berikut:

defaultProject: enterprise-dev
defaultDataset: analytics

Di dataform.json, konfigurasikan setelan berikut:

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

Penggantian ruang kerja

Akhiran skema: "${workspaceName}"

Konfigurasi rilis staging

  • Git commitish: "main"
  • ID project Google Cloud: "enterprise-staging"

Konfigurasi rilis prod

  • Git commitish: "prod"
  • ID project Google Cloud: "enterprise-prod"

Untuk menjadwalkan eksekusi hasil kompilasi staging dan production, buat dua konfigurasi alur kerja terpisah dengan jadwal kustom yang paling sesuai dengan kebutuhan Anda.

Contoh proses pengembangan

Dalam contoh ini, developer Sasha dan Kai bekerja di repositori Dataform yang sama. Repositori Dataform terhubung ke repositori Git pihak ketiga jarak jauh.

Sasha bekerja di ruang kerja khusus yang disebut sasha, dan Kai bekerja di ruang kerja khusus yang disebut Kai. Kedua perintah ini melakukan commit dan mendorong perubahan ke cabang kustom di repositori jarak jauh, yang disebut sasha dan kai.

Tabel berikut menunjukkan setelan lingkungan yang diterapkan untuk Sasha, Kai, dan lingkungan produksi:

Setelan Sasha Kai Staging Produksi
Project Google Cloud enterprise-dev enterprise-dev enterprise-staging enterprise-prod
Cabang Git sasha kai main prod
Skema analytics_sasha analytics_kai analytics analytics

Sasha membuat tabel baru dan men-deploy-nya ke produksi dalam proses berikut:

  1. Di ruang kerja Dataform sasha, Sasha membuat tabel user_stats.
  2. Di ruang kerja sasha, Sasha memicu eksekusi tabel secara manual.
  3. Dataform mengeksekusi tabel enterprise-dev.analytics_sasha.user_stats dalam skema analytics_sasha di project Google Cloud enterprise-dev di BigQuery.
  4. Di ruang kerja sasha, Sasha melakukan commit pada perubahan dan mengirimkannya ke cabang sasha di repositori Git jarak jauh.
  5. Di repositori jarak jauh, Sasha mengirimkan permintaan pull ke cabang main.
  6. Di repositori jarak jauh, Kai meninjau dan menyetujui permintaan pull, yang menggabungkan perubahan ke cabang main.
  7. Dataform otomatis memperbarui hasil kompilasi dalam rilis staging pada frekuensi yang ditentukan. Selama update berikutnya dari hasil kompilasi staging, Dataform akan menambahkan tabel enterprise-staging.analytics.user_stats ke hasil kompilasi.
  8. Selama eksekusi terjadwal konfigurasi alur kerja, Dataform akan menjalankan tabel enterprise-staging.analytics.user_stats dalam skema analytics di project Google Cloud enterprise-staging di BigQuery.
  9. Di repositori jarak jauh, Sasha mengirimkan permintaan pull ke cabang prod.
  10. Di repositori jarak jauh, Kai meninjau dan menyetujui permintaan pull, yang menggabungkan perubahan ke cabang prod.
  11. Dataform otomatis memperbarui hasil kompilasi dalam rilis production pada frekuensi yang ditentukan. Selama update berikutnya dari hasil kompilasi production, Dataform akan menambahkan tabel enterprise-prod.analytics.user_stats ke hasil kompilasi.
  12. Selama eksekusi terjadwal konfigurasi alur kerja, Dataform akan mengeksekusi tabel enterprise-prod.analytics.user_stats dalam skema analytics di project Google Cloud enterprise-prod di BigQuery.
  13. Tabel user_stats tersedia untuk pengguna akhir dalam skema analytics di project Google Cloud enterprise-prod di BigQuery.

Langkah selanjutnya