Apa itu Cloud Run

Cloud Run adalah platform komputasi terkelola yang memungkinkan Anda menjalankan container langsung di atas infrastruktur Google yang skalabel.

Anda dapat men-deploy kode yang ditulis dalam bahasa pemrograman apa pun di Cloud Run selama Anda dapat mem-build image container dari bahasa tersebut. Bahkan sebenarnya, membangun image container hanya opsional. Jika menggunakan Go, Node.js, Python, Java, .NET Core, Ruby, atau framework yang didukung, Anda dapat menggunakan opsi deployment berbasis sumber yang membangun container untuk Anda, menggunakan praktik terbaik untuk bahasa yang Anda gunakan.

Google telah membangun Cloud Run agar dapat bekerja sama dengan layanan lain di Google Cloud, sehingga Anda dapat membangun aplikasi dengan fitur lengkap.

Singkatnya, Cloud Run memungkinkan para developer memanfaatkan sebagian besar waktu mereka untuk menulis kode, dan hanya menghabiskan sangat sedikit waktu untuk mengoperasikan, mengonfigurasi, dan menskalakan layanan Cloud Run mereka. Anda tidak perlu melakukan pembuatan cluster ataupun pengelolaan infrastruktur untuk bisa produktif dengan Cloud Run.

Layanan dan tugas: dua cara untuk menjalankan kode Anda

Di Cloud Run, kode Anda dapat berjalan secara terus menerus, baik sebagai service (layanan) ataupun sebagai job (tugas). Layanan dan tugas berjalan di environment yang sama dan keduanya dapat memanfaatkan koneksi efisien (integrasi) yang sama dengan layanan lain di Google Cloud.

  • Layanan Cloud Run. Digunakan untuk menjalankan kode yang merespons permintaan, peristiwa, atau fungsi web.
  • Tugas Cloud Run. Digunakan untuk menjalankan kode yang melakukan pekerjaan (tugas) dan berhenti ketika pekerjaan tersebut selesai.

Layanan Cloud Run

Layanan Cloud Run menjalankan container untuk menyalurkan dan memproses web request dan web event.

Layanan Cloud Run menyediakan infrastruktur yang diperlukan untuk menjalankan endpoint HTTPS yang terpercaya. Tanggung jawab Anda adalah memastikan kode Anda dapat memonitor port TCP dan menangani HTTP request.

Layanan standar mencakup fitur berikut:

Endpoint HTTPS yang berbeda untuk setiap layanan
Semua layanan Cloud Run telah disediakan endpoint HTTPS dengan subdomain yang unik/berbeda dari domain *.run.app – dan Anda juga dapat mengatur domain secara kustom. Cloud Run mengelola TLS untuk Anda, dan termasuk juga dukungan untuk WebSockets, HTTP/2 (end-to-end), dan gRPC (end-to-end).
Penskalaan otomatis berbasis permintaan yang cepat
Cloud Run didesain untuk meningkatkan kapasitas dengan cepat untuk menangani semua permintaan yang masuk atau menangani peningkatan penggunaan CPU di luar permintaan jika alokasi CPU ditetapkan ke always on. Sebuah layanan dapat dengan cepat meningkatkan kapasitas hingga seribu instance, atau bahkan lebih jika Anda meminta penambahan kuota. Jika permintaan menurun, Cloud Run akan menghapus container yang tidak aktif (idle). Jika Anda khawatir dengan biaya atau sistem downstream yang terlalu banyak, Anda dapat membatasi jumlah maksimum instance.
Sistem pengelolaan traffic bawaan
Setiap deployment akan membuat revisi baru yang tidak dapat diubah. Anda dapat mengarahkan traffic masuk ke revisi terbaru, roll back ke revisi sebelumnya, ataupun membagi traffic ke berbagai versi revisi dalam waktu yang sama untuk menjalankan peluncuran bertahap. Ini berguna jika Anda ingin mengurangi risiko dari men-deploy sebuah revisi baru. Anda dapat memulainya dengan menyalurkan 1% request ke revisi baru, kemudian meningkatkan persentase tersebut sambil memantau telemetri.
Layanan pribadi dan publik
Layanan Cloud Run dapat diakses lewat internet, dan Anda juga dapat membatasi akses dengan tiga cara:

Anda dapat mem-fronting layanan Cloud Run dengan sebuah Content Delivery Network (CDN) untuk menyalurkan aset yang dapat di-cache dari pusat server menjadi lebih dekat dengan klien. Fitur ini tersedia di Firebase Hosting dan Cloud CDN.

Penskalaan hingga nol dan instance minimum

