Dokumen ini menjelaskan praktik terbaik yang direkomendasikan untuk menggunakan Compute Engine API dan ditujukan bagi pengguna yang sudah terbiasa menggunakan Compute Engine. Jika Anda adalah pemula, pelajari prasyarat dan cara menggunakan Compute Engine API.
Mengikuti praktik terbaik ini dapat membantu Anda menghemat waktu, mencegah error, dan mengurangi dampak kuota kapasitas.
Menggunakan library klien
Library klien adalah cara yang direkomendasikan untuk mengakses Compute Engine API secara terprogram. Library klien menyediakan kode yang memungkinkan Anda mengakses API melalui bahasa pemrograman umum, sehingga dapat menghemat waktu dan meningkatkan performa kode.
Pelajari lebih lanjut Library klien Compute Engine dan Praktik terbaik Library klien.
Membuat permintaan REST dengan menggunakan Konsol Cloud
Saat membuat resource, buat permintaan REST menggunakan halaman pembuatan resource atau halaman detail di Konsol Google Cloud. Menggunakan permintaan REST yang dihasilkan akan menghemat waktu dan membantu mencegah error sintaksis.
Pelajari cara Membuat permintaan REST.
Menunggu operasi selesai
Jangan berasumsi bahwa suatu operasi, yaitu permintaan API apa pun yang mengubah resource, telah selesai atau berhasil. Sebagai gantinya, gunakan metode wait
untuk
resource Operation
guna memverifikasi bahwa operasi telah selesai. (Anda tidak perlu
memverifikasi permintaan yang tidak mengubah resource—seperti permintaan baca
menggunakan kata kerja HTTP GET
—karena respons API sudah menunjukkan apakah
permintaan tersebut berhasil. Akibatnya, Compute Engine API tidak menampilkan resource Operation
untuk permintaan ini.)
Setiap kali berhasil dimulai, permintaan API akan menampilkan kode status HTTP
200
. Meskipun menerima 200
menunjukkan bahwa server
berhasil menerima permintaan API Anda, kode status ini tidak menunjukkan
apakah operasi yang diminta telah berhasil diselesaikan atau tidak. Misalnya,
Anda dapat menerima 200
, tetapi operasi mungkin belum selesai atau
operasi mungkin gagal.
Setiap permintaan untuk membuat, mengupdate, atau menghapus untuk operasi yang berjalan lama akan menampilkan resource Operation
, yang merekam status permintaan tersebut. Operasi selesai saat kolom
status
dari resource Operation
adalah DONE
. Untuk memeriksa statusnya,
gunakan metode wait
yang cocok dengan
cakupan
resource Operation
yang ditampilkan:
- Untuk operasi zonal, gunakan
zoneOperations.wait
. - Untuk operasi regional, gunakan
regionOperations.wait
. - Untuk operasi global, gunakan
globalOperations.wait
.
Metode wait
ditampilkan saat operasi selesai atau saat permintaan mendekati batas waktu 2 menit. Saat menggunakan metode wait
,
hindari polling singkat, yaitu saat klien Anda terus membuat permintaan ke
server tanpa menunggu respons. Menggunakan metode wait
dalam loop
percobaan ulang dengan backoff eksponensial untuk memeriksa
status permintaan, bukan menggunakan metode get
dengan polling singkat
untuk resource Operation
, akan membantu mempertahankan kuota kapasitas
dan mengurangi latensi.
Untuk mengetahui informasi selengkapnya dan contoh penggunaan metode wait
, lihat
Menangani respons API.
Untuk memeriksa status operasi yang diminta, lihat Memeriksa status operasi.
Saat menunggu operasi selesai, pertimbangkan periode retensi minimum operasi, karena operasi yang telah selesai dapat dihapus dari database setelah periode ini.
Memberi nomor halaman pada hasil daftar
Saat menggunakan metode daftar (seperti metode *.list
, metode *.aggregatedList
, atau metode lain yang menampilkan daftar), beri nomor pada hasilnya jika memungkinkan untuk memastikan bahwa Anda membaca seluruh respons. Jika tidak memberi nomor halaman, Anda hanya dapat menerima maksimal 500 elemen pertama seperti yang ditentukan oleh parameter kueri maxResults
.
Untuk mengetahui informasi selengkapnya tentang penomoran halaman di Google Cloud, lihat
Penomoran Halaman Daftar.
Untuk mengetahui detail dan contoh spesifik, baca dokumentasi referensi untuk
metode daftar yang ingin Anda gunakan, seperti
instances.list
.
Anda juga dapat menggunakan Library Klien Cloud untuk menangani penomoran halaman.
Menggunakan filter daftar sisi klien untuk menghindari error kuota
Saat menggunakan filter dengan metode *.list
atau *.aggregatedList
, Anda akan dikenai biaya kuota tambahan jika ada lebih dari 10 ribu resource yang difilter dari permintaan tersebut.
Untuk mengetahui informasi selengkapnya, lihat filtered_list_cost_overhead
dalam Kuota kapasitas.
Jika project Anda melebihi kuota kapasitas ini, Anda akan menerima error 403 dengan alasan rateLimitExceeded
. Untuk menghindari error ini,
gunakan filter sisi klien untuk permintaan daftar.
Mengandalkan kode error, bukan pesan error
Google API harus menggunakan kode error kanonis yang ditentukan oleh
google.rpc.Code
,
tetapi pesan error
dapat berubah tanpa pemberitahuan. Pesan error umumnya ditujukan untuk dibaca developer, bukan program.
Pelajari error API lebih lanjut.
Minimalkan percobaan ulang sisi klien untuk mempertahankan kuota kapasitas
Minimalkan jumlah percobaan ulang sisi klien untuk sebuah project guna mencegah error rateLimitExceeded
dan untuk memaksimalkan penggunaan kuota kapasitas. Praktik berikut dapat membantu Anda mempertahankan kuota kapasitas untuk project Anda:
- Hindari polling singkat.
- Gunakan bursting dengan hemat dan selektif.
- Selalu lakukan panggilan dalam loop percobaan ulang dengan backoff eksponensial.
- Gunakan pembatasan kapasitas sisi klien.
- Pisahkan aplikasi Anda ke beberapa project.
Menghindari polling singkat
Hindari polling singkat, yaitu saat klien Anda terus membuat permintaan ke server tanpa menunggu respons. Jika Anda melakukan polling singkat, akan lebih sulit untuk menemukan permintaan buruk yang mengurangi kuota, meskipun permintaan tersebut tidak menampilkan data yang berguna.
Sebagai ganti polling singkat, Anda harus menunggu operasi selesai.
Menggunakan bursting dengan hemat dan selektif
Gunakan bursting dengan hemat dan selektif. Bursting adalah tindakan yang memungkinkan klien tertentu membuat banyak permintaan API dalam waktu singkat. Biasanya, bursting dilakukan sebagai respons terhadap skenario luar biasa, seperti kasus saat aplikasi Anda perlu menangani lebih banyak traffic dari biasanya. Bursting menghabiskan kuota tarif Anda dengan cepat, jadi pastikan Anda menggunakannya hanya jika diperlukan.
Jika bursting diperlukan, gunakan API batch khusus jika memungkinkan, seperti bulk instance API atau grup instance terkelola.
Pelajari lebih lanjut pengelompokan permintaan.
Selalu lakukan panggilan dalam loop percobaan ulang dengan backoff eksponensial
Gunakan backoff eksponensial untuk memberi jarak permintaan secara bertahap saat waktu tunggu habis atau setiap kali Anda mencapai kuota kapasitas.
Setiap loop percobaan ulang harus memiliki backoff eksponensial yang memastikan percobaan ulang yang sering dilakukan tidak membebani aplikasi Anda atau melebihi kuota kapasitas Anda. Jika tidak, Anda berisiko memberikan dampak negatif terhadap semua sistem lain dalam project yang sama.
Jika Anda memerlukan loop percobaan ulang untuk operasi yang gagal karena Anda telah mencapai kuota kapasitas, strategi backoff eksponensial harus memberikan waktu yang cukup antara percobaan ulang agar bucket kuota diisi ulang (biasanya setiap menit).
Atau, jika Anda memerlukan loop percobaan ulang saat menunggu operasi
mencapai waktu tunggu habis, interval maksimum strategi backoff eksponensial Anda
tidak boleh melebihi periode retensi minimum operasi. Jika tidak, Anda mungkin
menerima error Not Found
operasi.
Untuk contoh penerapan backoff eksponensial, lihat algoritma backoff eksponensial untuk Identity and Access Management API.
Menggunakan pembatasan kapasitas sisi klien
Gunakan pembatasan kapasitas sisi klien. Pembatas kapasitas dari sisi klien menetapkan batas buatan sehingga klien yang dimaksud hanya dapat menggunakan sejumlah kuota tertentu, sehingga mencegah satu klien menghabiskan seluruh kuota Anda.
Memisahkan aplikasi Anda ke beberapa project
Membagi aplikasi Anda ke beberapa project dapat membantu meminimalkan jumlah permintaan untuk bucket kuota Anda. Karena kuota diterapkan pada level per project, Anda dapat membagi aplikasi sehingga setiap aplikasi memiliki bucket kuota khusus sendiri.
Ringkasan checklist
Checklist berikut merangkum praktik terbaik untuk menggunakan Compute Engine API.
- Menggunakan library klien
- Membuat permintaan REST dengan menggunakan Konsol Cloud
- Menunggu operasi selesai
- Memberi nomor halaman pada hasil daftar
- Mengandalkan kode error, bukan pesan error
- Minimalkan percobaan ulang sisi klien untuk mempertahankan kuota kapasitas API
Langkah berikutnya
- Pelajari cara meningkatkan performa saat menggunakan Compute Engine API.