Skip to main content
BlogCloud

PaaS vs VPS di Indonesia: Rincian Biaya IDR yang Jujur

PaaS managed Indonesia dibanding VPS Jakarta pada 2 vCPU dan 2 GB yang sama dalam rupiah nyata, plus kolom yang selalu dilewatkan: patching, TLS, backup yang diuji restore, monitoring, dan on-call, dihitung dalam jam.

Matthews Wong

Software Engineer

September 202612 menit baca
PaaS vs VPS di Indonesia: Rincian Biaya IDR yang Jujur

Foto oleh Jonny-mt via Wikimedia Commons (CC BY 3.0)

Ringkasan Utama

Membandingkan PaaS managed Indonesia dengan VPS Jakarta hanya dari invoice adalah perbandingan yang salah. Pada spesifikasi sama 2 vCPU dan 2 GB, tier Micro Helipod tercantum Rp 250,500 per bulan melawan sekitar Rp 60,000 untuk milik saya, tetapi invoice VPS tidak mencakup patching, renewal TLS, backup yang diuji, monitoring, dan on-call, sekitar empat jam per bulan.

Pada 28 Juli 2026 monitoring saya sendiri memberi tahu bahwa root disk di box yang melayani situs ini sudah melewati 85 persen. Perbaikannya hanya dua perintah prune yang tidak perlu saya cari lagi, dan justru itu bagian yang tidak nyaman: saya sudah menghafalnya. VPS itu biayanya sekitar enam puluh ribu rupiah per bulan. Platform managed yang terus saya bandingkan dengannya tercantum empat kali lebih mahal, dan sampai pagi itu saya masih memperlakukan dua angka tersebut sebagai keseluruhan perbandingan.

Tulisan ini menaruh angka rupiah yang nyata bersebelahan pada CPU dan RAM yang sama, tier IDR yang dipublikasikan Helipod melawan VPS Jakarta yang benar-benar saya administrasikan, lalu menambahkan kolom yang selalu dihilangkan dari perbandingan harga: pekerjaannya. Saya tidak mengubah jam-jam itu menjadi uang, karena nilai tukar antara rupiah dan hari Sabtu Anda adalah urusan Anda, bukan saya. Jam-jam itu dihitung sebagai jam per bulan dan interupsi per kuartal, dari satu box yang saya jalankan dan satu halaman harga yang saya baca.

Invoice lawan invoice adalah perbandingan yang salah

Setiap perdebatan PaaS versus VPS yang saya baca berpegang pada invoice bulanan, dan invoice bulanan adalah satu-satunya angka di mana VPS tidak mungkin kalah. Tier Micro Helipod, 2 vCPU dengan RAM 2 GB dan storage 30 GB, tercantum Rp 250,500 per bulan, dan menunjukkan Rp 125,250 dengan promosi 50 persen pada hari saya membuka halaman harganya. Box saya sendiri 2 vCPU dan 2 GB dengan SSD 40 GB, di hardware Tencent region Jakarta, sekitar Rp 60,000. Selisihnya empat kali pada harga normal dan sekitar dua kali selama promosi berjalan.

Padahal invoice adalah tagihan untuk kapasitas, dan kapasitas justru separuh yang murah dari menjalankan software. Separuh yang mahal adalah rangkaian pekerjaan tetap yang menjaga kapasitas itu tetap melayani traffic: patching operating system, renewal certificate, mengambil backup dan membuktikan backup itu bisa direstore, memasang monitoring yang memberi tahu ketika ada yang rusak, dan menjawab alert ketika itu terjadi. Di sisi managed, semuanya sudah termasuk dalam Rp 250,500. Di sisi VPS, semuanya masuk ke dalam minggu Anda, dan itulah sebabnya kolom yang lebih murah adalah kolom yang barisnya hilang.

2 vCPU dan 2 GB yang sama, dihargai dua kali

Inilah pasangan dengan spesifikasi yang disamakan. Kedua kolom 2 vCPU dan 2 GB; spesifikasi kiri berasal dari halaman harga Helipod sendiri dan yang kanan dari box yang saya jalankan. Dua baris pertama adalah perbandingan yang biasa orang buat. Tujuh baris di bawahnya adalah perbandingan yang sesungguhnya menentukan jawabannya.

