Praktik terbaik untuk Compute Engine API

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:

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.

Langkah berikutnya