Stateless vs Stateful: Saat Server Memilih untuk Lupa Demi Bisa Bertahan

1
Fundamentals
Ditulis 12 June 2025 Baca ± 6 menit
Stateless vs Stateful: Saat Server Memilih untuk Lupa Demi Bisa Bertahan

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.

Diperbarui pada 02 July 2025