Cloud Run menambahkan dan menghapus instance secara otomatis untuk menangani semua permintaan yang masuk atau menangani peningkatan penggunaan CPU di luar permintaan jika alokasi CPU ditetapkan ke always on. Jika tidak ada permintaan masuk ke layanan Anda, instance terakhir yang tersisa pun akan dihapus. Mekanisme ini sering disebut sebagai "scale to zero" (penskalaan hingga nol).

Jika tidak ada instance yang aktif, instance baru hanya akan dibuat jika ada request masuk. Hal ini berdampak negatif pada waktu respons dari request yang pertama, tergantung pada seberapa cepat container Anda siap dalam menangani request.

Untuk memastikan agar layanan Anda tidak sampai menghapus semua instance, Anda dapat mengonfigurasi Cloud Run untuk menjaga jumlah minimum instance yang aktif.

Pengenaan biaya sesuai penggunaan layanan

Sistem penskalaan ke nol ini diminati karena alasan ekonomi, sebab Anda dikenai biaya untuk CPU dan memori yang dialokasikan ke instance dengan tingkat presisi 100ms. Jika tidak menetapkan jumlah minimum instance, Anda tidak akan dikenai biaya saat layanan tidak digunakan.

Ada dua model penetapan harga yang dapat Anda aktifkan:

Berbasis permintaan
Jika sebuah instance tidak sedang memproses request, artinya CPU tidak sedang teralokasikan dan Anda tidak akan dikenai biaya. Selain dari kondisi itu, Anda membayar biaya per request.
Berbasis instance
Anda akan dikenai biaya selama masa aktif instance dan CPU akan selalu dialokasikan. Tidak ada biaya per request.

Terdapat paket gratis yang hemat biaya. Lihat harga untuk mengetahui informasi selengkapnya, dan baca alokasi CPU untuk mempelajari cara mengaktifkan harga berbasis request atau harga berbasis instance untuk layanan Anda.

Container filesystem sementara

Instance di Cloud Run dapat dihapus dengan mudah. Setiap container memiliki in-memory filesystem overlay yang writable, yang tidak akan dipertahankan jika container dinonaktifkan. Cloud Run memutuskan secara independen kapan harus berhenti mengirim request ke sebuah instance dan mematikannya, contohnya saat melakukan penskalaan.

Untuk menerima peringatan saat Cloud Run akan menonaktifkan instance, aplikasi Anda dapat memiliki kemampuan untuk menangkap sinyal SIGTERM. Hal ini memungkinkan kode Anda untuk mem-flush buffer lokal dan menyimpan data lokal ke penyimpanan data eksternal.

Untuk menyimpan file secara permanen, Anda dapat mengintegrasikan dengan Cloud Storage atau memasang network filesystem (NFS).

Kapan layanan Cloud Run harus digunakan

Layanan Cloud Run sangat cocok untuk kode yang menangani permintaan, peristiwa, atau fungsi. Contoh kasus penggunaan mencakup:

Website dan aplikasi web
Bangun aplikasi web menggunakan stack yang anda sukai, akses database SQL, dan render halaman HTML dinamis.
API dan microservice
Anda dapat membuat REST API, atau GraphQL API atau private microservice yang berkomunikasi melalui HTTP atau gRPC.
Pemrosesan data streaming
Layanan Cloud Run dapat menerima pesan dari langganan push Pub/Sub dan peristiwa dari Eventarc.
Workload asinkron
Fungsi Cloud Run dapat merespons peristiwa asinkron, seperti pesan pada topik Pub/Sub, perubahan dalam bucket Cloud Storage, atau peristiwa Firebase.
Inferensi AI
Layanan Cloud Run dengan atau tanpa GPU yang dikonfigurasi dapat menghosting beban kerja AI seperti model inferensi dan pelatihan model.

Tugas Cloud Run

Jika kode Anda didesain untuk mengeksekusi pekerjaan, kemudaian mengehentikan eksekusi tersebut (contohnya seperti sebuah skrip), Anda dapat menggunakan tugas Cloud Run untuk menjalankan kode Anda. Anda dapat mengeksekusi sebuah tugas dari command line menggunakan gcloud CLI, menjadwalkan tugas berulang, atau menjalankannya sebagai bagian dari workflow.

Menjalankan tugas lebih cepat dengan array

Sebuah tugas dapat memulai satu instance untuk menjalankan kode Anda — cara yang umum untuk menjalankan sebuah skrip atau tool. Namun, Anda juga dapat memulai banyak instance independen yang identik secara paralel, yang disebut tugas berbasis array.

Tugas tugas array adalah cara yang lebih cepat untuk memproses tugas yang dapat dibagi menjadi beberapa tugas independen, seperti yang ditampilkan di sini:

Tugas berbasis array adalah cara yang lebih cepat untuk menjalankan tugas yang dapat diparalelkan

