Tutorial ini menunjukkan cara membuat dan menjalankan alur kerja induk yang menjalankan beberapa alur kerja turunan secara paralel.
Dalam diagram berikut, empat eksekusi paralel alur kerja turunan dipanggil. Hal ini memungkinkan alur kerja induk untuk memproses data di cabang paralel, dan mengurangi waktu eksekusi keseluruhan. Alur kerja induk menunggu semua eksekusi alur kerja turunan selesai sebelum menampilkan ringkasan eksekusi yang berhasil dan gagal, yang menyederhanakan deteksi error.
Tujuan
Dalam tutorial ini, Anda akan:
- Buat dan deploy alur kerja turunan yang menerima data dari alur kerja induk.
- Buat dan deploy alur kerja induk yang menjalankan beberapa alur kerja turunan
menggunakan loop
for
paralel. - Jalankan alur kerja induk yang memanggil eksekusi paralel alur kerja turunan.
- Hasil dari semua eksekusi alur kerja turunan yang berhasil dan gagal akan disimpan dan ditampilkan di peta.
Anda dapat menjalankan perintah berikut di Google Cloud Console atau dengan menggunakan Google Cloud CLI di terminal atau Cloud Shell.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
Batasan keamanan yang ditentukan oleh organisasi mungkin mencegah Anda menyelesaikan langkah-langkah berikut. Untuk mengetahui informasi pemecahan masalah, lihat Mengembangkan aplikasi di lingkungan Google Cloud yang terbatas.
Konsol
-
Login ke Akun Google Anda.
Jika Anda belum memilikinya, Daftar untuk membuat akun baru.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Workflow Executions and Workflows.
-
Buat akun layanan:
-
Di konsol Google Cloud, buka halaman Buat akun layanan.
Buka Create service account - Pilih project Anda.
-
Di kolom Nama akun layanan, masukkan nama. Konsol Google Cloud akan mengisi kolom ID akun layanan berdasarkan nama ini.
Di kolom Deskripsi akun layanan, masukkan sebuah deskripsi. Sebagai contoh,
Service account for quickstart
. - Klik Buat dan lanjutkan.
-
Berikan peran Workflows > Workflows Invoker ke akun layanan.
Untuk memberikan peran, temukan daftar Pilih peran, lalu pilih Workflows > Workflows Invoker.
- Klik Lanjutkan.
-
Klik Selesai untuk menyelesaikan pembuatan akun layanan.
-
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Workflow Executions and Workflows.
-
Buat akun layanan:
-
Di konsol Google Cloud, buka halaman Buat akun layanan.
Buka Create service account - Pilih project Anda.
-
Di kolom Nama akun layanan, masukkan nama. Konsol Google Cloud akan mengisi kolom ID akun layanan berdasarkan nama ini.
Di kolom Deskripsi akun layanan, masukkan sebuah deskripsi. Sebagai contoh,
Service account for quickstart
. - Klik Buat dan lanjutkan.
-
Berikan peran Workflows > Workflows Invoker ke akun layanan.
Untuk memberikan peran, temukan daftar Pilih peran, lalu pilih Workflows > Workflows Invoker.
- Klik Lanjutkan.
-
Klik Selesai untuk menyelesaikan pembuatan akun layanan.
-
gcloud
-
Login ke Akun Google Anda.
Jika Anda belum memilikinya, Daftar untuk membuat akun baru.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Buat atau pilih project Google Cloud.
-
Membuat project Google Cloud:
gcloud projects create PROJECT_ID
Ganti
PROJECT_ID
dengan nama untuk project Google Cloud yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_ID
dengan nama project Google Cloud Anda.
-
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Workflow Executions and Workflows:
gcloud services enable workflowexecutions.googleapis.com
workflows.googleapis.com -
Menyiapkan autentikasi:
-
Buat akun layanan:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Ganti
SERVICE_ACCOUNT_NAME
dengan nama untuk akun layanan. -
Berikan peran IAM
roles/workflows.invoker
ke akun layanan:gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/workflows.invoker
Ganti kode berikut:
SERVICE_ACCOUNT_NAME
: nama dari akun layanan.PROJECT_ID
: project ID dimana Anda membuat akun layanan
-
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Buat atau pilih project Google Cloud.
-
Membuat project Google Cloud:
gcloud projects create PROJECT_ID
Ganti
PROJECT_ID
dengan nama untuk project Google Cloud yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_ID
dengan nama project Google Cloud Anda.
-
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Workflow Executions and Workflows:
gcloud services enable workflowexecutions.googleapis.com
workflows.googleapis.com -
Menyiapkan autentikasi:
-
Buat akun layanan:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Ganti
SERVICE_ACCOUNT_NAME
dengan nama untuk akun layanan. -
Berikan peran IAM
roles/workflows.invoker
ke akun layanan:gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/workflows.invoker
Ganti kode berikut:
SERVICE_ACCOUNT_NAME
: nama dari akun layanan.PROJECT_ID
: project ID dimana Anda membuat akun layanan
-
Membuat dan men-deploy alur kerja turunan
Alur kerja turunan dapat menerima dan memproses data dari alur kerja induk. Alur kerja turunan menunjukkan hal ini dengan melakukan hal berikut:
- Menerima integer sebagai argumen
- Tidur selama 10 detik untuk menyimulasikan beberapa pemrosesan
Menampilkan indikator (berdasarkan bilangan bulat apakah itu angka ganjil atau genap) untuk menyimulasikan keberhasilan atau kegagalan eksekusi alur kerja
Konsol
Di konsol Google Cloud, buka halaman Workflows.
Klik
Buat.Masukkan nama,
workflow-child
, untuk alur kerja baru.Pada daftar Region, pilih us-central1.
Pilih Akun layanan yang telah dibuat sebelumnya.
Klik Next.
Di editor alur kerja, masukkan definisi berikut untuk alur kerja Anda:
Klik Deploy.
gcloud
Buat file kode sumber untuk alur kerja Anda:
touch workflow-child.yaml
Buka file kode sumber di editor teks, lalu salin alur kerja berikut ke file tersebut.
Deploy alur kerja:
gcloud workflows deploy workflow-child \ --source=workflow-child.yaml \ --location=us-central1 \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Ganti
SERVICE_ACCOUNT_NAME
dengan nama akun layanan yang Anda buat sebelumnya.
Membuat dan men-deploy alur kerja induk
Alur kerja induk menjalankan beberapa cabang alur kerja turunan menggunakan
loop for
paralel.
Salin kode sumber untuk definisi alur kerja. Alat ini terdiri dari bagian-bagian berikut:
Peta digunakan untuk menyimpan hasil eksekusi alur kerja turunan. Untuk informasi selengkapnya, lihat Maps.
Loop
for
dijalankan secara paralel untuk memanggil alur kerja turunan. Untuk informasi selengkapnya, lihat Langkah paralel dan Iterasi.Alur kerja turunan dipanggil menggunakan konektor. Setiap iterasi alur kerja turunan diteruskan argumen
iteration
. Alur kerja induk menunggu dan menyimpan hasil dari setiap eksekusi alur kerja turunan. Untuk mengetahui informasi selengkapnya, lihat Konektor Workflows Executions API dan Argumen runtime.Hasil eksekusi akan ditampilkan. Untuk informasi selengkapnya, lihat Menyelesaikan eksekusi alur kerja.
Deploy alur kerja:
Konsol
Di konsol Google Cloud, buka halaman Workflows:
Klik
Buat.Masukkan nama,
workflow-parent
, untuk alur kerja baru.Pada daftar Region, pilih us-central1.
Pilih Akun layanan yang telah dibuat sebelumnya.
Klik Next.
Di editor alur kerja, tempel definisi untuk alur kerja induk.
Klik Deploy.
gcloud
Buat file kode sumber untuk alur kerja Anda:
touch workflow-parent.yaml
Buka file kode sumber di editor teks dan tempelkan definisi untuk alur kerja induk.
Deploy alur kerja:
gcloud workflows deploy workflow-parent \ --source=workflow-parent.yaml \ --location=us-central1 \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Ganti
SERVICE_ACCOUNT_NAME
dengan nama akun layanan yang Anda buat sebelumnya.
Menjalankan alur kerja induk
Jalankan alur kerja induk sehingga pemanggilan alur kerja turunan berjalan secara paralel. Eksekusi memerlukan waktu sekitar 10 detik hingga selesai.
Konsol
Di konsol Google Cloud, buka halaman Workflows:
Di halaman Workflows, klik alur kerja workflow-parent untuk membuka halaman detailnya.
Di halaman Workflow details, klik play_arrow Execute.
Klik Execute lagi.
Lihat hasil alur kerja di panel Output.
Hasilnya akan serupa dengan yang berikut, yang menunjukkan error dengan iterasi 2 dan 4, serta berhasil dengan iterasi 1 dan 3.
"failure": { "2": { "message": "Execution failed or cancelled.", "operation": { "argument": "{\"iteration\":2}", "duration": "10.157992541s", "endTime": "2023-07-11T13:13:13.028424329Z", "error": { "context": "RuntimeError: \"Error with iteration 2\"\nin step \"raise_error\", routine \"main\", line: 18", "payload": "\"Error with iteration 2\"", ... "4": { "message": "Execution failed or cancelled.", "operation": { "argument": "{\"iteration\":4}", "duration": "10.157929734s", "endTime": "2023-07-11T13:13:13.061289142Z", "error": { "context": "RuntimeError: \"Error with iteration 4\"\nin step \"raise_error\", routine \"main\", line: 18", "payload": "\"Error with iteration 4\"", ... "success": { "1": "Hello world1", "3": "Hello world3"
gcloud
Menjalankan alur kerja:
gcloud workflows run workflow-parent \ --location=us-central1
Hasilnya akan serupa dengan yang berikut, yang menunjukkan error dengan iterasi 2 dan 4, serta berhasil dengan iterasi 1 dan 3.
Waiting for execution [06c753e4-6947-4c62-ac0b-2a9d53fb1b8f] to complete...done. argument: 'null' duration: 14.065415004s endTime: '2023-07-11T12:50:43.929023883Z' name: projects/386837416586/locations/us-central1/workflows/workflow-parent/executions/06c753e4-6947-4c62-ac0b-2a9d53fb1b8f result: '{"failure":{"2":{"message":"Execution failed or cancelled.","operation":{"argument":"{\"iteration\":2}","duration":"10.143718070s","endTime":"2023-07-11T12:50:40.673209821Z","error":{"context":"RuntimeError: ... "Error with iteration 2\"\nin step \"raise_error\", routine \"main\", line: 18","payload":"\"Error ... "Error with iteration 4\"\nin step \"raise_error\", routine \"main\", line: 18","payload":"\"Error ... "success":{"1":"Hello world1","3":"Hello world3"}}' startTime: '2023-07-11T12:50:29.863608879Z' state: SUCCEEDED
Anda telah berhasil membuat dan men-deploy alur kerja yang memanggil alur kerja turunan, menjalankan empat iterasi alur kerja turunan di cabang paralel, dan menampilkan indikator keberhasilan atau kegagalan untuk setiap eksekusi alur kerja turunan.
Pembersihan
Jika Anda membuat project baru untuk tutorial ini, hapus project tersebut. Jika Anda menggunakan project yang ada dan ingin mempertahankannya tanpa perubahan yang ditambahkan dalam tutorial ini, hapus resource yang dibuat untuk tutorial.
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
Untuk menghapus project:
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Menghapus resource tutorial
Hapus alur kerja yang dibuat dalam tutorial ini:
gcloud workflows delete workflow-child gcloud workflows delete workflow-parent
Langkah selanjutnya
- Untuk mempelajari sintaksis Workflows lebih lanjut, lihat Referensi sintaksis alur kerja.
- Untuk mempelajari konektor Workflows lebih lanjut, lihat Memahami konektor.