Mengoptimalkan biaya: Komputasi, container, dan serverless

Last reviewed 2023-07-12 UTC

Dokumen di Framework Arsitektur Google Cloud ini memberikan rekomendasi untuk membantu Anda mengoptimalkan biaya virtual machine (VM), container, dan resource serverless di Google Cloud.

Panduan di bagian ini ditujukan bagi arsitek, developer, dan administrator yang bertanggung jawab untuk menyediakan dan mengelola resource komputasi untuk workload di cloud.

Resource komputasi merupakan bagian terpenting dari infrastruktur cloud Anda. Saat memigrasikan workload Anda ke Google Cloud, pilihan pertama yang umum adalah Compute Engine, yang memungkinkan Anda menyediakan dan mengelola VM secara efisien di cloud. Compute Engine menawarkan berbagai jenis mesin, dan tersedia secara global di semua region Google Cloud. Dengan jenis mesin kustom dan bawaan Compute Engine, Anda dapat menyediakan VM yang menawarkan kapasitas komputasi serupa dengan infrastruktur lokal, sehingga Anda dapat mempercepat proses migrasi. Compute Engine memberi Anda keuntungan harga dengan membayar hanya untuk infrastruktur yang Anda gunakan dan memberikan penghematan signifikan saat Anda menggunakan resource komputasi lebih banyak dengan diskon untuk penggunaan berkelanjutan.

Selain Compute Engine, Google Cloud menawarkan container dan layanan komputasi serverless. Pendekatan serverless dapat lebih hemat biaya untuk layanan baru yang tidak selalu berjalan (misalnya, API, pemrosesan data, dan pemrosesan peristiwa).

Bersama dengan rekomendasi umum, dokumen ini memberikan panduan untuk membantu Anda mengoptimalkan biaya resource komputasi saat menggunakan produk berikut:

  • Compute Engine
  • Google Kubernetes Engine (GKE)
  • Cloud Run
  • Cloud Functions
  • App Engine

Rekomendasi umum

Rekomendasi berikut berlaku untuk semua komputasi, container, dan layanan serverless di Google Cloud yang dibahas di bagian ini.

Lacak penggunaan dan biaya

Gunakan alat dan teknik berikut untuk memantau penggunaan dan biaya resource:

Mengontrol penyediaan resource

Gunakan rekomendasi berikut untuk mengontrol jumlah resource yang disediakan di cloud dan lokasi tempat resource dibuat:

  • Untuk membantu memastikan konsumsi dan biaya resource tidak melebihi perkiraan, gunakan quotas resource.
  • Sediakan resource di region berbiaya terendah yang memenuhi persyaratan latensi workload Anda. Untuk mengontrol tempat resource disediakan, Anda dapat menggunakan batasan kebijakan organisasi gcp.resourceLocations.

Dapatkan diskon untuk abonemen

Diskon abonemen (CUD) ideal untuk workload dengan kebutuhan resource yang dapat diprediksi. Setelah memigrasikan workload Anda ke Google Cloud, temukan dasar pengukuran untuk resource yang diperlukan, dan dapatkan diskon yang lebih besar untuk komitmen penggunaan. Misalnya, beli komitmen satu atau tiga tahun, dan dapatkan diskon besar untuk harga VM Compute Engine.

Mengotomatiskan pelacakan biaya menggunakan label

Menentukan dan menetapkan label secara konsisten. Berikut adalah contoh cara menggunakan label untuk mengotomatiskan pelacakan biaya:

  • Untuk VM yang hanya digunakan developer selama jam kerja, tetapkan label env: development. Anda dapat menggunakan Cloud Scheduler untuk menyiapkan Cloud Function serverless untuk mematikan VM ini setelah jam kerja, dan memulai ulang jika diperlukan.

  • Untuk aplikasi yang memiliki beberapa layanan Cloud Run dan instance Cloud Functions, tetapkan label yang konsisten ke semua resource Cloud Run dan Cloud Functions. Identifikasi area berbiaya tinggi, dan ambil tindakan untuk mengurangi biaya.

Menyesuaikan laporan penagihan

Konfigurasikan laporan Penagihan Cloud Anda dengan menyiapkan filter yang diperlukan dan mengelompokkan data sesuai kebutuhan (misalnya, berdasarkan project, layanan, atau label).

Mempromosikan budaya hemat biaya

Latih developer dan operator Anda tentang infrastruktur cloud. Buat dan promosikan program pembelajaran menggunakan kelas tradisional atau online, grup diskusi, ulasan sejawat, pemrograman berpasangan, dan game hemat biaya. Seperti yang ditunjukkan dalam riset DORA Google, budaya organisasi adalah pendorong utama untuk meningkatkan performa, mengurangi pengerjaan ulang dan kejenuhan, serta mengoptimalkan biaya. Dengan memberi karyawan visibilitas tentang biaya sumber daya mereka, Anda membantu mereka menyelaraskan prioritas dan aktivitas dengan tujuan serta batasan bisnis.