Yang Anda bandingkanTier PaaS managed, 2 vCPU / 2 GBVPS Jakarta yang saya kelola
Spesifikasi yang disamakan2 vCPU, RAM 2 GB, storage 30 GB2 vCPU, RAM 2 GB, SSD 40 GB
Invoice bulananRp 250,500 harga normal, Rp 125,250 dengan promosi 50 persen saat saya cekSekitar Rp 60,000, ditagih dalam rupiah, masih ada tier entry di bawahnya
Membawa satu release ke productiongit push; build engine mendeteksi framework dan membuat Dockerfile sendiriDockerfile saya, registry saya, workflow Actions saya, step SSH saya
Certificate TLSCustom domain plus SSL otomatis, disebut cukup satu klikcertbot dan vhost nginx yang saya tulis, plus timer renewal yang saya periksa sendiri
Menghadapi lonjakan trafficHPA Kubernetes menyesuaikan replica terhadap target CPU, sudah termasuk paketResize box lalu reboot, atau diam saja dan melayani lonjakan dengan lambat
Akses shellTanpa SSH; terminal browser ke pod yang berjalan dan log stream langsungRoot penuh, yang sekaligus jadi alasan memilihnya dan alasan ia memakan jam
Monitoring dan alertingLog pod dialirkan ke browser oleh platformPrometheus, node-exporter, cAdvisor, Grafana, dan Uptime Kuma, saya pasang dan saya upgrade
Siapa yang reboot untuk patch kernelOrang yang tidak akan pernah Anda temuiAnda, pada waktu yang Anda pilih atau waktu yang tidak Anda pilih
Kebersihan diskStorage adalah satu baris dalam paketRoot 40 GB yang termakan sekitar 1.4 GB per release, di-prune manual

Baca tabel itu dari atas ke bawah dan kolom harganya berbalik. Baris satu dan dua menguntungkan VPS dua sampai empat kali. Baris tiga sampai sembilan seluruhnya pekerjaan, dan tidak satu pun diberi harga di kolom kanan, dan itu bukan berarti gratis. Artinya hanya tagihannya datang dalam mata uang yang tidak dicatat pembukuan Anda.

Apa yang sebenarnya dibeli invoice managed

Tiga hal di invoice itu layak disebut dengan tepat, karena justru itu yang sering dianggap sekadar kenyamanan. Build engine menghilangkan Dockerfile: Helipack mendeteksi framework, dengan Next.js, Laravel, Django, FastAPI, Rails, NestJS, dan Astro di antara yang tercantum, lalu membuat image-nya sendiri. SSL otomatis menghapus certbot sepenuhnya dari hidup Anda. Dan autoscaling di situ bukan kosakata marketing: itu Horizontal Pod Autoscaler Kubernetes, yang menyesuaikan jumlah replica sebuah workload mengikuti target CPU, hal yang berbeda dan lebih berguna daripada me-resize satu box.

# --- Managed PaaS: the entire deploy ---
git push origin main
# The build engine detects the framework and generates the Dockerfile itself.
# Custom domain and TLS are a setting, not a task.


# --- The same release, on a box I own: Actions -> GHCR -> SSH ---
docker build -t ghcr.io/OWNER/app:$GITHUB_SHA .
docker push ghcr.io/OWNER/app:$GITHUB_SHA
ssh deploy@my-vps 'cd /opt/app && docker compose pull && docker compose up -d'

# None of the following is in that script, on the invoice, or in anyone's
# estimate: the nginx vhost that terminates TLS, the certbot timer that
# renews it, the alert rule that notices when it did not, and the 1.4 GB
# image this release just left behind on a 40 GB root disk.

Pertukaran dalam snippet itu nyata di kedua arah. Anda kehilangan shell: diagnosa berubah menjadi log stream langsung dan terminal browser ke dalam pod, yang sungguh cukup sampai detik Anda butuh strace pada proses yang macet, sebuah kernel module, atau menyalin 40 GB dari sebuah disk. Sebagai gantinya Anda dapat deploy yang tidak punya host di dalamnya, jadi tidak ada host untuk dilupakan.

Detail harga yang paling penting bagi pembaca Indonesia bukan angka rupiahnya, melainkan kanal pembayarannya: QRIS dan bank transfer, tanpa perlu credit card. Saya pernah melihat deploy tertahan karena kartu ditolak saat renewal di provider luar, dan membayar lewat kanal yang sudah dimiliki setiap orang Indonesia menghapus satu kelas outage yang sama sekali tidak berhubungan dengan engineering.

