GSP921

Ringkasan
Di lab ini, Anda akan menggunakan SQL Insights untuk menganalisis performa database Cloud SQL. Anda akan mengubah Aplikasi Google Kubernetes Engine (GKE) yang ada dengan library SQLcommenter untuk menganotasikan kueri aplikasi dengan komentar yang akan membantu Anda mengidentifikasi sumber kueri dalam aplikasi.
Anda harus membuat atau mengonfigurasi layanan dan resource yang ditentukan untuk setiap tugas dan Anda harus mengikuti petunjuk mendetail yang diberikan agar berhasil menyelesaikan setiap tugas.
Tujuan
Di lab ini, Anda akan mempelajari cara melakukan tugas berikut:
- Mengonfigurasi dan memanfaatkan SQL Insights.
- Mengonfigurasi aplikasi untuk menggunakan SQLcommenter.
- Mengambil tindakan untuk menyesuaikan dan mengoptimalkan database guna meningkatkan performa.
Penyiapan dan persyaratan
Sebelum mengklik tombol Start Lab
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 interaktif ini dapat Anda gunakan untuk melakukan 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:
- Akses ke browser internet standar (disarankan browser Chrome).
Catatan: Gunakan jendela Samaran (direkomendasikan) atau browser pribadi untuk menjalankan lab ini. Hal ini akan mencegah konflik antara akun pribadi Anda dan akun siswa yang dapat menyebabkan tagihan ekstra pada akun pribadi Anda.
- Waktu untuk menyelesaikan lab. Ingat, setelah dimulai, lab tidak dapat dijeda.
Catatan: Hanya gunakan akun siswa untuk lab ini. Jika Anda menggunakan akun Google Cloud yang berbeda, Anda mungkin akan dikenai tagihan ke akun tersebut.
Cara memulai lab dan login ke Google Cloud Console
-
Klik tombol Start Lab. Jika Anda perlu membayar lab, dialog akan terbuka untuk memilih metode pembayaran.
Di sebelah kiri ada panel Lab Details yang berisi hal-hal berikut:
- Tombol Open Google Cloud console
- Waktu tersisa
- Kredensial sementara yang harus Anda gunakan untuk lab ini
- Informasi lain, jika diperlukan, untuk menyelesaikan lab ini
-
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.
Catatan: Jika Anda melihat dialog Choose an account, klik Use Another Account.
-
Jika perlu, salin Username di bawah dan tempel ke dialog Sign in.
{{{user_0.username | "Username"}}}
Anda juga dapat menemukan Username di panel Lab Details.
-
Klik Next.
-
Salin Password di bawah dan tempel ke dialog Welcome.
{{{user_0.password | "Password"}}}
Anda juga dapat menemukan Password di panel Lab Details.
-
Klik Next.
Penting: Anda harus menggunakan kredensial yang diberikan lab. Jangan menggunakan kredensial akun Google Cloud Anda.
Catatan: Menggunakan akun Google Cloud sendiri untuk lab ini dapat dikenai biaya tambahan.
-
Klik halaman berikutnya:
- Setujui persyaratan dan ketentuan.
- Jangan tambahkan opsi pemulihan atau autentikasi 2 langkah (karena ini akun sementara).
- Jangan mendaftar uji coba gratis.
Setelah beberapa saat, Konsol Google Cloud akan terbuka di tab ini.
Catatan: Untuk mengakses produk dan layanan Google Cloud, klik Navigation menu atau ketik nama layanan atau produk di kolom Search.
Mengaktifkan Cloud Shell
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.
-
Klik Activate Cloud Shell
di bagian atas Konsol Google Cloud.
-
Klik jendela berikut:
- Lanjutkan melalui jendela informasi Cloud Shell.
- Beri otorisasi ke Cloud Shell untuk menggunakan kredensial Anda guna melakukan panggilan Google Cloud API.
Setelah terhubung, Anda sudah diautentikasi, dan project ditetapkan ke Project_ID, . Output berisi baris yang mendeklarasikan Project_ID untuk sesi ini:
Project Cloud Platform Anda dalam sesi ini disetel ke {{{project_0.project_id | "PROJECT_ID"}}}
gcloud
adalah alat command line untuk Google Cloud. Alat ini sudah terinstal di Cloud Shell dan mendukung pelengkapan command line.
- (Opsional) Anda dapat menampilkan daftar nama akun yang aktif dengan perintah ini:
gcloud auth list
- Klik Authorize.
Output:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
Untuk menetapkan akun aktif, jalankan:
$ gcloud config set account `ACCOUNT`
- (Opsional) Anda dapat menampilkan daftar ID project dengan perintah ini:
gcloud config list project
Output:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Catatan: Untuk mendapatkan dokumentasi gcloud
yang lengkap di Google Cloud, baca panduan ringkasan gcloud CLI.
Mengaktifkan API
Anda harus mengaktifkan API yang diperlukan untuk lab ini. Anda akan membangun dan mengirim container ke Artifact Registry pada tugas selanjutnya, jadi Anda harus mengaktifkan Artifact Registry API terlebih dahulu.
- Di Cloud Shell, jalankan:
gcloud services enable sqladmin.googleapis.com
gcloud services enable artifactregistry.googleapis.com
Mendapatkan kredensial untuk cluster Kubernetes
- Anda harus mengonfigurasi autentikasi ke cluster Kubernetes yang di-deploy untuk Anda saat lab dimulai. Proses ini akan membuat file
config
di folder .kube
(tersembunyi) di folder Home.
export ZONE={{{project_0.default_zone | Zone}}}
gcloud container clusters get-credentials postgres-cluster --zone=$ZONE
Menjalankan aplikasi gMemgen
-
Di browser, buka alamat IP ingress load balancer.
-
Anda dapat membuat link yang dapat diklik ke alamat IP eksternal load balancer di Cloud Shell menggunakan perintah berikut:
export LOAD_BALANCER_IP=$(kubectl get svc gmemegen-service \
-o=jsonpath='{.status.loadBalancer.ingress[0].ip}' -n default)
echo gMemegen Load Balancer Ingress IP: http://$LOAD_BALANCER_IP
- Klik link di Cloud Shell dan Anda akan melihat aplikasi gMemegen berjalan di browser.
Tugas 1. Memeriksa kueri SQL aplikasi GKE menggunakan SQL Insights
Dalam tugas ini, Anda akan memeriksa kueri yang dihasilkan oleh aplikasi gMemegen. Anda harus menghasilkan traffic dengan membuat meme menggunakan aplikasi dan melihatnya di halaman Recent
dan Random
pada aplikasi.
Mengaktifkan SQL Insights pada instance Cloud SQL untuk PostgreSQL
Untuk menyelesaikan tugas ini, Anda harus mengaktifkan SQL Insights pada database Cloud SQL.
-
Di Konsol Cloud, buka Databases > SQL, lalu pilih instance postgres-gmemegen
.
-
Di menu Primary Instance, pilih Query Insights.
-
Klik tombol Enable.
-
Di halaman Primary Instance > Query Insights, di bagian Top queries and tags, pilih tab Tags.
-
Klik Store application tags
Membuat dan melihat beberapa meme
Pada langkah ini, Anda akan membuat setidaknya empat meme baru dan melihatnya menggunakan aplikasi gMemegen. Tujuannya adalah menguji aplikasi tersebut, menghasilkan beberapa data sampel, dan memanfaatkan semua rute yang tersedia.
-
Di tab aplikasi gMemegen, buka halaman Home dan pilih gambar.
-
Di halaman meme baru, masukkan teks di kotak teks atas dan bawah. Anda dapat membuat meme apa pun yang terlintas di benak Anda.
-
Klik tombol Submit. Anda akan melihat meme baru tersebut dirender.
-
Tekan tombol Back di browser untuk kembali.
-
Klik item menu Recent untuk melihat meme terbaru yang Anda buat.
-
Klik item menu Sorted untuk melihat meme yang diurutkan menurut abjad berdasarkan teks di kolom Top.
-
Klik item menu Random untuk melihat meme acak. Tutup tab Random
di browser Anda.
-
Klik item menu Home untuk kembali ke halaman beranda tempat Anda dapat membuat meme baru.
Lakukan poin 1 sampai 8 di atas hingga Anda membuat setidaknya 4 meme baru.

