
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Create a Pub/Sub topic
/ 10
Deploy the Lab Report Service: Build
/ 15
Create a Revision for Cloud Run
/ 15
Deploy the Email Service: Build
/ 15
Create a new Revision
/ 15
Create a service account
/ 10
Create a Pub/Sub subscription
/ 10
Deploy the SMS Service
/ 10
Untuk lab dalam kursus Serverless Cloud Run Development, Anda akan membaca skenario bisnis fiktif dan membantu para karakter menerapkan rencana migrasi serverless mereka.
Dua belas tahun yang lalu, Lily memulai jaringan klinik hewan Pet Theory. Selama bertahun-tahun, jumlah klinik telah bertambah, demikian pula kebutuhan akan otomatisasi. Cara Pet Theory menangani hasil tes medis saat mereka kembali dari laboratorium terlalu lambat dan rawan kesalahan, jadi Lily ingin memperbaikinya.
Saat ini, Patrick, admin IT Pet Theory, menangani hasil tes secara manual. Tiap kali hasil tes keluar, ia menulis dan mengirim email ke klien yang hewan peliharaannya diuji, lalu ia menulis pesan teks di ponselnya dan mengirimkan hasilnya sebagai teks ke klien.
Patrick bekerja dengan Ruby, seorang konsultan software, untuk merancang sistem yang lebih skalabel. Mereka ingin membangun solusi yang tidak memerlukan banyak pemeliharaan berkelanjutan. Patrick dan Ruby telah memutuskan untuk menggunakan teknologi serverless.
Di lab ini, Anda akan mempelajari cara:
Di lab ini, Anda dianggap telah memahami Konsol Cloud dan lingkungan shell. Lab ini adalah bagian dari sebuah seri. Pengalaman dari lab sebelumnya akan bermanfaat, tetapi tidak wajib:
Baca petunjuk ini. Lab memiliki timer dan Anda tidak dapat menjedanya. Timer, yang dimulai saat Anda mengklik Start Lab, akan menampilkan durasi ketersediaan resource Google Cloud untuk Anda.
Lab praktik ini dapat Anda gunakan untuk melakukan sendiri aktivitas lab di lingkungan cloud sungguhan, bukan di lingkungan demo atau simulasi. Untuk mengakses lab ini, Anda akan diberi kredensial baru yang bersifat sementara dan dapat digunakan untuk login serta mengakses Google Cloud selama durasi lab.
Untuk menyelesaikan lab ini, Anda memerlukan:
Klik tombol Start Lab. Jika Anda perlu membayar lab, jendela pop-up akan terbuka untuk memilih metode pembayaran. Di sebelah kiri adalah panel Lab Details dengan info berikut:
Klik Open Google Cloud console (atau klik kanan dan pilih Open Link in Incognito Window jika Anda menjalankan browser Chrome).
Lab akan menjalankan resource, lalu membuka tab lain yang menampilkan halaman Sign in.
Tips: Atur tab di jendela terpisah secara berdampingan.
Jika perlu, salin Username di bawah dan tempel ke dialog Sign in.
Anda juga dapat menemukan Username di panel Lab Details.
Klik Next.
Salin Password di bawah dan tempel ke dialog Welcome.
Anda juga dapat menemukan Password di panel Lab Details.
Klik Next.
Klik halaman berikutnya:
Setelah beberapa saat, Konsol Google Cloud akan terbuka di tab ini.
Cloud Shell adalah mesin virtual yang dilengkapi dengan berbagai alat pengembangan. Mesin virtual ini menawarkan direktori beranda persisten berkapasitas 5 GB dan berjalan di Google Cloud. Cloud Shell menyediakan akses command-line untuk resource Google Cloud Anda.
Setelah terhubung, Anda sudah diautentikasi, dan project ditetapkan ke PROJECT_ID Anda. Output berisi baris yang mendeklarasikan PROJECT_ID untuk sesi ini:
gcloud
adalah alat command line untuk Google Cloud. Alat ini sudah terinstal di Cloud Shell dan mendukung pelengkapan command line.
Klik Authorize.
Output Anda sekarang akan terlihat seperti ini:
Output:
Output:
Contoh output:
gcloud
yang lengkap di Google Cloud, baca panduan ringkasan gcloud CLI.
Resource Compute Engine tertentu berada di region dan zona. Region adalah lokasi geografis spesifik tempat Anda dapat menjalankan resource. Setiap region memiliki satu atau beberapa zona.
Jalankan perintah gcloud berikut di Konsol Cloud guna menetapkan region dan zona default untuk lab Anda:
Pet Theory ingin mengotomatiskan proses berbagi hasil tes kepada klien. Mereka mengalami kesulitan untuk memenuhi janji temu yang jumlahnya makin meningkat, jadi Lily memutuskan untuk meminta bantuan Ruby...
Lily, Pendiri Pet Theory |
Halo Ruby, Terima kasih telah memilah portal asuransi. Saya ingin tahu, apakah ada yang bisa dilakukan terkait hasil tes medis? Kami membutuhkan cara yang lebih efisien dalam mengirimkan hasil kepada para klien. Lily |
Ruby, Konsultan Software |
Halo Lily, Tentu. Coba saya lihat dulu apa yang bisa saya lakukan. Saya punya beberapa ide yang mungkin bisa memperbaiki situasinya. Ruby |
Pet Theory menggunakan perusahaan eksternal untuk tes medis. Setelah perusahaan lab menyelesaikan tes medis, mereka mengirimkan hasilnya kembali ke Pet Theory.
Perusahaan lab menggunakan HTTP(s) POST ke endpoint web Pet Theory untuk hasil lab medis. Ilustrasi di bawah menguraikan arsitektur umum yang digunakan.
Setelah melihat proses umum yang diikuti, Ruby yakin bahwa sebuah sistem dapat dirancang agar Pet Theory bisa:
Desain Ruby mengisolasi tiap aktivitas di atas dan memerlukan:
Melalui penggunaan fungsi sekali pakai, Ruby berupaya mengembangkan kode yang lebih mudah untuk ditulis dan mengandung lebih sedikit bug.
Ruby, Konsultan Software |
Halo Patrick, Lily meminta saya membuat prototipe untuk membantu pemrosesan rekam medis. Untuk memulai, tolong siapkan Topik Pub/Sub bernama Ruby |
Patrick, Admin IT |
Halo Ruby, Sepertinya ini project yang bagus. Saya bisa menyelesaikannya pagi ini. Kedua aktivitas tersebut dapat disiapkan dengan sangat cepat di Google Cloud. Patrick |
Bantu Patrick membuat topik Pub/Sub bernama new-lab-report
.
Saat layanan menayangkan pesan Pub/Sub, pesan tersebut harus diberi tag dengan sebuah topik. Laporan Lab digunakan melalui layanan yang akan dibuat dan memublikasikan pesan untuk tiap laporan yang ditemukan.
Pertama, Anda perlu membuat topik yang dapat digunakan untuk tugas ini.
Tiap layanan yang berlangganan topik "new-lab-report" akan dapat memakai pesan yang dipublikasikan oleh Layanan Laporan Lab. Pada diagram di atas, Anda dapat melihat dua pemakai tersebut, yakni Layanan Email dan Layanan SMS.
Klik Check my progress untuk memverifikasi tujuan.
Jangan lupa untuk memberi tahu Ruby bahwa topik Pub/Sub sudah siap digunakan.
Patrick, Admin IT |
Halo Ruby, Semua sudah selesai. Jika ada waktu, saya ingin melihat bagaimana prototipe ini dibuat. Bisakah kita mengerjakannya bersama-sama? Patrick |
Ruby, Konsultan Software |
Halo Patrick, Bagus sekali, terima kasih sudah menyelesaikannya begitu cepat. Saya akan mengatur waktunya supaya kita bisa mulai membangun. Ruby |
Bantu Ruby menyiapkan Layanan Laporan Lab yang baru.
Layanan ini akan melayani tujuan pembuatan prototipe, sehingga hanya akan melakukan dua hal:
lab-service
:Perintah ini akan mengupdate file package.json
untuk menunjukkan dependensi yang diperlukan untuk layanan ini.
Anda sekarang akan mengedit file package.json
agar Cloud Run mengetahui cara memulai kode Anda.
Buka file package.json
.
Di bagian "scripts" pada file package.json
, tambahkan baris kode "start": "node index.js",
di baris 7 (seperti gambar di bawah), lalu simpan file-nya:
"start": "node index.js",
Jika tidak, Anda akan mengalami error saat deployment.
index.js
, lalu tambahkan kode ini pada file tersebut:const labReport = req.body;
await publishPubSubMessage(labReport);
Khususnya, baris-baris ini akan:
Dockerfile
dan tambahkan kode berikut ke file tersebut:File ini menetapkan cara memaketkan layanan Cloud Run ke dalam sebuah container.
deploy.sh
dan tempelkan perintah berikut ke dalamnya:Karena masalah waktu, Anda mungkin akan mendapatkan pesan error saat pertama kali menjalankan perintah ini. Jika demikian, jalankan kembali deploy.sh
.
Ketika deployment berhasil diselesaikan, Anda akan melihat pesan seperti ini:
Bagus, Layanan Laporan Lab telah di-deploy dan akan memproses hasil lab medis melalui HTTP. Anda sekarang dapat menguji apakah layanan yang baru ini sudah aktif dan berjalan atau belum.
Klik Check my progress untuk memverifikasi tujuan.
Klik Check my progress untuk memverifikasi tujuan.
Untuk memvalidasi Layanan Laporan Lab, simulasikan tiga POST HTTPS yang dibuat oleh perusahaan lab, masing-masing berisi satu laporan lab. Untuk keperluan pengujian, laporan lab yang dibuat hanya akan berisi sebuah ID.
post-reports.sh
, lalu tambahkan kode berikut ke dalamnya:Skrip di atas akan menggunakan perintah curl
untuk memposting tiga ID berbeda ke URL Layanan Lab. Tiap perintah akan dijalankan satu per satu di latar belakang.
post-reports.sh
dapat dieksekusi:Skrip ini memposting tiga laporan lab ke Layanan Laporan Lab Anda. Periksa log untuk melihat hasilnya.
Di Konsol Cloud, klik Navigation menu () > Cloud Run.
Anda sekarang akan melihat lab-report-service yang baru Anda deploy di daftar Services. Klik lab-report-service tersebut.
Halaman berikutnya akan menunjukkan rincian tentang lab-report-service Anda. Klik tab Logs.
Di halaman Logs terdapat hasil dari tiga laporan pengujian yang baru saja Anda posting dengan skrip tersebut. Semoga kode HTTP yang ditampilkan adalah 204, artinya Oke - bukan konten, seperti di bawah ini. Jika Anda tidak melihat entri apa pun, coba scroll ke atas dan ke bawah menggunakan scrollbar di sebelah kanan. Tindakan ini akan memuat ulang log.
Tugas selanjutnya adalah menulis layanan SMS dan Email. Layanan ini akan dipicu ketika Layanan Laporan Lab memublikasikan pesan Pub/Sub tentang topik "new-lab-report".
Bantu Ruby menyiapkan Layanan Email yang baru.
Perintah di atas akan mengupdate file package.json
, yang menjelaskan aplikasi dan dependensinya. Cloud Run perlu mengetahui cara menjalankan kode, jadi tambahkan petunjuk start
agar ia tahu apa yang harus dilakukan.
Buka file package.json
.
Di bagian "scripts", tambahkan baris "start": "node index.js",
seperti yang ditunjukkan di bawah ini, lalu simpan file-nya:
"start": "node index.js",
Jika tidak, Anda akan mengalami error saat deployment.
index.js
dan tambahkan yang berikut ke dalamnya:Kode ini akan dijalankan ketika Pub/Sub memposting pesan ke layanan. Inilah yang dilakukannya:
sendEmail()
.Setelah komunikasi antarlayanan berfungsi, Ruby akan menambahkan kode ke fungsi sendEmail()
untuk benar-benar mengirim email.
Dockerfile
dan tambahkan kode berikut ke file tersebut:File ini menetapkan cara memaketkan layanan Cloud Run ke dalam sebuah container.
deploy.sh
, lalu tambahkan yang berikut ke dalamnya:deploy.sh
dapat dieksekusi:Ketika deployment selesai, Anda akan melihat pesan seperti ini:
Layanan telah berhasil di-deploy. Anda sekarang perlu memastikan Layanan Email dipicu ketika pesan Pub/Sub tersedia.
Klik Check my progress untuk memverifikasi tujuan.
Klik Check my progress untuk memverifikasi tujuan.
Tiap kali pesan Pub/Sub baru dipublikasikan menggunakan topik "new-lab-report", pesan tersebut akan memicu Layanan Email. Untuk menyelesaikan tugas ini, atur konfigurasi sebuah akun layanan agar otomatis menangani permintaan terkait untuk layanan ini.
Klik Check my progress untuk memverifikasi tujuan.
Selanjutnya, perintahkan Pub/Sub untuk memanggil Layanan SMS ketika ada pesan "new-lab-report" yang dipublikasikan.
Selanjutnya, aktifkan project untuk membuat token autentikasi Pub/Sub.
Bagus! Layanan ini sekarang siap untuk merespons pesan Cloud Pub/Sub. Sebagai langkah selanjutnya, validasi kode untuk mengonfirmasi bahwa kode tersebut memenuhi persyaratan.
Klik Check my progress untuk memverifikasi tujuan.
Kemudian buka log (Navigation menu > Cloud Run). Anda akan melihat dua layanan Cloud Run, yakni email-service dan lab-report-service, di akun Anda.
Klik email-service, lalu klik Logs.
Anda akan melihat hasil layanan ini dipicu oleh Pub/Sub. Jika Anda tidak melihat pesan yang diharapkan, Anda mungkin perlu men-scroll ke atas dan ke bawah dengan scrollbar agar log dimuat ulang.
Bagus sekali. Layanan Email sekarang dapat menulis informasi ke log tiap kali pesan diproses dari antrean topik Cloud Pub/Sub. Tugas terakhir adalah menulis Layanan SMS.
Bantu Ruby menyiapkan Layanan SMS baru.
Buka file package.json
.
Di bagian "scripts", tambahkan baris "start": "node index.js",
seperti yang ditunjukkan di bawah ini, lalu simpan file-nya:
"start": "node index.js",
Jika tidak, Anda akan mengalami error saat deployment.
index.js
dan tambahkan yang berikut ke dalamnya:Dockerfile
dan tambahkan kode berikut ke file tersebut:File ini menetapkan cara memaketkan layanan Cloud Run ke dalam sebuah container. Sekarang kode telah dibuat, langkah selanjutnya adalah men-deploy layanan.
deploy.sh
, lalu tambahkan kode ini ke dalamnya:deploy.sh
dapat dieksekusi:Saat deployment selesai, pesan seperti ini akan ditampilkan:
Layanan SMS berhasil di-deploy, tetapi tidak tertaut ke layanan Cloud Pub/Sub. Perbaiki hal ini di bagian selanjutnya.
Klik Check my progress untuk memverifikasi tujuan.
Seperti halnya Layanan Email, link antara Cloud Pub/Sub dan layanan SMS perlu dikonfigurasi agar pesan dapat diproses.
Selanjutnya, perintahkan Pub/Sub untuk memanggil Layanan SMS ketika ada pesan "new-lab-report" yang dipublikasikan.
Konfirmasi bahwa SMS_SERVICE_URL telah diambil:
Kemudian buat langganan Pub/Sub:
Kemudian buka log (Navigation menu > Cloud Run). Anda akan melihat tiga layanan Cloud Run, yakni email-service, lab-report-service, dan sms-service, di akun Anda.
Klik sms-service, lalu klik Logs. Anda akan melihat hasil layanan ini dipicu oleh Pub/Sub.
Sistem prototipe telah dibuat dan berhasil diuji. Namun, Patrick khawatir bahwa ketahanan, sebagai bagian dari proses validasi awal, belum teruji.
Apa yang terjadi jika salah satu layanan menjadi nonaktif? Patrick pernah mengalami hal ini sebelumnya, karena ini adalah situasi yang umum.
Bantu Ruby menyelidiki cara memastikan sistem dapat menangani skenario ini. Ia ingin menguji apa yang terjadi jika suatu layanan gagal dengan menerapkan versi Layanan Email yang buruk.
email-service
:Tambahkan teks yang tidak valid ke aplikasi Layanan Email sehingga menyebabkan error.
index.js
dan tambahkan baris throw
ke fungsi sendEmail()
, sebagaimana ditunjukkan di bawah ini. Tindakan ini akan menampilkan pengecualian, seolah-olah server email nonaktif:Penambahan kode ini akan membuat layanan tidak bekerja ketika dipanggil.
Buka log Layanan Email untuk melihat log Layanan Email yang buruk: Navigation menu > Cloud Run.
Saat terlihat tiga layanan Cloud Run di akun Anda, klik email-service.
Layanan Email sedang dipanggil, tetapi akan tetap error. Jika Anda scroll ke belakang sedikit di log, Anda akan menemukan akar masalahnya: “Email server is down”. Anda juga dapat melihat bahwa layanan menampilkan kode status 500, dan Pub/Sub terus mencoba memanggil layanan tersebut.
Jika Anda melihat log dari layanan SMS, Anda akan melihat bahwa layanan tersebut beroperasi dengan baik.
Sekarang perbaiki error pada Layanan Email untuk memulihkan aplikasi.
index.js
dan hapus baris throw yang sebelumnya anda masukkan, kemudian simpan file tersebut.Fungsi index.js
sendEmail
sekarang akan terlihat seperti ini:
Anda akan melihat bagaimana email untuk laporan 12, 34, dan 56 akhirnya terkirim, Layanan Email menampilkan kode status 204, dan Pub/Sub berhenti memanggil layanan. Tidak ada data yang hilang. Pub/Sub terus mencoba ulang hingga akhirnya berhasil. Ini adalah landasan dari sistem yang kuat.
Dengan bantuan Anda, Ruby telah berhasil membangun sistem prototipe yang tangguh. Layanan ini mampu secara otomatis mengirimkan email dan pesan SMS kepada tiap klien. Jika layanan tertentu tidak aktif untuk sementara, sistem akan menerapkan mekanisme percobaan ulang sehingga tidak ada data yang hilang. Ruby menerima banyak pujian yang sepadan...
Lily, Pendiri Pet Theory |
Halo Ruby, Kami sangat berterima kasih atas semua kerja keras dan kepemimpinan Anda. Dalam waktu yang sangat singkat, sistem esensial kami telah berubah total. Kami mengadakan pertemuan kecil pada hari Jumat untuk merayakannya dan kami mengundang Anda menjadi tamu kehormatan. Lily |
|
Ruby, Saya menerima banyak pujian atas pekerjaan Anda dari Pet Theory. Anda anggota yang luar biasa bagi tim. Karena Anda telah menyelesaikan tugas ini, saya ingin membahas peran yang lebih senior dalam project baru bersama Anda. Melody Direktur Pengelola Computer Consulting Inc. |
...membantu Anda mengoptimalkan teknologi Google Cloud. Kelas kami mencakup keterampilan teknis dan praktik terbaik untuk membantu Anda memahami dengan cepat dan melanjutkan proses pembelajaran. Kami menawarkan pelatihan tingkat dasar hingga lanjutan dengan opsi on demand, live, dan virtual untuk menyesuaikan dengan jadwal Anda yang sibuk. Sertifikasi membantu Anda memvalidasi dan membuktikan keterampilan serta keahlian Anda dalam teknologi Google Cloud.
Manual Terakhir Diperbarui pada 1 Feb 2024
Lab Terakhir Diuji pada 20 September 2023
Hak cipta 2025 Google LLC Semua hak dilindungi undang-undang. Google dan logo Google adalah merek dagang dari Google LLC. Semua nama perusahaan dan produk lain mungkin adalah merek dagang masing-masing perusahaan yang bersangkutan.