Mengoptimalkan jaringan (generasi ke-1)
Dengan fungsi Cloud Run yang mudah digunakan, Anda dapat mengembangkan kode dengan cepat dan menjalankannya di lingkungan serverless. Pada skala sedang, biaya untuk menjalankan fungsi masih rendah dan pengoptimalan kode tidak dianggap sebagai prioritas tinggi. Akan tetapi seiring peningkatan skala penerapan Anda, pengoptimalan kode akan semakin penting.
Dokumen ini menjelaskan cara mengoptimalkan jaringan fungsi Anda. Beberapa manfaat mengoptimalkan jaringan adalah sebagai berikut:
- Mengurangi waktu CPU yang diperlukan untuk membuat koneksi baru di setiap panggilan fungsi.
- Mengurangi kemungkinan kehabisan kuota koneksi atau DNS.
Mempertahankan Koneksi Persisten
Bagian ini menunjukkan contoh cara mempertahankan koneksi persisten dalam suatu fungsi. Jika cara ini tidak diikuti, Anda bisa kehabisan kuota koneksi dengan cepat.
Skenario yang dibahas pada bagian ini:
- HTTP/S
- Google API
Permintaan HTTP/S
Cuplikan kode yang dioptimalkan berikut menunjukkan cara mempertahankan koneksi yang persisten, bukan membuat koneksi baru pada setiap pemanggilan fungsi:
Node.js
Python
Go
PHP
Sebaiknya gunakan Framework HTTP Guzzle PHP untuk mengirim permintaan HTTP, karena framework tersebut menangani koneksi persisten secara otomatis.
Mengakses Google API
Contoh berikut menggunakan Cloud Pub/Sub, tetapi pendekatan ini juga dapat diterapkan untuk library klien lainnya; misalnya, Cloud Natural Language atau Cloud Spanner. Perhatikan bahwa peningkatan performa dapat bergantung pada library klien tertentu yang diimplementasikan saat ini.
Pembuatan objek klien Pub/Sub akan menghasilkan satu koneksi dan dua kueri DNS per panggilan. Untuk menghindari koneksi dan kueri DNS yang tidak diperlukan, buat objek klien Pub/Sub dalam cakupan global seperti yang ditunjukkan pada contoh berikut:
Node.js
Python
Go
Koneksi keluar direset
Streaming koneksi dari fungsi Anda ke VPC dan internet terkadang dapat dihentikan dan diganti ketika infrastruktur dasar dimulai ulang atau diperbarui. Jika aplikasi Anda menggunakan kembali koneksi yang memakan waktu lama, sebaiknya konfigurasikan aplikasi Anda agar menghubungkan koneksi kembali guna menghindari penggunaan ulang koneksi yang tidak aktif.
Melakukan pengujian beban pada fungsi
Untuk mengukur rata-rata jumlah koneksi yang dijalankan fungsi Anda, deploy fungsi tersebut sebagai fungsi HTTP dan gunakan framework pengujian performa untuk memanggilnya di QPS tertentu. Salah satu kemungkinan pilihannya adalah Artileri, yang dapat Anda panggil dengan satu baris:
$ artillery quick -d 300 -r 30 URL
Perintah ini mengambil URL yang diberikan pada 30 QPS selama 300 detik.
Setelah menjalankan pengujian, periksa penggunaan kuota koneksi Anda di halaman kuota API fungsi Cloud Run di Konsol Google Cloud. Jika pemakaian Anda sekitar 30 (atau kelipatannya) secara konsisten, berarti Anda membuat 1 (atau beberapa) koneksi di setiap pemanggilan. Setelah mengoptimalkan kode, seharusnya Anda akan melihat beberapa (10-30) koneksi saja yang terjadi di awal pengujian.
Anda juga bisa membandingkan biaya CPU sebelum dan setelah pengoptimalan plot kuota CPU di halaman yang sama.