Ada satu kesalahan yang sering saya temui pada proyek web pemula: aplikasinya sudah benar, kodenya rapi, tetapi tetap tumbang di hari yang paling penting. Biasanya bukan karena programnya, melainkan karena jenis server yang dipilih tidak cocok dengan cara pengunjungnya datang.
Contoh yang paling jelas yang pernah saya tangani adalah aplikasi undian doorprize untuk sebuah acara perusahaan. Aplikasinya dibangun di shared hosting dan berjalan baik saat diuji. Begitu sekitar 400 peserta membuka halamannya di ponsel masing-masing pada waktu yang sama, seluruh domain membalas HTTP 408 (Request Timeout). Kami lalu memindahkan bagian yang diakses banyak orang itu ke platform serverless, dan masalahnya selesai. Tulisan ini membahas pelajaran di baliknya: bagaimana memilih jenis server dengan lebih tepat.
Empat pilihan tempat menjalankan website
Istilahnya banyak, jadi saya pakai perumpamaan tempat usaha.
Shared hosting seperti kios di dalam pasar. Sewanya murah dan pengelola mengurus listrik serta keamanan. Tetapi pintu masuk dan kapasitas dipakai bersama banyak kios lain, dan Anda tidak bisa mengaturnya.
VPS seperti menyewa ruko sendiri. Sumber dayanya jatah Anda, bebas ditata, tetapi pemeliharaannya tanggung jawab Anda. Kalau pembeli datang jauh melebihi perkiraan, ukuran ruko tetap sama.
Serverless atau edge (misalnya Cloudflare Workers, Vercel, AWS Lambda) seperti jaringan gerai kecil di banyak kota. Pembeli dilayani di gerai terdekat, dan gerai tambahan menyala otomatis saat ramai. Pemeliharaannya sedikit, tetapi cara berjualan harus mengikuti aturan platformnya.
Static hosting dengan CDN adalah halaman jadi yang disimpan di banyak lokasi. Sangat cepat dan murah, cocok untuk konten yang sama bagi semua pengunjung.
Yang menentukan bukan “berapa banyak”, tapi “kapan datangnya”
Ada dua hal yang sering tertukar. Trafik total adalah jumlah pengunjung dalam sehari. Konkurensi adalah jumlah pengunjung yang aktif pada detik yang sama. Perbandingan sekilas ini menunjukkan bedanya:
| Contoh | Pengunjung | Pola datang | Beban di server |
|---|---|---|---|
| Blog populer | 10.000 per hari | Tersebar sepanjang hari | Rata-rata sekitar 7 pengunjung per menit |
| Halaman undian acara | 400 orang | Serentak, dan halaman bertanya ke server tiap 2,5 detik | Sekitar 160 permintaan per detik, terus-menerus |
Pengunjung halaman undian itu 25 kali lebih sedikit dari blog, tetapi bebannya di satu waktu jauh lebih berat. Shared hosting umumnya dirancang untuk trafik total menengah dengan konkurensi rendah. Itu pas untuk blog atau company profile, dan tidak pas untuk lonjakan serempak.
Kenapa serverless lebih cocok untuk lonjakan serempak
Perbedaannya ada pada cara permintaan dilayani. Bayangkan satu permintaan sebagai satu pengunjung yang masuk ke toko.
Di shared hosting, semua pengunjung masuk lewat satu pintu di satu server yang dipakai bersama akun lain. Pintu itu punya batas: jumlah koneksi yang boleh terbuka bersamaan dan jumlah proses yang boleh berjalan, dan batas ini diatur penyedia hosting, bukan oleh Anda. Selama pengunjung datang bergantian, semuanya lancar. Begitu ratusan orang tiba bersamaan, sebagian harus antre di luar. Kalau antreannya terlalu lama atau pintunya penuh, mereka ditolak dan melihat error seperti 408 atau 503. Servernya sendiri bisa saja masih longgar, tetapi pintunya sudah penuh.
Di serverless, tidak ada satu pintu yang dijaga. Setiap permintaan ditangani oleh potongan kode kecil yang dijalankan platform di pusat data yang dekat dengan pengunjung. Kalau 400 permintaan datang bersamaan, platform menjalankan banyak salinan kode itu secara paralel dan otomatis, lalu mematikannya saat sepi. Anda tidak menentukan jumlah mesin, tidak mengatur batas koneksi, dan tidak menyewa kapasitas untuk jaga-jaga. Ibaratnya, bukan satu kasir yang dipercepat, melainkan kasir baru yang muncul sesuai jumlah antrean.
Ada satu hal lagi yang membantu: pada aplikasi yang jawabannya sama untuk semua orang, seperti daftar pemenang undian tadi, jawaban itu bisa disimpan sementara di jaringan platform. Ratusan permintaan lalu dijawab dari simpanan itu tanpa menyentuh database sama sekali.
Perlu diingat bahwa serverless bukan sihir. Paket gratis punya batas jumlah permintaan per hari, dan kalau setiap permintaan tetap memanggil database yang berat, database itulah yang berikutnya jadi penghambat. Serverless cocok bila tugas per permintaannya kecil dan seragam, dan kuncinya adalah merancang aplikasinya sesuai pola itu.
Empat pertanyaan sebelum memilih jenis server
1. Apakah banyak orang akan datang bersamaan? Acara, pendaftaran dengan kuota, flash sale, pengumuman hasil, siaran langsung. Kalau ya, jangan andalkan shared hosting untuk bagian yang dibuka serentak itu.
2. Apakah jawaban untuk semua orang sama? Pada contoh undian tadi, semua ponsel menanyakan hal yang persis sama, yaitu daftar pemenang saat ini. Jawaban yang sama untuk ratusan orang cocok disimpan sementara (cache) atau dilayani dari jaringan yang tersebar.
3. Mana bagian yang banyak dibaca dan mana yang jarang ditulis? Aplikasi itu punya satu admin yang menulis dan ratusan orang yang hanya membaca. Bagian membaca yang ramai sebaiknya ditaruh di tempat yang kuat melayani banyak pembaca, sementara bagian admin boleh tetap sederhana.
4. Seberapa besar kendali dan waktu pemeliharaan yang Anda punya? Shared hosting mudah tetapi kendalinya sedikit. VPS fleksibel tetapi Anda yang mengurus server. Serverless berada di tengah. Tidak ada yang paling benar, hanya yang paling cocok dengan situasi Anda.
Ringkasan: jenis mana untuk kebutuhan apa
| Jenis | Cocok untuk | Kurang cocok untuk |
|---|---|---|
| Shared hosting | Blog, company profile, toko kecil, aplikasi internal dengan pengguna sedikit | Lonjakan serempak |
| VPS | Aplikasi dengan kebutuhan khusus dan trafik stabil | Lonjakan jauh melebihi kapasitas, atau bila tidak ada waktu mengurus server |
| Serverless / edge | API kecil, halaman yang dibaca banyak orang sekaligus | Aplikasi besar yang bergantung pada fitur server tradisional |
| Static + CDN | Landing page, dokumentasi, portofolio | Konten yang berbeda untuk setiap pengunjung |
Kebiasaan yang berguna di jenis hosting apa pun
- Longgarkan interval polling. 6 sampai 8 detik cukup untuk informasi yang bukan data keuangan.
- Beri variasi acak kecil pada interval supaya semua perangkat tidak menembak di detik yang sama.
- Simpan sementara jawaban yang sama untuk semua orang.
- Cek halaman Resource Usage di panel hosting sebelum hari penting.
- Uji dengan banyak pengguna sekaligus sebelum hari H, dan siapkan jalur cadangan yang terpisah dari sistem utama.
Penutup
Shared hosting bukan pilihan yang buruk. Untuk sebagian besar situs, ia tepat dan murah. Yang sering terlewat adalah pertanyaan sebelum memilih: siapa yang akan datang, kapan mereka datang, dan apa yang mereka minta. Jawaban atas tiga pertanyaan itu biasanya sudah cukup untuk menunjukkan jenis server mana yang masuk akal.