Compute Engine

Bagian ini berisi panduan untuk membantu Anda mengoptimalkan biaya resource Compute Engine. Selain panduan ini, sebaiknya ikuti rekomendasi umum yang dibahas sebelumnya.

Memahami model penagihan

Guna mempelajari opsi penagihan untuk Compute Engine, lihat Harga.

Menganalisis konsumsi resource

Untuk membantu Anda memahami konsumsi resource di Compute Engine, ekspor data penggunaan ke BigQuery. Buat kueri datastore BigQuery untuk menganalisis tren penggunaan CPU virtual (vCPU) project Anda, dan menentukan jumlah vCPU yang dapat Anda peroleh kembali. Jika Anda telah menentukan batas jumlah core per project, analisis tren penggunaan untuk menemukan anomali dan mengambil tindakan korektif.

Mendapatkan kembali resource yang tidak ada aktivitas

Gunakan rekomendasi berikut untuk mengidentifikasi dan mendapatkan kembali VM dan disk yang tidak digunakan, seperti VM untuk project bukti konsep yang tidak diprioritaskan:

  • Gunakan rekomendasi VM yang tidak aktif untuk mengidentifikasi persistent disk dan VM yang tidak aktif berdasarkan metrik penggunaan.
  • Sebelum menghapus resource, nilai potensi dampak tindakan dan rencanakan untuk membuat ulang resource jika diperlukan.
  • Sebelum menghapus VM, pertimbangkan untuk mengambil snapshot. Saat Anda menghapus VM, disk yang terpasang akan dihapus, kecuali jika Anda telah memilih opsi Keep disk.
  • Jika memungkinkan, pertimbangkan untuk menghentikan VM, bukan menghapusnya. Ketika Anda menghentikan VM, instance akan dihentikan, tetapi disk dan alamat IP akan dipertahankan hingga Anda melepaskan atau menghapusnya.

Menyesuaikan kapasitas agar cocok dengan permintaan

Menjadwalkan VM Anda untuk memulai dan berhenti secara otomatis. Misalnya, jika VM hanya digunakan delapan jam sehari selama lima hari dalam seminggu (artinya, 40 jam dalam seminggu), Anda berpotensi mengurangi biaya hingga 75 persen dengan menghentikan VM selama 128 jam dalam seminggu ketika VM tidak digunakan.

Skalakan kapasitas komputasi secara otomatis on-demand menggunakan grup instance terkelola. Anda dapat menskalakan kapasitas secara otomatis berdasarkan parameter yang penting bagi bisnis Anda (misalnya, penggunaan CPU atau kapasitas load balancing).

Memilih jenis mesin yang sesuai

Sesuaikan ukuran VM agar sesuai dengan persyaratan komputasi workload Anda menggunakan pemberi rekomendasi jenis mesin VM.

Untuk workload dengan persyaratan resource yang dapat diprediksi, sesuaikan jenis mesin dengan kebutuhan Anda dan hemat uang dengan menggunakan VM kustom.

Untuk workload pemrosesan batch yang fault-tolerant, pertimbangkan untuk menggunakan Spot VM. Komputasi berperforma tinggi (HPC), big data, transcoding media, pipeline (CI/CD) continuous integration dan continuous delivery, serta aplikasi web stateless adalah contoh workload yang dapat di-deploy di Spot VM. Untuk contoh cara Descartes Labs mengurangi biaya analisisnya dengan menggunakan preemptible VM (versi lama Spot VM) untuk memproses citra satelit, lihat studi kasus Descartes Labs.

Mengevaluasi opsi lisensi

Saat memigrasikan workload pihak ketiga ke Google Cloud, Anda mungkin dapat mengurangi biaya dengan menggunakan bring your own license (BYOL). Misalnya, untuk men-deploy VM Server Microsoft Windows, daripada menggunakan image premium yang menimbulkan biaya tambahan untuk lisensi pihak ketiga, Anda dapat membuat dan menggunakan image BYOL Windows kustom. Kemudian, Anda hanya membayar infrastruktur VM yang digunakan di Google Cloud. Strategi ini membantu Anda terus merealisasikan nilai dari investasi yang ada dalam lisensi pihak ketiga.

