Praktik terbaik untuk siklus proses alur kerja

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

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

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

  • Konfigurasi rilis dan alur kerja untuk menjalankan alur kerja di lingkungan produksi, dan secara opsional di lingkungan penyiapan.

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

Solusi ini memungkinkan Anda membuat lingkungan eksekusi dalam satu project dan repositori Dataform. Google Cloud Anda dapat memilih untuk memiliki beberapa salinan repositori Dataform, yang ditempatkan di projectGoogle 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 Anda.

Praktik terbaik untuk lingkungan eksekusi terisolasi

Sebaiknya pisahkan tabel yang dibuat selama eksekusi alur kerja 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:

Membagi tabel pengembangan dan produksi menurut skema
Direkomendasikan untuk tim kecil. Dataform membuat tabel pengembangan dan produksi dalam skema yang berbeda di BigQuery. Dataform menjalankan 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.
Membagi tabel pengembangan dan produksi menurut skema dan Google Cloud project
Direkomendasikan untuk tim berukuran sedang. Dataform membuat tabel pengembangan dan produksi dalam skema dan project yang berbeda di BigQuery. Dataform memublikasikan semua tabel pengembangan dalam project pengembangan Google Cloud khusus. Setiap developer Dataform memiliki skema uniknya sendiri untuk tabel pengembangan. Solusi ini menghilangkan risiko developer saling menimpa tabel pengembangan secara tidak sengaja. Kelemahan dari pendekatan ini adalah penghapusan tabel dan skema pengembangan, serta pembuatan ulang semua tabel di setiap lingkungan mungkin memerlukan lebih banyak waktu.
Membagi tabel pengembangan, staging, dan produksi per Google Cloud project
Direkomendasikan untuk tim besar atau tim yang memerlukan lingkungan penyiapan. Dataform menjalankan tabel dari setiap lingkungan dalam Google Cloud project khusus di BigQuery. Solusi ini memberi Anda kontrol paling besar atas siklus proses kode.

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

Dalam semua solusi, developer secara manual memicu eksekusi tabel pengembangan di dalam ruang kerja Dataform mereka. Dataform secara otomatis mengompilasi tabel produksi dan penyiapan 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 Anda: pengembangan dan produksi. Untuk memisahkan tabel pengembangan dan produksi berdasarkan 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 menjalankan semua tabel pengembangan dalam skema yang memiliki akhiran yang sama, yang menandai bahwa tabel tersebut dibuat selama pengembangan. Dataform menjalankan semua tabel produksi dalam skema tanpa akhiran.

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

Setelan Pengembangan Produksi
Google Cloud project 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 Google Cloud project.

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

Di Dataform, developer melakukan commit dan mengirim perubahan ke cabang kustom repositori jarak jauh. Kemudian, di platform hosting Git pihak ketiga, mereka mengirimkan permintaan pull. Persetujuan permintaan pull menggabungkan perubahan ke branch 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 otomatis menjalankan hasil kompilasi production sesuai jadwal yang ditetapkan dalam konfigurasi alur kerja production.

Untuk menerapkan solusi ini, konfigurasi setelan Dataform berikut:

Setelan alur kerja

Bergantung pada versi Dataform core, setelan alur kerja disimpan di workflow_settings.yaml atau dataform.json. Untuk mengetahui 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 Workspace

Akhiran skema: "dev"

Konfigurasi rilis

Git commitish: "main"

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

Proses pengembangan sampel

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

Mereka melakukan commit dan mengirim 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
Google Cloud project 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 enterprise-analytics Google Cloud di BigQuery.
  4. Di ruang kerja, Sasha melakukan commit 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, lalu menggabungkan perubahan ke branch main.
  7. Dataform otomatis memperbarui hasil kompilasi dalam rilis production pada frekuensi yang ditentukan. Selama update berikutnya pada hasil kompilasi production, Dataform akan menambahkan tabel enterprise-analytics.analytics.user_stats ke hasil kompilasi.
  8. Selama eksekusi konfigurasi alur kerja terjadwal, Dataform menjalankan tabel enterprise-analytics.analytics.user_stats di skema analytics dalam project enterprise-analytics Google Cloud di BigQuery.
  9. Tabel user_stats tersedia untuk pengguna akhir dalam skema analytics di project enterprise-analytics Google Cloud di BigQuery.

Memisahkan pengembangan dan produksi berdasarkan 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 pengembangan Google Cloud khusus, dalam skema dengan akhiran skema yang berbeda untuk setiap ruang kerja.

Dataform menjalankan semua tabel produksi di BigQuery project produksi khusus tanpa akhiran skema. Google Cloud

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

Setelan Pengembangan Produksi
Google Cloud project 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 menjalankan tabel pengembangan dan produksi dalam skema dan Google Cloud project yang berbeda di BigQuery.

Developer memicu eksekusi secara manual di ruang kerja Dataform mereka. Setiap developer bekerja di ruang kerja khusus mereka, yang dinamai 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 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 pengembangan di skemanya sendiri. Tidak ada risiko menimpa tabel developer lain secara tidak sengaja.

