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. Tidak diperlukan pengalaman sebelumnya dengan Pub/Sub, Firestore, Cloud Run. Namun, untuk memahami semua kode, pengalaman dengan Java 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, 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, 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-java.git
Atau, Anda dapat mendownload contoh dalam file ZIP dan mengekstraknya.
Ubah ke direktori yang berisi kode contoh pemrosesan di latar belakang:
cd getting-started-java/background
Memahami aplikasi
Ada dua komponen utama untuk aplikasi web:
- Server HTTP Java untuk menangani permintaan web. Server memiliki dua
endpoint berikut:
/translateGET(dengan menggunakan browser web): Menampilkan 10 permintaan terjemahan yang diproses terbaru yang dikirimkan oleh pengguna.POST(dengan langganan Pub/Sub): Memproses permintaan terjemahan menggunakan Cloud Translation API dan menyimpan hasilnya di Firestore.
/create: Formulir untuk mengirimkan permintaan terjemahan baru.
- Klien layanan yang memproses permintaan terjemahan yang dikirimkan oleh formulir web. Ada tiga klien yang bekerja sama:
- Pub/Sub: Saat formulir web dikirim oleh pengguna, klien Pub/Sub akan memublikasikan pesan dengan detail permintaan. Langganan yang dibuat dalam tutorial ini akan meneruskan pesan tersebut ke endpoint Cloud Run yang Anda buat untuk melakukan terjemahan.
- Terjemahan: Klien ini menangani permintaan Pub/Sub dengan melakukan terjemahan.
- Firestore: Setelah terjemahan selesai, klien ini menyimpan data permintaan beserta terjemahan di Firestore. Klien ini juga membaca permintaan terbaru
di endpoint
/translateutama.
Memahami kode Cloud Run
Aplikasi Cloud Run memiliki dependensi pada Firestore, Translation, dan Pub/Sub.
Klien Firestore, Translation, dan Pub/Sub global diinisialisasi sehingga dapat digunakan kembali di antara pemanggilan. Dengan begitu, Anda tidak perlu menginisialisasi klien baru untuk setiap pemanggilan, yang akan memperlambat eksekusi.
Handler indeks (
/) mendapatkan semua terjemahan yang ada dari Firestore dan mengisi template HTML dengan daftar:Terjemahan baru diminta dengan mengirimkan formulir HTML. Penanganan terjemahan permintaan, yang terdaftar di
/create, mengurai pengiriman formulir, memvalidasi permintaan, dan memublikasikan pesan ke Pub/Sub:Langganan Pub/Sub yang Anda buat akan meneruskan permintaan tersebut ke endpoint Cloud Run, yang mem-parsing pesan Pub/Sub untuk mendapatkan teks yang akan diterjemahkan dan bahasa target yang diinginkan. Kemudian, Translation API menerjemahkan string ke bahasa yang Anda pilih.
Aplikasi menyimpan data terjemahan dalam dokumen baru yang dibuatnya di Firestore.
Men-deploy aplikasi Cloud Run
Pilih Nama Topik Pub/Sub dan buat Token Verifikasi Pub/Sub menggunakan
uuidgenatau generator UUID online seperti uuidgenerator.net. Token ini akan memastikan bahwa endpoint Cloud Run hanya menerima permintaan dari langganan Pub/Sub yang Anda buat.export PUBSUB_TOPIC=background-translate export PUBSUB_VERIFICATION_TOKEN=your-verification-token
Buat topik Pub/Sub:
gcloud pubsub topics create $PUBSUB_TOPIC- Ganti
MY_PROJECTdi filepom.xmldengan project ID Google Cloud Anda.
- Ganti
Bangun dan deploy image kode Anda ke GCR (repositori image) dengan plugin Maven Jib.
mvn clean package jib:buildMen-deploy aplikasi ke Cloud Run:
gcloud run deploy background --image gcr.io/MY_PROJECT/background \ --platform managed --region us-central1 --memory 512M \ --update-env-vars PUBSUB_TOPIC=$PUBSUB_TOPIC,PUBSUB_VERIFICATION_TOKEN=$PUBSUB_VERIFICATION_TOKEN
Dengan
MY_PROJECTadalah nama project Google Cloud yang Anda buat. Perintah ini menampilkan endpoint tempat langganan Pub/Sub Anda mengirimkan permintaan terjemahan. Catat endpoint ini, karena Anda akan memerlukannya untuk membuat langganan Pub/Sub, dan Anda akan membuka endpoint di browser untuk meminta terjemahan baru.
Menguji aplikasi
Setelah men-deploy layanan Cloud Run, coba minta terjemahan.
Untuk melihat aplikasi di browser, buka endpoint Cloud Run yang Anda buat sebelumnya.
Ada halaman dengan daftar terjemahan kosong dan formulir untuk meminta terjemahan baru.
Klik + Minta Terjemahan, isi formulir permintaan, lalu klik Kirim.
Pengiriman otomatis membawa Anda kembali ke jalur
/translate, tetapi terjemahan baru mungkin belum muncul. 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 perintah
gcloud run deployberhasil diselesaikan dan tidak menghasilkan error. 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,
background.Klik Logs.
Pembersihan
Menghapus 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 run services delete --region=$region background
Langkah berikutnya
- Pelajari lebih lanjut Cloud Run.
- Coba Cloud Run, yang memungkinkan Anda menjalankan container stateless di lingkungan yang terkelola sepenuhnya atau di cluster Google Kubernetes Engine Anda sendiri.