Band yang tidak bisa ditunjukkan kolom harga

Ini hitungan jujur saya untuk satu box, dan saya ingin tegas soal jenis angkanya: ini estimasi orang pertama dari satu VPS yang saya kelola, bukan benchmark. Patching memakan sekitar satu jam per bulan, karena unattended-upgrades memasang paket sendiri tetapi kernel baru menganggur sampai saya reboot, dan saya reboot sambil menungguinya. TLS memakan sekitar setengah jam, hampir seluruhnya untuk memastikan bahwa timer yang tidak bisa saya lihat benar-benar jalan. Backup memakan sekitar dua jam, dan hampir semuanya untuk restore drill, bukan untuk dump-nya. Monitoring memakan sekitar satu jam, karena Prometheus, node-exporter, cAdvisor, Grafana, dan Uptime Kuma adalah lima service tambahan dengan upgrade sendiri dan cara mati masing-masing.

Totalnya sekitar empat setengah jam kerja terjadwal per bulan, ditambah dua sampai tiga interupsi tak terjadwal per kuartal, dan interupsi tidak pernah melihat kalender. Kalikan empat setengah dengan nilai satu jam Anda sendiri dan Anda punya jawabannya. Saya sengaja tidak melakukan perkalian itu, karena angka hasilnya bersifat pribadi dan hitungannya adalah satu-satunya bagian yang bisa saya serahkan.

Tumpukan biaya enam band untuk VPS yang dikelola sendiri, dengan invoice bulanan sebagai band teratas bertanda nol jam, lalu patching OS dan kernel, renewal TLS, backup dengan restore drill, monitoring yang dipasang sendiri, dan rotasi on-call, masing-masing bertanda jam per bulan atau malam per kuartal yang dimakannya.
Band teratas adalah satu-satunya yang pernah ditampilkan perbandingan harga, dan sekaligus satu-satunya yang tidak memakan waktu sama sekali; turunkan mata Anda ke deretan tag-nya dan keputusannya berhenti soal rupiah.

Sebelum memutuskan ke arah mana pun, periksa baris storage pada paket, bukan CPU-nya. Batasan yang benar-benar saya tabrak adalah root 40 GB, bukan RAM 2 GB, dan tier managed yang setara hanya membawa 30 GB, sepuluh lebih sedikit dari box yang jadi pesaingnya. Storage adalah tempat perbandingan CPU yang katanya setara diam-diam berhenti setara.

Dua kegagalan senyap yang mengajari saya soal jam

Dua pelajaran VPS yang mahal bagi saya keduanya kegagalan senyap, dan justru kategori itulah yang paling bisa dihapus platform managed. Yang pertama renewal certificate. Certbot memasang timer-nya sendiri lalu tidak pernah menyebut dirinya lagi, sehingga kondisi sehat dan kondisi rusak tampak sama dari luar selama berminggu-minggu. Sejak Certbot 4.0.0 sebuah certificate direnew ketika sisa masa berlakunya kurang dari sepertiga, sementara sebelumnya ambangnya tetap 30 hari, jadi pada certificate 90 hari default Let's Encrypt ada sekitar sebulan masa tenggang yang bisa habis tanpa ada apa pun di box yang mengeluh.

# Is the renewal timer alive? The certificate cannot tell you.
systemctl list-timers --all | grep -i certbot

# Safe to run any day: it hits Let's Encrypt's STAGING server, so it proves
# the whole plumbing (timer, plugin, webroot, reload hook) without spending
# a rate limit or touching the live certificate.
sudo certbot renew --dry-run

# Since Certbot 4.0.0 a certificate is due for renewal when less than 1/3 of
# its lifetime remains; before 4.0.0 the threshold was a fixed 30 days. On
# Let's Encrypt's default 90-day certificate that is about 30 days of grace.
#
# Wrong: a green padlock today, so the timer must have fired.
# Right: an external check that alerts on DAYS REMAINING, not on HTTP 200 --
# because HTTP 200 is exactly what you get for all 30 days of the grace.

Yang kedua disk, dan ini yang sekarang selalu saya peringatkan ke setiap orang yang self-host. Pipeline deploy saya menarik image baru sekitar 1.4 GB per release dan tidak melakukan prune apa pun, di root 40 GB. Hitungannya tidak kenal ampun: dua puluh release berarti 28 GB image untuk satu container yang berjalan. Yang membuatnya lebih parah, perintah yang paling jelas justru tidak berguna, karena image prune biasa hanya menghapus image dangling dan semua image di box itu masih punya tag.