Jika Anda memutuskan untuk menggunakan pendekatan BYOL, sebaiknya lakukan hal berikut:

  • Sediakan jumlah core CPU komputasi yang diperlukan secara terpisah dari memori dengan menggunakan jenis mesin kustom, dan batasi biaya lisensi pihak ketiga untuk jumlah core CPU yang Anda butuhkan.
  • Kurangi jumlah vCPU per inti dari 2 menjadi 1 dengan menonaktifkan multithreading simultan (SMT), dan kurangi biaya lisensi Anda hingga 50 persen.

Jika workload pihak ketiga Anda memerlukan hardware khusus untuk memenuhi persyaratan keamanan atau kepatuhan, Anda dapat menggunakan bring your own license (BYOL) ke sole-tenant node.

Google Kubernetes Engine

Bagian ini berisi panduan untuk membantu Anda mengoptimalkan biaya resource GKE.

Selain rekomendasi berikut, lihat rekomendasi umum yang dibahas sebelumnya:

  • Gunakan GKE Autopilot agar GKE memaksimalkan efisiensi infrastruktur cluster Anda. Anda tidak perlu memantau kondisi node, menangani pengemasan berkelompok, atau menghitung kapasitas yang dibutuhkan workload Anda.
  • Sesuaikan penskalaan otomatis GKE menggunakan Horizontal Pod Autoscaler (HPA), Penskalaan Otomatis Pod Vertikal (VPA), Cluster Autoscaler (CA), atau penyediaan otomatis node berdasarkan persyaratan workload Anda.
  • Untuk workload batch yang tidak sensitif terhadap latensi saat memulai, gunakan profil penskalaan otomatis pengoptimalan-utilisasi untuk membantu meningkatkan pemanfaatan cluster.
  • Gunakan penyediaan otomatis node untuk memperluas autoscaler cluster GKE, serta membuat dan menghapus node pool secara efisien berdasarkan spesifikasi pod yang tertunda tanpa penyediaan yang berlebihan.
  • Gunakan kumpulan node terpisah: node pool statis untuk beban statis, dan node pool dinamis dengan grup penskalaan otomatis cluster untuk beban dinamis.
  • Gunakan Spot VM untuk kumpulan node Kubernetes jika pod Anda fault-tolerant dan dapat berhenti dengan baik dalam waktu kurang dari 25 detik. Dikombinasikan dengan autoscaler cluster GKE, strategi ini membantu Anda memastikan bahwa kumpulan node dengan VM berbiaya lebih rendah (dalam hal ini, kumpulan node dengan VM Spot) diskalakan terlebih dahulu.
  • Pilih jenis mesin yang hemat biaya (misalnya: E2, N2D, T2D), yang memberikan performa ke harga 20–40% lebih tinggi.
  • Gunakan pengukuran penggunaan GKE untuk menganalisis profil penggunaan cluster Anda berdasarkan namespace dan label. Identifikasi tim atau aplikasi yang paling banyak menghabiskan waktu, lingkungan atau komponen yang menyebabkan lonjakan penggunaan atau biaya, dan tim yang menghabiskan resource.
  • Gunakan kuota resource dalam cluster multi-tenant untuk mencegah tenant menggunakan lebih banyak dari pangsa resource cluster yang ditetapkan.
  • Jadwalkan penurunan skala otomatis lingkungan pengembangan dan pengujian setelah jam kerja.
  • Ikuti praktik terbaik untuk menjalankan aplikasi Kubernetes yang hemat biaya di GKE.

Cloud Run

Bagian ini berisi panduan untuk membantu Anda mengoptimalkan biaya resource Cloud Run.

Selain rekomendasi berikut, lihat rekomendasi umum yang dibahas sebelumnya:

  • Sesuaikan setelan serentak (default: 80) untuk mengurangi biaya. Cloud Run menentukan jumlah permintaan yang akan dikirim ke instance berdasarkan penggunaan CPU dan memori. Dengan meningkatkan permintaan serentak, Anda dapat mengurangi jumlah instance yang diperlukan.
  • Tetapkan batas untuk jumlah instance yang dapat di-deploy.
  • Perkirakan jumlah instance yang diperlukan menggunakan metrik Waktu Instance yang Dapat Ditagih. Misalnya, jika metrik menampilkan 100s/s, sekitar 100 instance telah dijadwalkan. Menambahkan buffering 30% untuk mempertahankan performa; yaitu, 130 instance untuk 100 detik lalu lintas.
  • Untuk mengurangi dampak cold start, konfigurasikan jumlah minimum instance. Jika tidak ada aktivitas, instance ini akan ditagih sepersepuluh dari harga aslinya.
  • Pantau penggunaan CPU, dan sesuaikan batas CPU sesuai kebutuhan.
  • Gunakan pengelolaan traffic untuk menentukan konfigurasi yang hemat biaya.
  • Sebaiknya gunakan Cloud CDN atau Firebase Hosting untuk menayangkan aset statis.
  • Untuk aplikasi Cloud Run yang menangani permintaan secara global, pertimbangkan untuk men-deploy aplikasi ke beberapa region, karena transfer data lintas benua bisa mahal. Desain ini direkomendasikan jika Anda menggunakan load balancer dan CDN.
  • Kurangi waktu startup untuk instance Anda, karena waktu startup juga dapat ditagih.
  • Beli Diskon Abonemen, dan hemat hingga 17% dari harga sesuai permintaan untuk komitmen satu tahun.

