Serverless Kubernetes dengan Google Cloud Run

Imre Nagi
Pujangga Teknologi
Published in
3 min readJun 13, 2019

--

Beberapa waktu lalu, Google melalui konferensi tahunan, Google Cloud Next’19, mengumumkan 122+ hal terbaru yang dimiliki oleh Google Cloud Platform (GCP) . Salah pengumumannya adalah mengenai teknologi serverless yang mencakup Cloud Run, Cloud Run on GKE, dan Knative.

Sumber: cloud.google.com

Cloud Run merupakan sebuah platform komputasi yang memungkinkan penggunanya untuk menjalankan aplikasi berbasis kontainer tanpa harus memikirkan tentang penyediaan, konfigurasi dan pengelolaan server. Cloud Run yang merupakan teknologi berbasis Knative memungkinkan pengguna untuk memilih apakah aplikasi kontainer akan dijalankan dengan menggunakan Cloud Run yg dikelola oleh Google atau dijalankan diatas Google Kubernetes Engine (GKE) dengan menggunakan Cloud Run on GKE.

Berikut adalah fitur-fitur yang ditawarkan oleh Google Cloud Run:

  • Dikelola penuh oleh Google.
  • Redudansi. Servis direplikasi ke beberapa zone dalam sebuah regional GCP.
  • Integrasi dengan Google Cloud Build, Container Registry, Docker, Stackdriver Monitoring, Logging dan Error Reporting.
  • Nama domain yang dapat disesuaikan.
  • Autoscaling dengan cepat.

Kali ini penulis akan mencoba membahas mengenai kelebihan dan kekurangan native Cloud Run.

Kelebihan Cloud Run

  • Servis yang dijalankan di Cloud Run akan memiliki servis URL dan sertifikat SSL yang dikelola oleh Google. Apabila Anda ingin menggunakan nama domain yang sudah anda miliki, Cloud Run menyediakan fitur Domain Mappings.
  • Cloud Run mengalokasikan maksimal 1 vCPU untuk setiap kontainer. Jumlah alokasi vCPU akan bertambah seiring dengan jumlah penambahan request pada kontainer. Jika tidak ada proses yang sedang berlangsung, jumlah kontainer yang dialokasikan oleh vCPU adalah 0.
  • Masing-masing servis yang dijalankan di Cloud Run, dapat dikelola dan diakses oleh GCP User/GCP service account/Google account yang telah memiliki role dan permission yang sesuai.
curl -H "Authorization: Bearer $(gcloud config config-helper --format 'value(credential.id_token)' --force-auth-refresh)" [SERVICE_URL]

Kekurangan Cloud Run

  • Cloud Run baru tersedia di us-central region. Jika Anda memiliki trafik yang berasal dari region yang berbeda seperti asia-southeast, mungkin akan ada peningkatan latency yang cukup signifikan pada aplikasi Anda.
  • Aplikasi yang dijalankan di Cloud Run tidak memiliki akses ke VPC / Compute Engine Network. Disamping itu servis tidak akan menjadi bagian dari Istio Service Mesh. Apabila kita membutuhkan akses ke VPC/Compute Engine Network, maka gunakan Cloud Run on GKE.
  • Servis yang dapat dijalankan pada Cloud Run terbatas pada aplikasi stateless HTTP. Jika Anda memiliki aplikasi Database, atau aplikasi berbasis gRPC, Cloud Run bukanlah pilihan yang tepat.
  • Cloud Run menggunakan In-memory filesystem untuk menyimpan file. Jika aplikasi anda bertugas untuk menulis informasi ke dalam sebuah file, file tersebut hanya tersimpan di memori dan akan hilang ketika kontainer dihentikan. Dalam kata lain, Cloud Run masih belum terintegrasi dengan persistent disk di GCE maupun PV/PVC Kubernetes.
  • Sebuah kontainer di Cloud Run hanya akan memproses maksimum 80 request konkuren. Jika jumlah request konkuren melewati jumlah maksimal, maka Cloud Run akan membuat kontainer baru.
  • Cloud Run tidak memiliki secret management. Apabila anda memiliki berkas rahasia yang akan diakses oleh aplikasi, Anda harus menggunakan alternatif lain seperti dengan menyimpan file tersebut pada GCS Bucket yang terproteksi.

Tips Menggunakan Cloud Run

  • Hindari penggunakan background activity. Potongan kode yang dieksekusi setelah sebuah request selesai diproses, dapat mengganggu akses aplikasi ke CPU.
  • Hapus berkas yang disimpan di memori untuk mencegah aplikasi kehabisan memori.
  • Gunakan docker image berukuran kecil agar proses inisiasi kontainer berjalan dengan cepat.
  • Gunakan lazy initialization untuk variabel global yang digunakan dalam aplikasi (seperti klien database, klien servis pihak ketiga, dll)

Google Cloud Run memungkinkan pengembang aplikasi untuk menjalankan stateless HTTP docker image tanpa perlu memikirkan tentang pengelolaan infrastruktur dan server. Sayangnya menurut penulis, masih terdapat beberapa kekurangan dari Google Cloud Run yang menjadi penghambat untuk diadopsi untuk aplikasi di lingkungan production.

--

--

Imre Nagi
Pujangga Teknologi

Google Developer Expert, Cloud Platform Engineer @gojek