Apa itu Cloud Run

Cloud Run adalah platform aplikasi terkelola sepenuhnya untuk menjalankan kode, fungsi, atau container Anda di infrastruktur Google yang sangat skalabel.

Anda dapat men-deploy kode yang ditulis dalam bahasa pemrograman apa pun di Cloud Run selama Anda dapat membangun container image dari bahasa tersebut. Bahkan sebenarnya, membangun container image hanya opsional. Jika menggunakan bahasa Go, Node.js, Python, Java, .NET, Ruby, atau framework yang didukung, Anda dapat menggunakan opsi deployment berbasis sumber yang dapat membantu membangun container untuk Anda, dengan 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, tugas, kumpulan pekerja, dan instance: empat cara untuk menjalankan kode Anda

Di Cloud Run, kode Anda dapat berjalan sebagai layanan, tugas, kumpulan pekerja, atau instance. Semua jenis resource ini menjalankan instance container yang di-sandbox di lingkungan eksekusi yang sama dan dapat berintegrasi denganGoogle Cloud layanan.

Tentukan Cloud Run mana yang sesuai untuk workload Anda.
Tentukan resource Cloud Run yang sesuai untuk workload Anda.

Tabel berikut memberikan gambaran umum tentang opsi yang disediakan oleh setiap jenis resource Cloud Run.

Resource Deskripsi
Layanan Merespons permintaan HTTP yang dikirim ke endpoint yang unik dan stabil, menggunakan instance container stateless yang mendukung penskalaan otomatis dinamis dan penskalaan manual, juga merespons peristiwa dan fungsi.
Tugas Mengeksekusi tugas yang dapat diparalelkan yang dieksekusi secara manual, atau sesuai jadwal, dan berjalan hingga selesai.
Kumpulan pekerja Menangani workload latar belakang yang selalu aktif seperti workload dari antrean pesan (Kafka, Pub/Sub, RabbitMQ).
Instance Menjalankan workload yang berumur panjang yang memerlukan lingkungan runtime singleton.

Layanan Cloud Run

Layanan Cloud Run menyediakan infrastruktur yang Anda butuhkan untuk menjalankan endpoint HTTPS yang andal. Untuk menggunakan layanan ini, Anda harus memastikan kode Anda memproses port TCP dan menangani permintaan HTTP yang masuk.

Diagram berikut mengilustrasikan cara layanan Cloud Run menjalankan beberapa instance container untuk memproses permintaan dan peristiwa web dari klien:

Layanan Cloud Run menjalankan container untuk menyalurkan dan memproses permintaan dan peristiwa web.

Layanan standar mencakup fitur berikut:

Endpoint HTTPS yang berbeda untuk setiap layanan
Setiap layanan Cloud Run memiliki endpoint HTTPS di subdomain unik dari domain *.run.app, dan Anda juga dapat mengonfigurasi domain kustom. Cloud Run mengelola TLS untuk Anda dan mendukung WebSockets, HTTP/2 (end-to-end), dan gRPC (end-to-end).
Penskalaan otomatis berbasis permintaan yang cepat
Cloud Run meningkatkan kapasitas dengan cepat untuk menangani semua permintaan yang masuk atau untuk menangani peningkatan penggunaan CPU di luar permintaan jika setelan penagihan ditetapkan ke penagihan berbasis instance. 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.
Penskalaan manual opsional
Secara default, Cloud Run otomatis melakukan penskalaan ke lebih banyak instance untuk menangani lebih banyak traffic, tetapi Anda dapat mengganti perilaku ini dengan menggunakan penskalasian manual untuk mengontrol perilaku penskalasian.
Sistem pengelolaan traffic bawaan

Untuk mengurangi risiko men-deploy revisi baru, Cloud Run mendukung pelaksanaan peluncuran bertahap, termasuk mengarahkan traffic masuk ke revisi terbaru, melakukan rollback ke revisi sebelumnya, dan membagi traffic ke beberapa revisi secara bersamaan.

Misalnya, Anda dapat memulainya dengan menyalurkan 1% request ke revisi baru, kemudian meningkatkan persentase tersebut sambil memantau telemetri.

Layanan publik dan pribadi

Layanan Cloud Run dapat diakses lewat internet, dan Anda juga dapat membatasi akses dengan cara berikut:

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

Penskalaan hingga nol dan instance minimum

Secara default, jika penagihan ditetapkan ke berbasis instance penagihan, Cloud Run menambahkan dan menghapus instance secara otomatis untuk menangani semua permintaan yang masuk atau untuk menangani peningkatan penggunaan CPU di luar permintaan.

Penskalaan hingga nol

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).

Saat permintaan baru tiba untuk layanan tanpa instance aktif, Cloud Run akan membuat instance baru. Proses ini dapat meningkatkan waktu respons untuk permintaan awal ini, bergantung pada seberapa cepat container Anda siap menangani traffic.

Mengubah perilaku penskalaan