Cloud Functions

Bagian ini berisi panduan untuk membantu Anda mengoptimalkan biaya resource Cloud Functions.

Selain rekomendasi berikut, lihat rekomendasi umum yang dibahas sebelumnya:

  • Amati waktu eksekusi fungsi Anda. Lakukan eksperimen dan benchmark untuk merancang fungsi terkecil yang masih memenuhi nilai minimum performa yang Anda perlukan.
  • Jika workload Cloud Functions Anda berjalan terus-menerus, pertimbangkan untuk menggunakan GKE atau Compute Engine untuk menangani workload tersebut. Container atau VM dapat menjadi opsi hemat biaya untuk workload yang selalu berjalan.
  • Batasi jumlah instance fungsi yang dapat berdampingan.
  • Bandingkan performa runtime bahasa pemrograman Cloud Functions dengan workload fungsi Anda. Program dalam bahasa yang dikompilasi memiliki cold start yang lebih lama, tetapi berjalan lebih cepat. Program dalam bahasa pemrograman tafsiran berjalan lebih lambat, tetapi memiliki overhead cold start yang lebih rendah. Fungsi sederhana dan singkat yang sering dijalankan mungkin lebih hemat dalam bahasa pemrograman tafsiran.
  • Menghapus file sementara yang ditulis ke disk lokal, yang merupakan sistem file dalam memori. File sementara menggunakan memori yang dialokasikan untuk fungsi Anda, dan terkadang tetap dipertahankan di antara pemanggilan. Jika Anda tidak menghapus file ini, error kehabisan memori mungkin akan terjadi dan memicu cold start, yang meningkatkan waktu dan biaya eksekusi.

App Engine

Bagian ini berisi panduan untuk membantu Anda mengoptimalkan biaya resource App Engine.

Selain rekomendasi berikut, lihat rekomendasi umum yang dibahas sebelumnya:

  • Menetapkan instance maksimum berdasarkan lalu lintas dan latensi permintaan Anda. App Engine biasanya menskalakan kapasitas berdasarkan traffic yang diterima aplikasi. Anda dapat mengontrol biaya dengan membatasi jumlah instance yang dapat dibuat oleh App Engine.
  • Untuk membatasi memori atau CPU yang tersedia untuk aplikasi Anda, tetapkan class instance. Untuk aplikasi yang menggunakan CPU secara intensif, alokasikan lebih banyak CPU. Uji beberapa konfigurasi untuk menentukan ukuran yang optimal.
  • Bandingkan workload App Engine Anda dalam beberapa bahasa pemrograman. Misalnya, workload yang diterapkan dalam satu bahasa mungkin memerlukan lebih sedikit instance dan hemat biaya untuk menyelesaikan tugas tepat waktu dibandingkan workload sama yang diprogram dalam bahasa lain.
  • Melakukan pengoptimalan agar cold start lebih sedikit terjadi. Jika memungkinkan, kurangi tugas intensif CPU atau tugas yang berjalan lama yang terjadi dalam cakupan global. Coba uraikan tugas menjadi operasi lebih kecil yang dapat "dimuat dengan lambat" ke dalam konteks permintaan.
  • Jika Anda mengharapkan traffic burst, konfigurasikan jumlah minimum instance tidak ada aktivitas yang telah di-pra-penyiapan. Jika tidak mengharapkan traffic, Anda dapat mengonfigurasi instance tidak ada aktivitas minimum ke nol.
  • Untuk menyeimbangkan performa dan biaya, jalankan pengujian A/B dengan membagi traffic antara dua versi, masing-masing dengan konfigurasi yang berbeda. Pantau performa dan biaya setiap versi, sesuaikan dengan kebutuhan, dan tentukan konfigurasi yang harus dikirim untuk traffic mana.
  • Konfigurasikan permintaan serentak, dan tetapkan permintaan serentak maksimum lebih tinggi daripada default. Makin banyak permintaan yang dapat ditangani setiap instance secara serentak, makin efisien Anda dapat menggunakan instance yang ada untuk menyalurkan lalu lintas.

Langkah selanjutnya