Misalnya, jika Anda mengubah ukuran dan memangkas 1.000 gambar dari Cloud Storage, pemrosesan gambar secara berurutan satu per satu akan lebih lambat daripada memprosesnya secara paralel dengan banyak instance, yang dikelola Cloud Run dengan penskalaan otomatis.

Kapan tugas Cloud Run harus digunakan

Tugas Cloud Run sangat cocok untuk menjalankan kode yang memproses sebuah pekerjaan (tugas) dan akan berhenti ketika pekerjaan tersebut selesai. Berikut adalah beberapa contohnya:

Skrip atau tool
Jalankan skrip untuk melakukan migrasi database atau pekerjaan operasional lainnya.
Tugas berbasis array
Proses semua file secara paralel dan ekstensif di bucket Cloud Storage.
Tugas terjadwal
Buat dan kirim invoice secara rutin, atau simpan hasil kueri database sebagai XML, dan upload file tersebut setiap beberapa jam.

Integrasi Cloud Run

Cloud Run berintegrasi dengan ekosistem Google Cloud yang lebih luas, sehingga Anda dapat membangun aplikasi dengan fitur lengkap.

Integrasi esensial mencakup:

Penyimpanan data
Cloud Run berintegrasi dengan Cloud SQL (MySQL, PostgreSQL, dan SQL Server terkelola), Memorystore (Redis dan Memcache terkelola), Firestore, Spanner, Cloud Storage, dan lainnya. Lihat Penyimpanan data untuk mengetahui daftar lengkapnya.
Logging dan error reporting
Log container otomatis diserap oleh Cloud Logging. Jika terdapat exceptions dalam log, Error Reporting akan mengumpulkannya, lalu akan menotifikasikannya kepada Anda. Bahasa yang didukung meliputi: Go, Java, Node.js, PHP, Python, Ruby, dan .NET.
Service identity
Setiap revisi Cloud Run akan ditautkan ke akun layanan, dan library klien Google Cloud akan menggunakan akun layanan ini secara transparan untuk autentikasi ke Google Cloud API.
Continuous delivery
Jika menyimpan kode sumber di GitHub, Bitbucket, atau Cloud Source Repositories, Anda dapat mengonfigurasi Cloud Run untuk men-deploy commit baru secara otomatis.
Private networking
Instance Cloud Run dapat menjangkau resource di jaringan Virtual Private Cloud (VPC) melalui konektor akses VPC tanpa server. Dengan cara inilah layanan Anda dapat terhubung dengan mesin virtual Compute Engine atau produk-produk lain yang berbasis Compute Engine, seperti Google Kubernetes Engine atau Memorystore.
Google Cloud API
Kode layanan Anda melakukan autentikasi dengan Google Cloud API secara transparan. Contohnya API dari AI dan Machine Learning, seperti Cloud Vision API, Speech-to-Text API, AutoML Natural Language API, Cloud Translation API, dan masih banyak lagi.
Tugas latar belakang
Jika Anda ingin menjadwalkan kode untuk dijalankan nanti ataupun langsung setelah memproses sebuah web request, Cloud Run dapat digunakan bersama Cloud Tasks untuk menyediakan eksekusi asinkron yang skalabel dan terpercaya.

Lihat artikel Menghubungkan ke layanan Google Cloud untuk mengetahui daftar semua layanan Google Cloud yang dapat bekerja sama dengan Cloud Run.

Layanan atau tugas harus dikemas di dalam container image.

Agar dapat di-deploy ke Cloud Run, layanan atau tugas Anda harus dipaketkan ke dalam sebuah container image. Jika Anda belum familier dengan container, berikut adalah pengenalan konsepnya secara singkat.

Membangun container image

Container image adalah sebuah paket yang berisi semua hal yang diperlukan layanan Anda untuk dapat dijalankan. Hal itu terdiri dari build artifact, aset, paket sistem, dan runtime (opsional). Aplikasi yang terpaket di dalam container bersifat sangat portabel – dapat dijalankan di mana pun container dapat berjalan. Contoh dari build artifact adalah compiled binary atau file skrip, dan contoh dari runtime adalah Node.js JavaScript runtime, atau sebuah Java Virtual Machine (JVM) .

Para ahli mengapresiasi kemampuan Cloud Run yang tidak menimbulkan beban tambahan dalam menjalankan kode mereka: Anda dapat menjalankan binary apa pun di Cloud Run. Bagi semua pengguna, termasuk para ahli, yang ingin segalanya lebih mudah, atau ingin mempercayakan aplikasi mereka ke Google, Cloud Run terintegrasi dengan Google Cloud Buildpacks yang open source untuk menawarkan deployment berbasis sumber.

Langkah selanjutnya