Google Cloud Managed Services vs Raw Compute: Kapan Pakai Yang Mana

Foto oleh Unsplash

Foto oleh Unsplash
Google Cloud menawarkan begitu banyak layanan compute dan data sehingga memilih di antaranya terasa seperti jebakan. Cloud Run, GKE, App Engine, Compute Engine, Cloud Functions—ditambah lapisan terpisah dari managed data services. Setelah mengelola infrastruktur untuk project-project Commsult Indonesia di GCP selama beberapa tahun, saya telah mengembangkan mental model sederhana untuk layanan mana yang cocok di mana.
Setiap layanan compute GCP berada dalam spektrum antara kontrol maksimal (raw VM) dan kenyamanan maksimal (fully managed). Trade-off-nya nyata: lebih banyak kontrol berarti lebih banyak beban operasional. Lebih banyak kenyamanan berarti menerima batasan—runtime tetap, batas timeout request, cold start, vendor lock-in.
Cloud Run adalah tempat saya memulai setiap API HTTP atau web app baru. Ini adalah platform container fully managed: berikan image Docker, platform menjalankannya, menskalakan ke nol saat idle, dan scale up sesuai permintaan. Penagihan per request membuat biaya sangat efisien untuk API dengan traffic yang bervariasi.
Raw Compute Engine VM cocok ketika Anda membutuhkan kontrol level OS: modul kernel khusus, akses raw socket, workload GPU, atau proses background persisten. Saya juga menggunakan GCE ketika perlu menjalankan Docker Swarm di beberapa VM untuk tooling internal.
GCP Service Decision Tree
─────────────────────────
Need to run code?
│
▼
┌─────────────────────────────────────────┐
│ Do you need OS-level control? │
│ (custom kernel, raw sockets, GPU, etc.) │
└───────┬──────────────────┬──────────────┘
│ YES │ NO
▼ ▼
Compute Engine Stateless HTTP?
(raw VM, GCE) │
┌─────┴──────┐
│ YES │ NO
▼ ▼
Cloud Run Need containers?
(fully │
managed) ┌──┴───┐
│ YES │ NO
▼ ▼
GKE App Engine
(k8s) (PaaS, flex/std)
Need managed data?
├── Relational → Cloud SQL (Postgres/MySQL)
├── Serverless → Firestore / Spanner
├── Cache → Memorystore (Redis)
└── Object → Cloud Storage (GCS)Gunakan 'gcloud run services describe SERVICE --format=json | jq .status.traffic' untuk memeriksa pembagian traffic saat ini di semua revisi. Berguna saat melakukan rollout bertahap.
Di lapisan data, kalkulasinya lebih sederhana: kecuali ada alasan yang sangat spesifik untuk self-host database, gunakan Cloud SQL untuk Postgres atau MySQL. Cloud SQL menangani backup, point-in-time recovery, update versi minor otomatis, dan failover high-availability.
Ketika Cloud Run terhubung ke Cloud SQL, pendekatan yang direkomendasikan adalah Cloud SQL Auth Proxy, yang menangani autentikasi IAM dan terminasi TLS tanpa mengekspos database ke IP publik. String koneksi menggunakan path Unix socket alih-alih hostname.
# Deploy NestJS API to Cloud Run (managed, scale-to-zero)
gcloud run deploy my-api --image gcr.io/my-project/my-api:latest --platform managed --region asia-southeast2 --allow-unauthenticated --set-env-vars DATABASE_URL=$$DATABASE_URL --min-instances 0 --max-instances 10 --memory 512Mi --cpu 1
# Connect to Cloud SQL without a public IP (via Cloud SQL Auth Proxy)
gcloud run services update my-api --add-cloudsql-instances my-project:asia-southeast2:my-postgres --set-env-vars "DB_HOST=/cloudsql/my-project:asia-southeast2:my-postgres"
# Compare: raw Compute Engine VM for same workload
gcloud compute instances create my-api-vm --machine-type e2-medium --image-family debian-12 --image-project debian-cloud --zone asia-southeast2-a --tags http-server,https-server
# Then manually: install Node, set up systemd, configure nginx reverse proxy,
# handle SSL, set up monitoring, auto-start on reboot...GKE adalah pilihan tepat ketika Anda membutuhkan fitur spesifik Kubernetes: custom operator, StatefulSet, jaringan antar-layanan yang kompleks dengan service mesh, atau portabilitas multi-cloud. GKE menambah kompleksitas operasional yang substansial.
Scale-to-zero Cloud Run menghemat biaya untuk dev dan staging, tapi untuk API produksi dengan traffic stabil, minimum 1 instance mencegah cold start—yang dapat menambah 2-4 detik latensi. Set --min-instances 1 untuk endpoint produksi yang sensitif terhadap latensi.
Sistem ERP yang saya bantu kelola di Commsult Indonesia berjalan di: Cloud Run untuk NestJS API, Cloud SQL untuk Postgres 16, Memorystore untuk Redis, Cloud Storage untuk dokumen dan PDF, serta Compute Engine VM untuk monitoring Prometheus/Grafana internal.
Decision tree-nya sederhana: mulai dengan Cloud Run untuk workload HTTP apa pun. Jika butuh kontrol OS atau GPU, gunakan Compute Engine. Jika butuh fitur spesifik Kubernetes, gunakan GKE. Untuk data: Cloud SQL untuk database, Memorystore untuk Redis, Cloud Storage untuk objek.
Sumber & Bacaan Lanjutan