Memeriksa aktivitas database aplikasi gMemegen menggunakan SQL Insights
-
Di menu Primary Instance, buka Query Insights.
-
Buka menu drop-down di kolom Databases, lalu pilih gmemegen_db
. Jika gmemegen_db
tidak ada dalam daftar, muat ulang halaman. Mungkin perlu beberapa saat agar gmemegen_db
tersedia di daftar. Perbanyak traffic database dengan melakukan lebih banyak tindakan di aplikasi gMemegen
untuk membantu mempercepatnya.

- Scroll ke bawah ke
Top queries and tags
, lalu perhatikan bahwa kueri yang dihasilkan oleh aplikasi gMemegen tercantum di tab Queries.

- Klik tab Tags dan perhatikan bahwa tidak ada tag yang tercantum saat ini.
SQL Insights tidak dapat membedakan asal kueri karena kueri tersebut tidak memiliki tag. Ada alat developer database bernama SQLcommenter yang dapat membantu dengan menambahkan komentar ke kueri aplikasi, yang akan mengisi tag di tabel virtual ini. Hal ini sangat berguna bagi developer dan penguji untuk melacak sumber kueri aplikasi, guna membantu proses debug dan pengoptimalan.
Catat waktu saat ini, sehingga Anda dapat membandingkan hasil di SQL Insights sebelum dan sesudah menyertakan library SQLcommenter dalam kode aplikasi.
Klik Check my progress untuk memverifikasi tujuan.
Memeriksa kueri SQL aplikasi GKE menggunakan SQL Insights.
Tugas 2. Mengaktifkan SQLcommenter di aplikasi GKE
Dalam tugas ini, Anda akan mengubah aplikasi gMemegen untuk menyertakan kode library SQLcommenter yang akan menganotasikan kueri aplikasi agar lebih berguna di SQL Insights.
Mengubah aplikasi gMemegen dan membuat ulang kode sumber
Pada langkah ini, Anda akan mengubah kode aplikasi Python main.py
pada aplikasi gMemegen untuk mengaktifkan SQLcommenter. Perubahan sudah ada di kode dan hanya perlu dihapus tanda komentarnya, sehingga hal ini dapat dilakukan dengan perintah sed sederhana. Anda juga akan membangun kembali aplikasi dan menyimpan image baru di Artifact Registry.
- Di Cloud Shell, download kode sumber aplikasi gMemegen:
gsutil -m cp -r gs://spls/gsp921/gmemegen .
Untuk mengaktifkan SQLcommenter, Anda akan menghapus komentar dari blok kode berikut di file Python gmemegen/app/main.py
untuk mengonfigurasi aplikasi agar menambahkan tag ke kueri menggunakan SQLcommenter.
##from sqlalchemy import event
##from google.cloud.sqlcommenter.sqlalchemy.executor import BeforeExecuteFactory
app = Flask(__name__)
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
##app.config['SQLALCHEMY_RECORD_QUERIES'] = True
app.config['SQLALCHEMY_ECHO'] = True
app.config['SQLALCHEMY_DATABASE_URI'] = get_db_uri()
db = SQLAlchemy(app)
##listener = BeforeExecuteFactory(with_db_driver=True)
##event.listen(db.engine, 'before_cursor_execute', listener, retval=True)
- Di Cloud Shell, untuk menghapus tanda komentar pada kode aplikasi gMemegen yang mengaktifkan SQLcommenter, jalankan:
sed -i 's/##//g' gmemegen/app/main.py
- Di Cloud Shell, untuk mengidentifikasi versi yang diupdate, ubah template header aplikasi:
sed -i 's/gMemegen/gMemegen (SQLcommenter)/g' gmemegen/app/templates/header.html
Membangun dan mengirim image baru ke Artifact Registry
Pada langkah ini, Anda akan membangun kode aplikasi yang diubah dan mengirim image ke Artifact Registry, yang diberi label sebagai versi 2.
- Konfigurasi autentikasi Docker untuk Artifact Registry:
export REGION={{{project_0.default_region | REGION}}}
gcloud auth configure-docker ${REGION}-docker.pkg.dev
Masukkan Y
jika Anda diminta untuk mengonfirmasi.
-
Buat repositori artefak:
export REPO=gmemegen
gcloud artifacts repositories create $REPO \
--repository-format=docker --location=$REGION
-
Bangun dan kirim image baru ke Artifact Registry:
cd gmemegen
export PROJECT_ID=$(gcloud config list --format 'value(core.project)')
gcloud builds submit --tag ${REGION}-docker.pkg.dev/${PROJECT_ID}/gmemegen/gmemegen-app:v2
Proses build dan push akan memerlukan waktu beberapa menit untuk diselesaikan. Setelah selesai, output akan menunjukkan bahwa build berhasil seperti di bawah ini.
Output:
ID: 801538cf-f0e5-43b4-b0e4-5071ad026bf3
CREATE_TIME: 2022-08-10T18:41:21+00:00
DURATION: 1M27S
SOURCE: gs://qwiklabs-gcp-04-2dea2c1461c0_cloudbuild/source/1660156876.254161-89dl7080030e49f28e42ab7dc207d91a.tgz
IMAGES: us-east1-docker.pkg.dev/qwiklabs-gcp-04-2dea2c1461c0/gmemegen/gmemegen-app:v2
STATUS: SUCCESS
Klik Check my progress untuk memverifikasi tujuan.
Mengaktifkan SQLcommenter di aplikasi GKE.
Tugas 3. Men-deploy ulang aplikasi gMemegen
Dalam tugas ini, Anda akan men-deploy ulang aplikasi gMemegen yang diubah. Selanjutnya, Anda akan dapat membandingkan kueri dari dua versi aplikasi menggunakan SQL Insights.
-
Di Cloud Shell, untuk memperbarui YAML deployment dengan Project ID, nama koneksi Cloud SQL, dan region Anda, jalankan:
export CLOUDSQL_INSTANCE=postgres-gmemegen
export CONNECTION_NAME=$(gcloud sql instances describe $CLOUDSQL_INSTANCE --format 'value(connectionName)')
sed -i "s/CONNECTION-NAME/${CONNECTION_NAME}/g" gmemegen_canary_deployment.yaml
export PROJECT_ID=$(gcloud config list --format 'value(core.project)')
sed -i "s/PROJECT-ID/${PROJECT_ID}/g" gmemegen_canary_deployment.yaml
export REGION={{{project_0.default_region | REGION}}}
sed -i "s/us-central1/${REGION}/g" gmemegen_canary_deployment.yaml
-
Di Cloud Shell, deploy ulang aplikasi dengan menjalankan perintah berikut:
kubectl apply -f gmemegen_canary_deployment.yaml
-
Di Cloud Shell, deploy ulang Load Balancer, dengan memilih versi 2.0
aplikasi:
sed -i "s/1.0/2.0/g" gmemegen-service.yaml
kubectl apply -f gmemegen-service.yaml
-
Di Cloud Shell, periksa apakah deployment berhasil atau tidak dengan menjalankan perintah berikut:
kubectl get pods
Output:
NAME READY STATUS RESTARTS AGE
gmemegen-7975bf9776-fl7g9 2/2 Running 0 7m46s
gmemegen-canary-7cc8687cfc-rqx4h 2/2 Running 0 33s
Sekarang Anda memiliki deployment baru aplikasi gMemegen yang berjalan.
Klik Check my progress untuk memverifikasi tujuan.
Men-deploy ulang aplikasi gMemegen.
Tugas 4. Meninjau kueri aplikasi di SQL Insights
Dalam tugas ini, Anda akan kembali ke SQL Insights untuk meninjau aktivitas database dari aplikasi yang telah diupdate, termasuk SQLcommenter. Pertama-tama, Anda harus membuat beberapa aktivitas database lagi dengan membuat beberapa meme menggunakan versi baru aplikasi.
Membuat beberapa meme baru
Pada langkah ini, Anda akan membuat meme baru menggunakan versi baru aplikasi yang di-deploy di Tugas 3. Perhatikan bahwa aplikasi menampilkan (SQLcommenter)
di samping namanya di panel menu, untuk menunjukkan bahwa itu adalah aplikasi baru.

