Apa itu Stateless dan Stateful Application?

Bagikan di

Pernah mendengar kata stateless dan stateful dalam pemrograman? Apa arti kedua kata tersebut? Kenapa kedua jenis program tersebut dibutuhkan?

Stateless vs Stateful

 

State

Kita mulai dari pengertian state. State dalam sistem komputer adalah data mengenai keadaan program saat itu. Keadaan di sini bisa berupa apapun tergantung pada konteks program tersebut.

Contohnya, jika aplikasimu berupa game, maka state bisa saja jumlah uang yang player kamu miliki, posisi player, dan item apa saja yang dimiliki saat ini. Jika aplikasimu berupa website, state bisa jadi data yang menunjukkan bahkan kamu sedang login.

 

Stateful

Aplikasi dikatakan stateful ketika aplikasi tersebut menyimpan state. Pada aplikasi ini, ada data tentang penggunaan aplikasi yang perlu disimpan.

Kita coba lihat dari contoh sederhana. Ada sebuah aplikasi web yang tugasnya hanya mengubah satu variabel di dalam memori. Variabel ini akan ditambah 1 ketika ada yang mengakses website tersebut. Mirip seperti view counter tapi versi sangat sederhana.

Skenario Contoh Stateful Application

Aplikasi inilah yang disebut sebagai stateful application.

 

Kapan Stateful Application Dibutuhkan?

Stateful application biasanya digunakan ketika harus ada data aplikasi yang disimpan yang kemudian akan dibaca lagi ketika aplikasi digunakan.

Contoh yang paling mudah ditemui adalah aplikasi database seperti MySQL, Postgre, dan MongoDB. Tentu saja aplikasi database haruslah stateful karena kegunaan aplikasi tersebut adalah untuk menyimpan data.

 

Permasalahan dari Stateful Application

Coba lihat kembali aplikasi view counter sederhana di atas. Bagaimana jika aplikasi tersebut dinyalakan di dua server yang berbeda seperti gambar dibawah ini?

 

Skenario Masalah Stateful Application

 

Apa yang akan terjadi ketika pengguna mengakses salah satu server tapi tidak keduanya?

 

Skenario Masalah Stateful Application

 

Perubahan state hanya berdampak pada satu server karena server yang satunya tidak tahu menahu mengenai adanya pengguna yang mengakses.

Kemudian, ada pengguna lain yang mengakses server tersebut. Pengguna tersebut mengakses server yang bawah. Karena sebelumnya server yang bawah tidak tahu bahwa ada pengguna lain yang telah mengakses, maka state yang ditampilkan oleh server yang bawah adalah 1.

 

Skenario Masalah Stateful Application

 

Padahal, terdapat dua pengguna yang telah mengakses aplikasi tersebut, sehingga seharusnya view count yang ditampilkan adalah 2. Angka yang ditampilkan menjadi tidak konsisten.

 

Scalability

Terlihat dari masalah di atas bahwa stateless application tidak mudah untuk diubah jumlah dan ukurannya (tidak scalable). Kenapa kita butuh mengubah jumlah server?

Bayangkan jika kamu memiliki jutaan pengguna, maka satu server saja tidaklah cukup. Perlu banyak server yang menjalankan aplikasi serupa. Namun jika aplikasimu tidak konsisten seperti pada contoh di atas, bisa-bisa jadi masalah besar. Bayangkan jika angka yang tidak konsisten tersebut adalah saldo di rekening kamu.

 

Stateless

Aplikasi stateless adalah aplikasi yang tidak menyimpan state. Tidak ada data yang berkaitan dengan penggunaan aplikasi yang disimpan permanen.

Contoh aplikasi ini adalah suatu aplikasi yang tugasnya hanya menampilkan gambar Pikachu. Pengguna tetap akan mendapatkan gambar Pikachu yang sama walaupun mengakses server yang berbeda seperti ilustrasi di bawah.

 

Skenario Masalah Stateless Application

 

Tidak ada data penggunaan yang disimpan, dan tidak ada data yang berubah karena penggunaan. Berapa kalipun pengguna mengakses server tersebut, gambar Pikachu tersebut akan tetap setia untuk muncul.

 

Kapan Stateless Application Digunakan?

Stateless application digunakan ketika aplikasi yang kamu buat memang tidak menyimpan data penggunaan apapun.

Contohnya seperti website statis yang kontennya tidak berubah, aplikasi yang menyimpan datanya pada sebuah database eksternal, atau aplikasi sederhana seperti kalkulator.

 

Keuntungan Stateless Application

Aplikasi yang tidak memiliki state akan lebih mudah untuk scale atau ditambah jumlahnya. Hal ini disebabkan karena server tidak perlu mengetahui state sebelumnya untuk dapat menjawab request pengguna dengan benar. Berbeda dengan stateful application pada contoh di atas yang perlu tau berapa jumlah view sebelumnya untuk dapat menjawab dengan benar dan konsisten.

 

Penutup

Baik aplikasi stateless maupun stateful dibutuhkan dalam pembuatan sebuah sistem. Hanya saja, masing-masing penggunaannya sangat bergantung pada kebutuhan.

Secara singkat, jika aplikasimu terdistribusi dan butuh membutuhkan scalability, disarankan untuk menggunakan stateless application. Sedangkan jika aplikasimu butuh penyimpanan data, stateful application tetap harus digunakan.


Bagikan di


Kolom Diskusi

Sedang memuat...