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 Dataform SQL 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.

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

Dokumen ini menjelaskan solusi untuk mengisolasi tabel pengembangan dengan penggantian kompilasi ruang kerja serta 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 ditempatkan di berbagai project Google Cloud, dengan setiap project yang berkaitan 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 yang terisolasi

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

Anda dapat membuat lingkungan eksekusi yang terisolasi dengan cara berikut:

Memisahkan tabel pengembangan dan produksi berdasarkan skema
Direkomendasikan untuk tim kecil. Dataform membuat tabel pengembangan dan produksi dalam berbagai skema di BigQuery. Dataform menjalankan semua tabel pengembangan dalam skema yang memiliki akhiran yang sama, yang menandai bahwa tabel tersebut dibuat selama pengembangan. Developer dapat saling menimpa tabel pengembangan masing-masing.
Memisahkan tabel pengembangan dan produksi berdasarkan 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 uniknya sendiri untuk tabel pengembangan. Solusi ini menghilangkan risiko developer secara 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 waktu yang lebih lama.
Tabel produksi, staging, dan pengembangan terpisah per project Google Cloud
Direkomendasikan untuk tim berukuran besar atau tim yang membutuhkan lingkungan staging. Formulir data mengeksekusi tabel dari setiap lingkungan dalam project Google Cloud 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.

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

Memisahkan pengembangan dan produksi berdasarkan skema

Solusi ini menciptakan dua lingkungan eksekusi tempat Dataform akan menjalankan alur kerja SQL Anda: pengembangan dan produksi. Untuk memisahkan tabel pengembangan dan produksi berdasarkan skema, Anda perlu mengonfigurasi dataform.json, 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 apa pun.

Tabel berikut menunjukkan konfigurasi yang memisahkan tabel pengembangan dan produksi berdasarkan 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 akan mengeksekusi 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 meng-commit dan mengirim perubahan mereka ke cabang kustom dari repositori jarak jauh. Kemudian, di platform hosting Git pihak ketiga, mereka mengirimkan permintaan pull. Persetujuan permintaan pull menggabungkan perubahan pada cabang main dari repositori jarak jauh.

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

Dataform secara otomatis menjalankan hasil kompilasi production sesuai dengan jadwal yang ditetapkan dalam konfigurasi alur kerja production.

Untuk menerapkan solusi ini, konfigurasi setelan Dataform berikut:

dataform.json

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

Penggantian Workspace

{
schema_suffix: "dev"
}

Konfigurasi rilis

