Stateless vs Stateful: Saat Server Memilih untuk Lupa Demi Bisa Bertahan
Fundamentals
Ditulis 12 June 2025 Baca ± 6 menit
Suatu siang di meja kerja yang mulai berantakan oleh kabel charger dan
sticky note warna-warni, seorang developer junior melirik ke arah seniornya
sambil garuk kepala.
Di layar laptopnya, tab Postman terbuka dengan error 401 berkali-kali. Dia
menghela napas, lalu nanya pelan:
“Bang, kenapa sih REST itu harus stateless?
Kan lebih gampang kalau server bisa inget kita terus… Gak perlu bawa-bawa data
tiap request.”
Seniornya menoleh, masih dengan tangan di keyboard. Dia tersenyum, seperti udah sering banget dengar pertanyaan ini.
“Pernah ngobrol sama orang yang selalu inget semua obrolan kalian
sebelumnya?”
“Rasanya enak, kan? Nyambung terus. Tapi coba bayangin kalau dia harus ngobrol
sama seribu orang sekaligus dan dituntut inget semuanya.
Bisa-bisa dia ngebul kepalanya.”
Junior itu ketawa kecil, mulai nangkep maksudnya.
“Nah, server juga gitu. Kalau disuruh nyimpen ‘ingatan’ dari ribuan client
sekaligus, dia bakal kerja terlalu keras.
Makanya, REST milih jadi stateless. Setiap permintaan harus berdiri sendiri.
Gak perlu simpen memori masa lalu.”
Dan dari obrolan receh itu, dimulailah pemahaman baru.
Bahwa REST bukan tentang server yang pelupa,
tapi tentang server yang memilih untuk fokus ke tugasnya saat ini—bukan
masa lalu siapa pun.
Apa Itu Stateless?
Di dunia REST API, ada satu prinsip yang sering bikin developer baru
mengernyit:
semua request harus stateless.
Tapi… apa maksudnya stateless?
Sederhananya, stateless berarti setiap permintaan (request)
dari client ke server harus berdiri sendiri.
Server tidak diizinkan mengingat apa pun dari request sebelumnya.
Jadi kalau kamu baru saja login dan ingin ambil data user, kamu harus
menyertakan kembali semua informasi yang dibutuhkan—biasanya token
atau kredensial lainnya.
“Tapi kan aku udah login barusan?”
Server REST akan jawab:
“Maaf, saya gak ingat. Kamu siapa tadi?”
Kedengarannya agak nyebelin, ya?
Tapi justru karena sifatnya ini, server REST jadi lebih ringan dan
cepat. Dia gak punya beban “ingatan”.
Gak peduli kamu siapa, berapa banyak yang akses, atau apa yang kamu lakukan
sebelumnya—setiap permintaan diperlakukan sama, adil, dan fokus pada data yang
dikirim saat itu.
Dan karena gak simpan ‘kenangan’, REST jadi:
- Lebih cepat merespons,
- Lebih mudah di-scale, karena gak harus memelihara sesi,
- Lebih fleksibel untuk dipindah ke server manapun, tanpa perlu bawa “koper sesi”.
Dengan kata lain, REST adalah tipe server yang hidup di masa sekarang.
Setiap request adalah awal yang baru.
Lalu, Apa Itu Stateful?
Nah, kalau stateless itu kayak server yang “move on”, maka stateful
adalah kebalikannya.
Server yang ingat kamu.
Dalam arsitektur stateful, server menyimpan informasi tentang interaksi sebelumnya:
- Siapa kamu,
- Sudah login atau belum,
- Lagi buka halaman apa,
- Bahkan kadang apa yang kamu klik terakhir.
Informasi itu disebut state, dan itu tersimpan di memori
server.
Setiap kali kamu kirim request baru, server akan mempertimbangkan
"riwayat" kamu sebelum memberikan respon.
Ini penting banget buat aplikasi-aplikasi yang butuh konteks terus-menerus, seperti:
- Chat real-time
- Game multiplayer
- Video conference
- Dashboard yang terus update
Server harus tahu siapa yang ada di ruang chat mana, siapa yang nyerang
siapa di game, dan siapa yang lagi ngomong di panggilan video.
Kalau server lupa? Bisa kacau. Kamu bisa nyasar ke ruang obrolan orang lain,
atau game kamu ngulang dari awal.
Jadi meskipun lebih berat, stateful penting untuk interaksi yang
bersifat terus-menerus dan saling tergantung.
Ini server yang kayak teman baik: ingat kamu, ingat ceritamu, dan siap lanjutin
dari obrolan sebelumnya.
Gimana Biar Lebih Kebayang? Nih Ibaratnya…
Setelah tau bedanya stateless dan stateful secara teknis, sekarang mari kita
turunin ke analogi yang lebih sehari-hari.
Karena kadang, kode itu lebih gampang dimengerti lewat kehidupan nyata.
Stateless itu seperti kamu datang ke kantor layanan publik
Setiap kali kamu datang, kamu selalu bawa semua dokumen lengkap:
KTP, formulir, fotokopi ini-itu.
Petugasnya gak peduli kamu udah ke sini kemarin.
Dia cuma liat apa yang kamu kasih hari ini.
- Gak ada basa-basi.
- Gak perlu ingat kamu siapa.
- Tapi prosesnya bisa cepat, karena jelas dan langsung to the point.
Inilah cara kerja REST API: setiap permintaan lengkap, tanpa bergantung pada
sesi sebelumnya.
Petugasnya (alias server) jadi bisa melayani siapa pun—tanpa perlu repot
mengingat siapa-siapa.
Stateful itu kayak kamu punya langganan di sebuah klinik
Begitu kamu masuk, resepsionis langsung tahu:
“Oh, Mas Raka ya? Terakhir kontrol dua minggu lalu, keluhannya masih batuk ringan?”
Semua catatanmu ada di sistem.
Kamu gak perlu ulang cerita dari awal. Gak perlu isi form ulang. Semuanya berlanjut
dari sebelumnya.
Inilah stateful.
Cocok untuk interaksi panjang, berkelanjutan, yang butuh keterhubungan
emosional antar request.
Jadi Mana yang Lebih Baik?
Gak ada jawaban mutlak.
Stateless dan stateful bukan soal mana yang lebih canggih,
tapi mana yang lebih cocok.
REST API? Pilih stateless.
Chat app atau game online? Harus stateful.
Mau sistem scalable dan gampang dipindah server? Stateless jawabannya.
Butuh interaksi panjang dan personal? Stateful lebih pas.
Yang penting: kamu tahu kapan harus pakai yang mana.
Kapan Harus Gunakan yang Mana?
Kebutuhan |
Pilihan Ideal |
REST API (CRUD data, komunikasi antar sistem) |
Stateless |
Real-time chat, game, live video, dashboard aktif |
Stateful |
Microservice di banyak server atau cloud |
Stateless |
Aplikasi dengan interaksi sesi panjang |
Stateful |
Kenapa REST Memilih Jadi Stateless?
Karena REST dirancang agar:
- lebih scalable (bisa ditaruh di banyak server),
- lebih simpel (gak perlu nyimpen sesi),
- dan lebih fleksibel (kalau satu server mati, request bisa dilempar ke server lain tanpa masalah).
Stateless bukan berarti REST pelupa.
REST cuma tahu bahwa kadang, melupakan itu satu-satunya cara agar
sistem bisa tetap waras dan cepat.
Ketika Melupakan Adalah Sebuah Strategi
REST memilih jadi stateless bukan karena ia pelupa, tapi karena ia tahu mengingat
segalanya bukanlah hal yang bijak.
REST sadar, semakin besar sistem, semakin banyak client, semakin kompleks permintaan
yang harus dia layani—maka semakin penting untuk tidak membawa beban
yang tidak perlu.
Melupakan, dalam konteks ini, bukan berarti lari dari tanggung jawab.
Tapi soal memilih untuk berkonsentrasi pada apa yang dibutuhkan
sekarang—tanpa terbebani oleh riwayat panjang interaksi yang lalu.
Server gak perlu tahu masa lalumu, selama kamu datang dengan data yang jelas
dan lengkap.
“Datang sekarang, bawa semua yang kubutuhkan, aku bantu.
Lain kali kamu datang lagi, kita mulai dari awal. Tapi hasilnya tetap
konsisten, tetap bisa kamu andalkan.”
Dan kadang, cara kerja seperti itu justru membuat sistem lebih tangguh, lebih tenang, dan lebih siap menghadapi skala yang lebih besar.
Dalam kehidupan sehari-hari, mengingat sering dihubungkan dengan kepedulian.
Tapi dalam dunia sistem, tidak semua hal layak untuk diingat
terus-menerus.
Ada saat di mana terlalu banyak menyimpan justru membuat sistem jadi berat,
lambat, bahkan rentan.
REST memilih jalan yang berbeda—ia tak mencoba mengingat segalanya.
Ia memilih untuk fokus pada yang relevan, tanggap terhadap yang
sekarang, dan percaya bahwa setiap interaksi bisa berdiri sendiri
tanpa beban sebelumnya.
Dan mungkin, ada nilai di sana.
Bahwa dalam hidup—seperti dalam kode—yang membuat kita tangguh
bukan seberapa banyak yang kita bawa,
tapi seberapa ringan kita melangkah.
Leave a comment