- Beralihlah ke tab aplikasi gMemegen untuk menghasilkan traffic database dengan membuat beberapa meme baru dan mengklik link Recent dan Sorted beberapa kali.
Meninjau kueri aplikasi di SQL Insights
Pada langkah ini, Anda akan meninjau kueri dari aplikasi yang baru di-deploy, dengan memperhatikan tag yang disisipkan oleh SQLcommenter.
-
Di tab Konsol Cloud, pada halaman Primary Instance > Query Insights, di Top queries and tags, pilih tab Tags.
-
Klik nama kolom Load by total time
. Tindakan ini akan memperbarui daftar kueri yang diberi tag, sehingga menampilkan semua kueri terbaru yang telah diberi tag oleh SQLcommenter.
Perhatikan bahwa tag Controller
, Route
, DB Driver
, dan Framework
kini sudah diisi.
Jika Anda tidak dapat melihat kueri ini di tab Tags, muat ulang halaman web, klik tab Tags, lalu klik nama kolom Load by total time
lagi.
(lanjutan - untuk lebar)

Mengidentifikasi kueri yang berjalan lambat di SQL Insights
Di langkah ini, Anda akan menganalisis performa kueri aplikasi untuk mengidentifikasi kueri yang berjalan lambat.
- Di Konsol Cloud, pada halaman Query Insights, scroll ke bawah ke
Top queries and tags
.

