Banyak aplikasi perlu melakukan pemrosesan di latar belakang di luar konteks permintaan web. Tutorial ini membuat aplikasi web yang memungkinkan pengguna memasukkan teks untuk diterjemahkan, lalu menampilkan daftar terjemahan sebelumnya. Terjemahan dilakukan dalam proses latar belakang untuk menghindari pemblokiran permintaan pengguna.
Diagram berikut menggambarkan proses permintaan terjemahan.
Berikut urutan peristiwa cara kerja aplikasi tutorial:
- Buka halaman web untuk melihat daftar terjemahan sebelumnya, yang disimpan di Firestore.
- Minta terjemahan teks dengan memasukkan formulir HTML.
- Permintaan terjemahan dipublikasikan ke Pub/Sub.
- Layanan Cloud Run yang berlangganan topik Pub/Sub tersebut akan dipicu.
- Layanan Cloud Run menggunakan Cloud Translation untuk menerjemahkan teks.
- Layanan Cloud Run menyimpan hasilnya di Firestore.
Tutorial ini ditujukan bagi siapa saja yang tertarik untuk mempelajari pemrosesan di latar belakang dengan Google Cloud. Anda tidak memerlukan pengalaman sebelumnya dengan Pub/Sub, Firestore, App Engine, atau fungsi Cloud Run. Namun, untuk memahami semua kode, pengalaman dengan .NET, JavaScript, dan HTML akan sangat membantu.
Tujuan
- Pahami dan deploy layanan Cloud Run.
- Coba aplikasi.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, baca bagian Pembersihan.
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Firestore, Cloud Run, Pub/Sub, and Cloud Translation APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Firestore, Cloud Run, Pub/Sub, and Cloud Translation APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Perbarui komponen
gcloud:gcloud components update
- Siapkan lingkungan pengembangan Anda.
Menyiapkan aplikasi
Di jendela terminal, clone repositori aplikasi contoh ke komputer lokal Anda:
git clone https://github.com/GoogleCloudPlatform/getting-started-dotnet.git
Atau, Anda dapat mendownload contoh dalam file ZIP dan mengekstraknya.
Ubah ke direktori yang berisi kode contoh tugas latar belakang:
cd getting-started-dotnet/BackgroundProcessing
Memahami layanan TranslateWorker
Layanan dimulai dengan mengimpor beberapa dependensi seperti Firestore dan Translation.
Klien Firestore dan Translation diinisialisasi sehingga dapat digunakan kembali di antara pemanggilan handler. Dengan begitu, Anda tidak perlu menginisialisasi klien baru untuk setiap pemanggilan, yang akan memperlambat eksekusi.
Translation API menerjemahkan string ke bahasa yang Anda pilih.
Konstruktor pengontrol menerima klien Firestore dan Pub/Sub.
Metode
Postmengurai pesan Pub/Sub untuk mendapatkan teks yang akan diterjemahkan. Menggunakan ID pesan sebagai nama unik untuk permintaan terjemahan guna memastikan tidak menyimpan terjemahan duplikat.
Men-deploy layanan TranslateWorker
Di direktori
BackgroundProcessing, jalankan skrip PowerShell untuk membangun dan men-deploy layanan ke Cloud Run:PublishTo-CloudRun.ps1
Memahami skrip PublishTo-CloudRun.ps1
Skrip PublishTo-CloudRun.ps1 memublikasikan layanan ke Cloud Run, dan
melindungi layanan TranslateWorker dari penyalahgunaan. Jika layanan mengizinkan semua koneksi masuk, siapa pun dapat memposting permintaan terjemahan ke pengontrol dan dengan demikian menimbulkan biaya. Oleh karena itu, Anda menyiapkan layanan agar hanya menerima
permintaan POST dari Pub/Sub.
Skrip tersebut akan melakukan hal berikut:
- Membangun aplikasi secara lokal menggunakan
dotnet publish. - Membangun container yang menjalankan aplikasi menggunakan Cloud Build.
- Men-deploy aplikasi ke Cloud Run.
- Mengizinkan project membuat token autentikasi Pub/Sub.
- Membuat akun layanan untuk merepresentasikan identitas langganan Pub/Sub.
- Memberi akun layanan izin untuk memanggil layanan
TranslateWorker. Membuat topik dan langganan Pub/Sub.
Memahami layanan TranslateUI
Layanan TranslateUI merender halaman web yang menampilkan terjemahan terbaru, dan menerima permintaan terjemahan baru.
Class
StartUpmengonfigurasi aplikasi ASP.NET dan membuat klien Pub/Sub dan Firestore.Handler indeks
Indexmendapatkan semua terjemahan yang ada dari Firestore dan mengisiViewModeldengan daftar:Terjemahan baru diminta dengan mengirimkan formulir HTML. Penanganan terjemahan permintaan memvalidasi permintaan, dan memublikasikan pesan ke Pub/Sub:
Men-deploy layanan TranslateUI
Di direktori
BackgroundProcessing, jalankan skrip PowerShell untuk membangun dan men-deploy layanan ke Cloud Run:./PublishTo-CloudRun.ps1
Memahami skrip PublishTo-CloudRun.ps1
Skrip PublishTo-CloudRun.ps1 memublikasikan aplikasi ke Cloud Run.
Skrip tersebut akan melakukan hal berikut:
- Membangun aplikasi secara lokal menggunakan
dotnet publish. - Membangun container yang menjalankan aplikasi menggunakan Cloud Build.
Men-deploy aplikasi ke Cloud Run.
Menguji aplikasi
Setelah berhasil menjalankan skrip PublishTo-CloudRun.ps1, coba
minta terjemahan.
Perintah terakhir dalam skrip
PublishTo-CloudRun.ps1memberi tahu Anda URL untuk layanan UI Anda. Di jendela terminal, temukan URL untuk layananTranslateUI:gcloud beta run services describe translate-ui --region $region --format="get(status.address.hostname)"
Di browser Anda, buka URL yang Anda dapatkan dari langkah sebelumnya.
Ada halaman dengan daftar terjemahan kosong dan formulir untuk meminta terjemahan baru.
Di kolom Text to translate, masukkan beberapa teks yang akan diterjemahkan, misalnya,
Hello, World.Klik Kirim.
Untuk memuat ulang halaman, klik Muat ulang refresh. Ada baris baru dalam daftar terjemahan. Jika Anda tidak melihat terjemahan, tunggu beberapa detik lagi, lalu coba lagi. Jika Anda masih tidak melihat terjemahan, lihat bagian berikutnya tentang men-debug aplikasi.
Men-debug aplikasi
Jika Anda tidak dapat terhubung ke layanan Cloud Run atau tidak melihat terjemahan baru, periksa hal berikut:
Periksa apakah skrip
PublishTo-CloudRun.ps1berhasil diselesaikan dan tidak menghasilkan error apa pun. Jika ada error (misalnya,message=Build failed), perbaiki, lalu coba jalankan lagi.Periksa error dalam log:
Di konsol Google Cloud , buka halaman Cloud Run.
Klik nama layanan,
translate-ui.Klik Logs.
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Menghapus Google Cloud project
- Di Konsol Google Cloud , buka halaman Manage resources.
- 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 layanan Cloud Run.
Hapus layanan Cloud Run yang Anda buat dalam tutorial ini:
gcloud beta run services delete --region=$region translate-ui
gcloud beta run services delete --region=$region translate-worker