Anda dapat mengubah perilaku default ini menggunakan salah satu metode berikut:

  • Instance minimum: Konfigurasi Cloud Run untuk menjaga jumlah minimum instance yang aktif sehingga layanan Anda tidak sampai menghapus semua instance.
  • Penskalaan manual: Gunakan penskalaan manual untuk mempertahankan kontrol yang lebih besar atas perilaku penskalaan layanan Anda.

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. Terdapat paket gratis yang hemat biaya. Lihat harga untuk mengetahui informasi selengkapnya.

Ada dua setelan penagihan yang dapat Anda aktifkan:

Berbasis permintaan
Jika sebuah instance tidak sedang memproses request, Anda tidak akan dikenai biaya. Anda membayar biaya per request.
Berbasis instance
Anda akan dikenai biaya selama masa aktif instance. Tidak ada biaya per request.

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

Sistem file container 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 menentukan 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 melakukan flush buffer lokal dan menyimpan data lokal ke datastore eksternal.

Untuk menyimpan file secara permanen, integrasikan dengan Cloud Storage atau pasang 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 membangun REST API, GraphQL API, atau microservice pribadi 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
Cloud Run Functions 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 workload 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 Google Cloud CLI, dengan menjadwalkan tugas berulang, atau dengan menjalankannya sebagai bagian dari workflow.

Tugas array adalah cara tercepat untuk menjalankan tugas

Sebuah tugas dapat memulai satu instance untuk menjalankan kode Anda — cara yang umum untuk menjalankan sebuah skrip atau tool.

Namun, Anda juga dapat menggunakan tugas berbasis array, yang memulai banyak instance independen yang identik secara paralel. Tugas berbasis array adalah cara yang lebih cepat untuk memproses tugas yang dapat dibagi menjadi beberapa tugas independen.

Diagram berikut menunjukkan cara tugas dengan tujuh tugas memerlukan waktu lebih lama untuk dijalankan secara berurutan daripada tugas yang sama ketika empat instance dapat memproses tugas independen secara paralel:

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 memproses semuanya secara bersamaan dengan banyak instance, dengan Cloud Run mengelola 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.
Workload AI
Tugas Cloud Run dengan atau tanpa GPU yang dikonfigurasi dapat menghosting workload AI seperti inferensi batch, model penyetelan halus, dan pelatihan model.

Kumpulan pekerja Cloud Run

Kumpulan pekerja dirancang untuk workload yang tidak bergantung pada penanganan permintaan HTTP. Kumpulan pekerja menyediakan kumpulan resource komputasi yang fleksibel dan skalabel yang disesuaikan untuk pemrosesan latar belakang berbasis pull yang berkelanjutan dan non-HTTP. Karakteristik utama berikut menentukan cara kerja kumpulan pekerja:

  • Kumpulan pekerja tidak otomatis melakukan penskalaan. Lakukan penskalaan manual pada jumlah instance yang diperlukan kumpulan pekerja Cloud Run Anda untuk menangani workload-nya. Untuk memulai dan tetap aktif, workload Anda harus memiliki setidaknya satu instance. Jika Anda menetapkan instance minimum ke 0, instance pekerja tidak akan dimulai, meskipun deployment berhasil.

  • Untuk menyesuaikan instance secara dinamis berdasarkan permintaan real-time, buat autoscaler Anda sendiri. Untuk contohnya, lihat Menskalakan otomatis workload konsumen Kafka Anda.

  • Kumpulan pekerja mengelola peluncuran dengan membagi instance di antara revisi, bukan membagi traffic. Misalnya, untuk kumpulan pekerja dengan empat instance, Anda dapat mengalokasikan 25% (satu instance) ke revisi baru, dan 75% (tiga instance) ke revisi stabil.

  • Kumpulan pekerja mendukung egress dan ingress VPC Langsung, dan tidak memiliki endpoint atau URL yang di-load balance. Untuk mengetahui informasi selengkapnya tentang dukungan server metadata (MDS) dan mengambil alamat IP pribadi instance kumpulan pekerja Anda, lihat Kontrak runtime container.

  • Cloud Run hanya mengenakan biaya untuk durasi instance kumpulan pekerja Anda berjalan.

Kapan kumpulan pekerja Cloud Run harus digunakan

Kumpulan pekerja tidak memerlukan endpoint HTTP publik. Hal ini membuat jaringan Anda lebih aman dan menyederhanakan kode aplikasi Anda. Anda juga tidak perlu mengelola port untuk health check. Kasus penggunaan berikut berlaku untuk kumpulan pekerja:

  • Workload berbasis pull: men-deploy workload untuk menarik pesan dari antrean untuk penanganan. Misalnya, Konsumen Kafka, pull Pub/Sub, dan RabbitMQ.

    Diagram berikut menunjukkan kasus penggunaan untuk men-deploy kumpulan pekerja untuk workload berbasis pull:

    Workload berbasis pull kumpulan pekerja Cloud Run

    Dalam kasus penggunaan Pub/Sub, pelanggan Cloud Run yang di-autoscaling menarik pesan dari langganan Pub/Sub. Dalam kasus penggunaan Kafka, konsumen Cloud Run yang di-autoscaling menarik pesan dari topik Kafka.

  • Workload non-permintaan generik: menjalankan workload berbasis container yang tidak dimaksudkan untuk menangani permintaan masuk.