-
Klik tab Tags.
-
Pilih tag dengan /sorted
di kolom Route
.
Ini seharusnya memiliki beban tertinggi, seperti yang ditunjukkan oleh batang hijau, tetapi dengan jumlah data yang relatif kecil di lab, hal ini mungkin tidak terjadi. Grafik Query latency di lab Anda mungkin hanya akan menampilkan beberapa entri titik, tetapi dengan data tambahan, Anda dapat melihat kueri yang memiliki nilai latensi tinggi (P95 dan P99).

-
Buka kembali tabel virtual Top queries and tags menggunakan tombol Back di browser Anda. Atau, Anda dapat menggunakan bread crumb di bagian atas halaman Query Insights, lalu memilih instance postgres-gmemegen
.
-
Pilih tag /recent
di kolom Route
, yang seharusnya memiliki beban dan latensi yang sedikit lebih rendah. Sekali lagi, di lab Anda, tindakan ini hanya akan menampilkan hasil titik yang mungkin tidak berbeda secara signifikan dari rute /sorted
.

Kueri ini menampilkan jumlah baris yang hampir sama. Mengapa performanya berbeda? Jawabannya terletak pada fakta bahwa kolom meme.id
adalah kunci utama tabel meme
, sehingga diindeks; sedangkan kolom meme.top_text
tidak diindeks, sehingga membutuhkan waktu lebih lama untuk dijalankan.
Catatan: Karena database gmemegen_db
sangat kecil, karena hanya memiliki baris sebanyak yang Anda buat melalui UI selama lab ini berlangsung, perbedaan performa kedua rute ini mungkin tidak langsung terlihat atau bahkan tidak signifikan. Di lingkungan produksi, perbedaan performa kueri yang mengurutkan kolom yang diindeks dan tidak diindeks akan terlihat jelas.
Tugas 5. Mengambil tindakan untuk menyesuaikan dan mengoptimalkan database guna meningkatkan performa
Dalam tugas ini, Anda akan mengubah database gmemegen_db
untuk memperbaiki kueri yang berjalan lambat yang diidentifikasi di tugas sebelumnya.
Menambahkan indeks ke database Cloud SQL untuk PostgreSQL
Pada langkah ini, Anda akan menambahkan indeks ke kolom database untuk meningkatkan performa.
-
Di Konsol Cloud, pada halaman Primary Instance > Overview, di bagian Connect to this instance, klik Open Cloud Shell. Perintah akan otomatis mengisi konsol Cloud Shell. Jalankan perintah tersebut.
-
Saat diminta, masukkan sandi supersecret!
.
-
Pada prompt postgres=>
di psql, jalankan perintah berikut:
\c gmemegen_db
-
Anda akan diminta untuk memasukkan sandi lagi. Masukkan supersecret!
.
-
Pada prompt gmemegen_db=>
di psql, jalankan perintah berikut:
CREATE INDEX idx_meme_top_text ON meme(top_text);
- Buka tab aplikasi gMemegen, lalu klik link Sorted beberapa kali untuk menghasilkan beberapa kueri baru.
Memeriksa performa kueri
Pada langkah ini, Anda akan memeriksa performa kueri yang berjalan lambat, setelah indeks ditambahkan ke kolom tempat kueri tersebut melakukan pengurutan.
-
Di Konsol Cloud, pada halaman Primary Instance > Query Insights, di bagian Top queries and tags, pada tab Tags, pilih tag /sorted
lagi.
-
Scroll ke bawah ke grafik Query latency dan perhatikan bahwa latensi kini berkurang.

Catatan: Karena jumlah data di database relatif kecil, mungkin tidak ada perbedaan yang signifikan di lab Anda.
Klik Check my progress untuk memverifikasi tujuan.
Mengambil tindakan untuk menyesuaikan dan mengoptimalkan database guna meningkatkan performa.
Anda telah menyelesaikan lab ini.
Selamat!
Selesaikan Quest Anda
Lab mandiri ini adalah bagian dari Quest Mengelola Database PostgreSQL di Cloud SQL. Quest adalah serangkaian lab terkait yang membentuk jalur pembelajaran. Dengan menyelesaikan Quest ini, Anda mendapatkan badge sebagai pengakuan atas pencapaian Anda. Anda dapat memperlihatkan badge atau beberapa badge kepada publik dan menautkannya di resume online atau akun media sosial Anda. Daftar ke Quest ini dan langsung dapatkan kredit penyelesaian. Lihat katalog Google Cloud Skills Boost untuk melihat semua Quest yang tersedia.
Manual Terakhir Diperbarui pada 4 Juli 2024
Lab Terakhir Diuji pada 4 Juli 2024
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.