{
gitCommitish: "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.

Dependensi tersebut meng-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
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.sqlx.
  2. Di ruang kerja, Sasha memicu eksekusi tabel secara manual.
  3. Dataform membuat tabel enterprise-analytics.analytics_dev.user_stats dalam skema analytics_dev pada project Google Cloud enterprise-analytics di BigQuery.
  4. Di ruang kerja, Sasha meng-commit perubahan dan mendorongnya 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 secara otomatis memperbarui hasil kompilasi dalam rilis production pada frekuensi yang ditentukan. Saat pembaruan hasil kompilasi production berikutnya, Dataform menambahkan tabel enterprise-analytics.analytics.user_stats ke hasil kompilasi.
  8. Selama eksekusi terjadwal konfigurasi alur kerja, Dataform akan mengeksekusi tabel enterprise-analytics.analytics.user_stats dalam skema analytics pada project Google Cloud enterprise-analytics di BigQuery.
  9. Tabel user_stats.sqlx tersedia untuk pengguna akhir dalam skema analytics pada project Google Cloud enterprise-analytics di BigQuery.

Memisahkan pengembangan dan produksi berdasarkan skema dan project Google Cloud

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

Dalam solusi ini, Dataform mengeksekusi 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 memisahkan tabel pengembangan dan produksi berdasarkan 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 berbagai skema dan project Google Cloud di BigQuery.

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

Saat developer memicu eksekusi di ruang kerja mereka, Dataform menambahkan nama ruang kerja sebagai akhiran skema ke semua skema. Kemudian, Dataform mengeksekusi 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 mereka dalam skemanya sendiri. Tidak ada risiko secara tidak sengaja menimpa tabel developer lain.

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

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

Dataform secara otomatis menjalankan hasil kompilasi production sesuai dengan jadwal yang ditetapkan dalam konfigurasi alur kerja production.

Untuk menerapkan solusi ini, konfigurasi setelan Dataform berikut:

dataform.json

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

Penggantian Workspace

{
schema_suffix: "${workspaceName}"
}

Konfigurasi rilis

{
gitCommitish: "main"
gcloudprojectid: "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 di repositori Dataform yang sama. Repositori Dataform terhubung ke repositori Git pihak ketiga jarak jauh.

Sasha bekerja di ruang kerja khusus mereka yang disebut sasha, dan Kai bekerja di ruang kerja khusus mereka yang disebut Kai. Dependensi tersebut meng-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
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.sqlx.
  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 meng-commit perubahan dan mendorongnya 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 secara otomatis memperbarui hasil kompilasi dalam rilis production pada frekuensi yang ditentukan. Saat pembaruan hasil kompilasi production berikutnya, Dataform menambahkan tabel enterprise-prod.analytics.user_stats ke hasil kompilasi.
  8. Selama eksekusi terjadwal konfigurasi alur kerja, Dataform akan mengeksekusi tabel enterprise-prod.analytics.user_stats dalam skema analytics pada project Google Cloud enterprise-prod di BigQuery.
  9. Tabel user_stats.sqlx tersedia untuk pengguna akhir dalam skema analytics pada project Google Cloud enterprise-prod di BigQuery.

Pengembangan, staging, dan produksi terpisah berdasarkan skema dan project Google Cloud

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

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

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

Dataform menjalankan 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.

Formulir data 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 memisahkan tabel pengembangan, staging, dan produksi berdasarkan 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 mengeksekusi tabel pengembangan, staging, dan produksi dalam berbagai project Google Cloud di BigQuery. Selain itu, Dataform mengeksekusi tabel pengembangan dalam beberapa skema kustom, satu per ruang kerja. Dataform menjalankan 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 miliknya, yang diberi nama berdasarkan nama mereka, misalnya, sasha.

Setiap ruang kerja sesuai dengan skema BigQuery kustom, yang diberi nama berdasarkan ruang kerja. Saat developer memicu eksekusi di ruang kerja mereka, Dataform menambahkan nama ruang kerja sebagai akhiran skema ke skema default. Kemudian, Dataform 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 skemanya sendiri. Tidak ada risiko secara tidak sengaja menimpa tabel developer lain.

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

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

Dataform secara otomatis menjalankan 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 menggabungkan perubahan pada cabang prod dari repositori jarak jauh.

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

Dataform secara otomatis menjalankan hasil kompilasi production sesuai dengan jadwal yang ditetapkan dalam konfigurasi alur kerja production.

Untuk menerapkan solusi ini, konfigurasi setelan Dataform berikut:

dataform.json

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

Penggantian Workspace

{
schema_suffix: "${workspaceName}"
}

Konfigurasi rilis staging

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

Konfigurasi rilis prod

{
gitCommitish: "prod"
gcloudprojectid: "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 mereka yang disebut sasha, dan Kai bekerja di ruang kerja khusus mereka yang disebut Kai. Dependensi tersebut meng-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
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.sqlx.
  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 meng-commit perubahan dan mendorongnya 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 secara otomatis memperbarui hasil kompilasi dalam rilis staging pada frekuensi yang ditentukan. Saat pembaruan hasil kompilasi staging berikutnya, Dataform menambahkan tabel enterprise-staging.analytics.user_stats ke hasil kompilasi.
  8. Selama eksekusi terjadwal konfigurasi alur kerja, Dataform akan mengeksekusi tabel enterprise-staging.analytics.user_stats dalam skema analytics pada 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 secara otomatis memperbarui hasil kompilasi dalam rilis production pada frekuensi yang ditentukan. Saat pembaruan hasil kompilasi production berikutnya, Dataform 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 pada project Google Cloud enterprise-prod di BigQuery.
  13. Tabel user_stats.sqlx tersedia untuk pengguna akhir dalam skema analytics pada project Google Cloud enterprise-prod di BigQuery.

Langkah selanjutnya