Instance Cloud Run

Instance Cloud Run dirancang untuk workload yang memerlukan runtime singleton yang stabil, berkelanjutan, dan dapat diatasi secara individual, bukan penskalaan horizontal berbasis permintaan.

Tidak seperti layanan, yang dapat memiliki beberapa instance container dan dikonfigurasi untuk penskalaan otomatis atau penskalaan manual, instance Cloud Run hanya satu instance.

Membandingkan layanan Cloud Run dan instance Cloud Run
Bandingkan layanan Cloud Run dan instance Cloud Run.

Instance Cloud Run mencakup karakteristik berikut:

  • Dapat dikelola secara individual: Anda dapat membuat, memperbarui, dan menghapus setiap instance secara individual, memulai dan menghentikan instance, serta memantau eksekusi.
  • Dapat diatasi secara individual: setiap instance diberi URL unik.
  • Berumur panjang: instance dapat berjalan tanpa gangguan selama berjam-jam atau berhari-hari, atau bahkan lebih lama jika dikonfigurasi untuk memulai ulang secara otomatis setelah update infrastruktur berkala (setiap 1 hingga 2 minggu).
  • Pembuatan cepat: instance disediakan dan berjalan dalam waktu sekitar 20 detik atau kurang.

Kapan instance Cloud Run harus digunakan

Instance Cloud Run dirancang untuk workload komputasi singleton persisten yang dirancang untuk menjalankan workload agentic dan alur kerja non-AI. Contoh kasus penggunaan mencakup:

Agen AI dan mesin alur kerja AI yang berumur panjang
Buat agen latar belakang yang berjalan lama yang menjalankan rencana eksekusi multi-langkah, menjalankan asisten coding asinkron, atau mengelola alur kerja stateful yang memerlukan lingkungan instance tunggal.
Komputasi serverless yang berumur panjang
Deploy server ringan yang selalu aktif, mirip dengan Virtual Private Server (VPS) yang berjalan terus-menerus. Hal ini ideal jika Anda menginginkan workload yang tidak memerlukan penskalaan otomatis atau menangani traffic skala web, dan Anda ingin memprioritaskan biaya yang lebih rendah dan masa pakai singleton daripada ketersediaan tinggi.
Lingkungan developer dan loop proses debug
Deploy lingkungan khusus untuk melakukan proses debug container dari jarak jauh, menyinkronkan perubahan kode, dan memecahkan masalah error tanpa penghentian container otomatis.

Google Cloud integrasi

Cloud Run berintegrasi dengan ekosistem Google Cloud yang lebih luas Google Cloud, 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 Memcached terkelola), Firestore, Spanner, Cloud Storage, dan lain-lain. Lihat Penyimpanan data untuk mengetahui daftar lengkapnya.
Logging dan error reporting
Cloud Logging otomatis menyerap log container. 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 Google Cloud library klien akan menggunakan akun layanan ini secara transparan untuk autentikasi ke Google Cloud API.
Continuous delivery
Jika menyimpan kode sumber di GitHub, Anda dapat mengonfigurasi Cloud Run untuk otomatis men-deploy commit baru.
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
Anda dapat menjadwalkan kode untuk dijalankan nanti ataupun langsung setelah mengembalikan permintaan web. Cloud Run dapat digunakan bersama Cloud Tasks untuk menyediakan eksekusi asinkron yang skalabel dan terpercaya.

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

Kode berjalan dalam image container

Meskipun tidak perlu memahami container untuk men-deploy kode ke Cloud Run, kode Anda akan selalu berjalan di instance container yang di-sandbox.

Jika Anda belum familier dengan container, berikut adalah pengenalan konsepnya secara singkat.

Membangun container image

Seperti yang ditunjukkan pada diagram, Anda menggunakan kode sumber, aset, dan dependensi library untuk membangun container image. Image ini adalah paket yang berisi semua hal yang diperlukan layanan Anda untuk dapat dijalankan, termasuk artefak build, aset, paket sistem, dan runtime secara opsional. Aplikasi yang terpaket di dalam container bersifat sangat portabel dan dapat dijalankan di mana pun container dapat berjalan. Artefak build mencakup file skrip atau biner yang dikompilasi, dan runtime mencakup runtime JavaScript Node.js atau Java Virtual Machine.

Para ahli mengapresiasi kemampuan Cloud Run yang tidak menimbulkan beban tambahan dalam menjalankan kode, dan Anda dapat menjalankan biner apa pun di Cloud Run.

Jika Anda menginginkan segalanya lebih mudah atau ingin mempercayakan aplikasi ke Google, Cloud Run terintegrasi dengan buildpack Google Cloud yang open source untuk menawarkan deployment berbasis sumber.

Langkah berikutnya