# Disk alert at 85% on a 40 GB root. First, where did it go:
docker system df

# Wrong: this frees almost nothing here. Plain image prune removes only
# DANGLING images, and every stale image on this box is still tagged with
# the release SHA that pushed it.
sudo docker image prune

# Right: -a removes every image with no container attached, and the build
# cache is a separate pool -- "docker system prune" leaves non-dangling
# cache alone, and never removes volumes at all without --volumes.
sudo docker image prune -af
sudo docker builder prune -f

# Outcome: 75% -> 57%, about 7.6 GB back. 3.4 GB of that was build cache and
# 4.3 GB was four stale images of my own app -- one per release that cleaned
# up after itself exactly as well as I had told it to, which was not at all.

Jangan pernah menghitung backup yang belum pernah Anda restore. Menulis dump-nya lima belas menit scripting; merestore-nya ke box kosong dan memastikan aplikasi benar-benar hidup di atasnya butuh satu malam, dan hanya versi itu yang berarti. Restore drill adalah pos yang paling sering dilupakan dalam estimasi biaya VPS, dan satu-satunya yang ketiadaannya mengubah sore yang buruk menjadi bisnis yang hilang.

Di mana VPS menang jelas

Tulisan ini bukan pembelaan untuk managed hosting. Ada workload yang jawabannya memang box yang Anda kelola sendiri, dan bentuknya punya satu kesamaan: yang dibutuhkan resource, bukan request.

  • Batch job yang berjalan lama. Batas per pod dan autoscaling berbasis CPU dirancang untuk traffic request; import delapan jam yang menahan satu core butuh sebuah mesin, bukan jumlah replica.
  • Disk persisten yang besar. Storage paket dirancang untuk satu aplikasi, bukan untuk media library atau volume Postgres yang tumbuh setiap bulan, dan menambah disk di VPS hanya satu baris biaya, bukan lompat tier.
  • Apa pun yang butuh root. Kernel module, sysctl khusus, strace pada proses yang sedang jalan, atau paket sistem yang belum pernah dikenal build engine.
  • Biaya yang bisa diprediksi pada resource besar. Selisihnya melebar seiring ukuran, bukan menyempit, karena kapasitas managed yang setara tetap jadi kelipatan dari kapasitas mentah sampai ke tier tertinggi.
  • Beberapa service yang tidak berhubungan di satu box. Uptime Kuma, Grafana, dan Prometheus berbagi VPS saya tanpa tambahan invoice; di platform per aplikasi masing-masing jadi deployment sendiri dengan barisnya sendiri.

Di mana PaaS menang jelas

Tim satu atau dua orang tanpa minat mengurus operations adalah kasus paling jelas, dan ini soal bandwidth, bukan soal skill. Empat setengah jam itu tidak sulit; ia hanya jam yang tidak akan pernah diluangkan, dan box yang tidak dirawat bukanlah box yang lebih murah. Kalau tidak ada seorang pun di tim yang mau memiliki sebuah Linux host, kelipatan harga managed itu adalah biaya pekerjaan yang dikerjakan orang yang memang mendaftar untuk itu.

Kasus kedua adalah traffic yang naik-turun tajam, karena replica horizontal terhadap target CPU merespons lonjakan dengan cara yang tidak akan pernah bisa dilakukan resize lalu reboot satu box. Kasus ketiga adalah environment: development, staging, dan production dengan config serta secret terpisah adalah satu hari kerja per environment di VPS dan hanya sebuah setting di platform, dan hal yang sama berlaku untuk role tim seperti owner, admin, dan viewer. Kalau Anda butuh tiga environment, tier managed itu sedang bersaing dengan tiga VPS dan tiga kali jam-jam di atas.

Tiga panel yang menyebutkan workload di mana VPS jelas menang, di mana kedua model sama saja, dan di mana platform managed jelas menang
Kolom tengah adalah tempat perdebatan sebenarnya, dan penentunya adalah kesediaan mengurus operations, bukan angka di tagihan.

Titik silangnya ukuran tim dan selera operations, bukan mana yang lebih baik