Di Dataform, developer melakukan commit dan mengirim perubahan ke cabang kustom repositori jarak jauh. Kemudian, di platform hosting Git pihak ketiga, mereka mengirimkan permintaan pull. Persetujuan permintaan pull menggabungkan perubahan ke branch 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 otomatis menjalankan hasil kompilasi production sesuai jadwal yang ditetapkan dalam konfigurasi alur kerja production.

Untuk menerapkan solusi ini, konfigurasi setelan Dataform berikut:

Setelan alur kerja

Bergantung pada versi Dataform core, setelan alur kerja disimpan di workflow_settings.yaml atau dataform.json. Untuk mengetahui 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 Workspace

Akhiran skema: "${workspaceName}"

Konfigurasi rilis

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

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

Proses pengembangan sampel

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 miliknya yang bernama sasha, dan Kai bekerja di ruang kerja khusus miliknya yang bernama Kai. Mereka melakukan commit dan mengirim 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
Google Cloud project 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 secara manual memicu eksekusi tabel.
  3. Dataform menjalankan tabel enterprise-dev.analytics_sasha.user_stats dalam skema analytics_sasha di project enterprise-dev Google Cloud di BigQuery.
  4. Di ruang kerja sasha, Sasha melakukan commit 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, lalu menggabungkan perubahan ke branch main.
  7. Dataform otomatis memperbarui hasil kompilasi dalam rilis production pada frekuensi yang ditentukan. Selama update berikutnya pada hasil kompilasi production, Dataform akan menambahkan tabel enterprise-prod.analytics.user_stats ke hasil kompilasi.
  8. Selama eksekusi konfigurasi alur kerja terjadwal, Dataform menjalankan tabel enterprise-prod.analytics.user_stats di skema analytics dalam project enterprise-prod Google Cloud di BigQuery.
  9. Tabel user_stats tersedia untuk pengguna akhir dalam skema analytics di project enterprise-prod Google Cloud di BigQuery.

Membagi pengembangan, staging, dan produksi berdasarkan skema dan project

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

Untuk memisahkan tabel pengembangan, penyiapan, 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 harus 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 pengembangan Google Cloud khusus.

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

Dataform menjalankan semua tabel produksi di BigQuery dalam project produksi Google Cloud 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, penyiapan, dan produksi menurut skema dan project Google Cloud , dengan satu skema pengembangan per ruang kerja Dataform:

Setelan Pengembangan Staging Produksi
Google Cloud project 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, penyiapan, dan produksi di project yang berbeda di BigQuery. Google Cloud Selain itu, Dataform menjalankan tabel pengembangan di beberapa skema kustom, satu per ruang kerja. Dataform menjalankan tabel penyiapan 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 dinamai sesuai nama mereka, misalnya, sasha.

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

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

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

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

Dataform otomatis menjalankan hasil kompilasi staging sesuai jadwal yang ditetapkan dalam konfigurasi alur kerja staging.

Untuk mempromosikan tabel dari staging ke produksi, di platform hosting Git pihak ketiga, developer mengirimkan permintaan penarikan dari cabang main ke cabang prod. Persetujuan permintaan pull menggabungkan perubahan ke branch 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 otomatis menjalankan hasil kompilasi production sesuai jadwal yang ditetapkan dalam konfigurasi alur kerja production.

Untuk menerapkan solusi ini, konfigurasi setelan Dataform berikut:

Setelan alur kerja

Bergantung pada versi Dataform core, setelan alur kerja disimpan di workflow_settings.yaml atau dataform.json. Untuk mengetahui 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 Workspace

Akhiran skema: "${workspaceName}"

Konfigurasi rilis staging

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

Konfigurasi rilis prod

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

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

Proses pengembangan sampel

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 miliknya yang bernama sasha, dan Kai bekerja di ruang kerja khusus miliknya yang bernama Kai. Mereka melakukan commit dan mengirim 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
Google Cloud project 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 secara manual memicu eksekusi tabel.
  3. Dataform menjalankan tabel enterprise-dev.analytics_sasha.user_stats dalam skema analytics_sasha di project enterprise-dev Google Cloud di BigQuery.
  4. Di ruang kerja sasha, Sasha melakukan commit 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, lalu menggabungkan perubahan ke branch main.
  7. Dataform otomatis memperbarui hasil kompilasi dalam rilis staging pada frekuensi yang ditentukan. Selama update berikutnya pada hasil kompilasi staging, Dataform akan menambahkan tabel enterprise-staging.analytics.user_stats ke hasil kompilasi.
  8. Selama eksekusi konfigurasi alur kerja terjadwal, Dataform menjalankan tabel enterprise-staging.analytics.user_stats di skema analytics dalam project enterprise-staging Google Cloud 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, lalu menggabungkan perubahan ke branch prod.
  11. Dataform otomatis memperbarui hasil kompilasi dalam rilis production pada frekuensi yang ditentukan. Selama update berikutnya pada hasil kompilasi production, Dataform akan menambahkan tabel enterprise-prod.analytics.user_stats ke hasil kompilasi.
  12. Selama eksekusi konfigurasi alur kerja terjadwal, Dataform menjalankan tabel enterprise-prod.analytics.user_stats dalam skema analytics di project enterprise-prod Google Cloud di BigQuery.
  13. Tabel user_stats tersedia untuk pengguna akhir dalam skema analytics di project enterprise-prod Google Cloud di BigQuery.

Langkah berikutnya