Jadi katakan dengan jujur: tidak ada pemenang, yang ada titik silang, dan titik itu terletak pada ukuran tim serta selera mengurus operations, bukan pada harga mana pun. Di bawah kira-kira satu orang yang benar-benar menikmati menjalankan Linux, tier managed itu murah pada angka apa pun yang mampu Anda bayar. Di atasnya, dengan stack monitoring yang sudah Anda sukai dan runbook yang sudah Anda percayai, VPS jadi murah dalam dua mata uang sekaligus, karena jam yang Anda pakai adalah jam yang toh akan Anda pakai.

Yang saya lakukan dalam praktik: production untuk bisnis orang lain saya taruh di tempat beban operasionalnya jatuh ke orang yang menerimanya, dan barang-barang saya sendiri hidup di box itu. Itu bukan klaim bahwa box lebih baik. Itu klaim bahwa saya adalah orang yang menghafal dua perintah prune tadi, dan hafalan itu baru jadi aset selama masih dipakai.

Aturan yang saya bawa keluar dari ini: jangan pernah membandingkan tier PaaS dengan tier VPS hanya dari harga. Bandingkan invoice ditambah hitungan jam yang jujur, dan tulis hitungan jamnya sebelum Anda punya pendapat, karena setelah itu ia akan menyesuaikan diri. Kalau jamnya mendekati nol karena Anda menikmatinya, VPS memang beberapa kali lebih murah. Kalau itu jam yang sebenarnya tidak ingin Anda keluarkan, tier managed tidak pernah jadi biaya premium; ia adalah harga pekerjaan itu, yang dirinci.

FAQ

Pertanyaan Umum

Jawaban singkat untuk pertanyaan yang paling sering diajukan pembaca tentang topik ini.

Apakah VPS benar-benar lebih murah daripada PaaS managed di Indonesia?

Dari sisi invoice, ya, dan selisihnya lebar: tier setara 2 vCPU dan 2 GB tercantum Rp 250,500 per bulan di Helipod melawan sekitar Rp 60,000 untuk VPS Jakarta yang saya jalankan. Tetapi invoice bukan keseluruhan biaya, karena harga VPS tidak mencakup patching OS, renewal TLS, backup yang diuji restore, monitoring, dan on-call. Di box saya sendiri semua itu berjumlah sekitar empat setengah jam per bulan plus dua atau tiga interupsi tak terjadwal per kuartal.

Berapa jam per bulan sebenarnya biaya merawat sebuah VPS?

Untuk satu box production kecil yang saya kelola, sekitar empat setengah jam kerja terjadwal per bulan: kira-kira satu jam untuk patching dan reboot kernel, setengah jam memastikan renewal TLS, dua jam untuk backup dan restore drill, dan satu jam untuk stack monitoring. Di atas itu masih ada dua sampai tiga interupsi tak terjadwal per kuartal. Ini angka orang pertama dari satu mesin, bukan benchmark, dan milik Anda akan berbeda tergantung stack yang dijalankan.

Kapan tim kecil sebaiknya memilih PaaS managed dibanding VPS?

Ketika tidak ada seorang pun di tim yang mau memiliki sebuah Linux host, ketika traffic naik-turun tajam sehingga butuh scaling horizontal, atau ketika Anda butuh beberapa environment dengan config dan secret terpisah. VPS yang tidak dirawat bukan VPS yang lebih murah, jadi kalau jam perawatannya toh tidak akan diluangkan, tier managed sedang membeli pekerjaan itu, bukan menagih biaya premium. Banyak environment juga mengalikan sisi VPS dari perbandingan ini.

Apa saja yang tidak termasuk dalam invoice VPS?

Semuanya kecuali kapasitas. Invoice membeli CPU, RAM, disk, dan bandwidth; ia tidak membeli patching operating system dan reboot kernel, timer certbot beserta kegagalan senyapnya, backup yang harus Anda ambil sekaligus uji restore, monitoring dan alerting yang Anda pasang sendiri, atau orang yang menjawab alert jam tiga pagi di hari libur nasional. Itulah baris-baris yang dibiarkan kosong oleh perbandingan harga.

Bisakah saya membayar hosting PaaS Indonesia tanpa credit card?

Bisa. Halaman harga Helipod mencantumkan QRIS dan bank transfer tanpa perlu credit card, dan menagih dalam rupiah, bukan dolar. Itu menghapus dua failure mode nyata bagi developer Indonesia: kartu ditolak saat renewal di provider luar, dan kejutan nilai tukar pada tagihan bulanan.