Redis sebagai Solusi Session Storage


Diposting pada 09 November 2023, 16:10 Oleh ERMA NINDIASWARI, S.T, MTI


Pengertian Redis

Redis (Remote Dictionary Server) adalah teknologi penyimpanan stuktur data dalam memori. Beberapa penerapan redis antara lain digunakan untuk database, pengelolaan cache, message broker dan thread. Redis bersifat open source dan memungkinkan respon cepat dalam mengakses, mengingat metode penyimpanan data ada di dalam memori. Redis dapat digunakan diberbagai bahasa pemrograman dan dapat dibangun di atas replikasi, dan memberikan high availability serta kemudahan dalam automatisasi sistem. Redis juga mendukung adanya asychronous replication. Untuk mendapatkan performa terbaik, Redis bekerja di dalam memory dataset.

Mengingat redis adalah teknologi yang bekerja dalam memori, bukan seperti database yang penyimpanan datanya ada dalam hardisk/SSD. Cara kerja seperti ini akan menghilangkan kebutuhan untuk mengakses disk, serta menghindari penundaan waktu pencarian. Sehingga dapat mengakses data akan lebih cepat. Adapun fungsi Redis yaitu:

1.    Pengelolaan cache (caching)

2.    Mengurangi latensi akses data

3.    Sebagai microservices atau message broker

4.    Mempercepat load gambar, file dan halaman pada website

5.    Mendukung aplikasi yang membutuhkan stream komentar, komunikasi antar server, serta chat secara realtime

6.    Memiliki antrean (queue) yang ringan

7.    Dapat digunakan untuk membuat score leaderboard secara realtime

8.    Pengelolaan session

9.    Menyimpan metadata tentang riwayat tampilan, informasi, token otentikasi pengguna

10. Mengelola data geospasial secara realtime

11. Dapat digunakan untuk aplikasi berbasis machine learning yang harus diakses secara realtime

12. Dll

 

 

Latar Belakang

Arsitektur sistem yang mendukung high availability bersifat scale up artinya instance aplikasi bisa terdiri lebih dari 1 titik sehingga perlu kondisi/keadaan program yang dapat sikron antara kondisi pada 1 instance dengan instance lainnya. Kondisi/keadaan program pada saat tertentu dinamakan state dimana state memiliki arti apapun bergantung konteks program dalam instance aplikasi tersebut.

Salah satu contoh sederhana adalah kondisi/keadaan login jika instance hanya 1 titik maka tidak ada masalah karena 1 titik instance tersebut dapat mengetahui state login user tertentu. Tetapi akan beda halnya dalam arsitektur high availability dimana instance yang menjalankan perintah program tertentu bisa jadi lebih dari 1 instance maka akan ada potensi bahwa instance 1 tidak dapat mengetahui state yanga ada pada instance lainnya, hal inilah yang perlu diantisipasi bagaimana multi intance aplikasi dapat sinkron dari sisi state-nya.

Aplikasi dikatakan statefull ketika aplikasi tersebut menyimpan state. Pada aplikasi ini, ada data tentang penggunaan aplikasi yang perlu disimpan. Stateful application biasanya digunakan ketika 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. Kelemahan statefull adalah tidak scalable untuk kondisi replikasi server untuk kondisi ketika trafik akses meningkat pada server.

Aplikasi stateless merupakan aplikasi yang tidak menyimpan state. Tidak ada data yang berkaitan dengan penggunaan aplikasi yang disimpan permanen. Keuntungan aplikasi yang stateless akan sangat mudah untuk di scale up atau bertambah jumlahnya.

Bagaimana dengan arsitektur aplikasi yang scalable tetapi masih tetap memerlukan state yang bersifat statefull salah satunya untuk fungsi login, atau mungkin dalam aplikasi naskah dinas elektronik bagaimana membedakan kotak masuk naskah dinas pegawai satu dengan pegawai lainnya. Pada aplikasi berbasis web hal ini biasa menggunakan session atau state tertentu yang disimpan dalam session.

 

Pembahasan

 

Metode penyimpanan session menjadi hal yang perlu diperhatikan untuk mendukung aplikasi yang stateless tetapi penyimpanan session nya bersifat statefull. Untuk penyimpanan session biasanya dalam bentuk file, database, ataupun dalam artikel ini akan di ulas metode penyimpanan session dalam bentuk storage in memory menggunakan redis. Beberapa metode terkini terdapat arsitektur aplikasi yang benar benar menerapkan stateless secara penuh baik aplikasinya maupun metode penyimpanan sessionnya menggunakan konsep token Oauth2, Json Web Token (JWT), maupun metode lainnya.

Pada artikel ini lebih fokus kepada penggunaan redis untuk penyimpanan session. Adapun tujuan dari penerapan redis untuk penyimpanan session adalah lebih kepada isu performa session tersimpan dalam memori akan lebih cepat dan responsif dan isu kedua adalah aspek skalabilitas yaitu untuk mendukung arsitektur high availability dimana jika aplikasi di replikasi menjadi banyak instance maka state antara instance 1 dengan instance  lainnya masih mendapatkan data yang sama.

 

 

Berikut hasil analisis terkait pemanfaatan redis di Kabupaten Tegal untuk penyimpanan session dengan melihat dari beberapa aspek.

 

Aspek

Kondisi/Penerapan saat ini

Anggaran

Mengingat redis secara arsitektur cukup sederhana dan merupakan versi open source dan masih dapat digunakan untuk memenuhi kebutuhan tanpa anggaran, sehingga untuk kebutuhan anggaran belum terlalu prioritas

Infrastruktur

Perlu dilakukan asesmen terhadap kapasitas pusat data apakah cukup memadai untuk server redis

Sumber Daya Manusia

Pengembangan kompetensi perlu dilakukan mengingat redis adalah hal yang baru dan akan diimplementasikan pada level production dimana masih belum banyak pegawai yang mendalami teknologi ini dan implementasinya lebih lanjut sehingga perlu kegiatan pengembangan kompetensi dalam bentuk training untuk pegawai

Kesiapan aplikasi

Asesmen untuk kesiapan aplikasi perlu dilakukan meskipun sebagian besar aplikasi berbasis PHP yang sudah mendukung implementasi session berbasis redis, tetapi masih banyak aplikasi lain yang menggunakan session tetapi perlu di cek kembali kompatibilitasnya jika menggunakan session redis

Model Penerapan Teknologi

Redis diinstall pada server tersendiri yang bersifat statefull kemudian instance aplikasi yang memerlukan akses redis membuat koneksi ke alamat IP yang ditentukan

Tabel 1. Analisis Penerapan Redis untuk Penyimpanan  Session

 

 

 

Berikut hasil analisis terkait teknologi yang sama untuk penyimpanan session dengan melihat dari beberapa opsi

Teknologi

Keterangan

Implementasi

Redis

Menjadi topik dalam artikel ini sehingga menjadi opsi utama untuk dipilih sebagai solusi permasalahaan penggunaan session dengan kebutuhan akan kecepatan dan mendukung arsitektur yang scalable

Direkomendasikan untuk diimplementasikan

Memcache

Teknologi ini juga berbasis in memori yang dapat dimanfaatkan untuk pengelolaan session tetapi masih belum mendukung replikasi sehingga masih belum memenuhi kriteria untuk implementasi

Tidak direkomendasikan untuk diimplementasikan

Storage sharing

Penyimpanan session ini berbasis file. Untuk skalabilitas memang mendukung secara arsitektur teknis, tetapi karena penyimpanan pada disk, sehingga isu lantensi atau kecepatan akses menjadi kendala tersendiri

Belum direkomendasikan untuk diimplementasikan

Database

Untuk model penyimpanan session database masih terjadi beberapa error pada implementasinya pada saat hit traffik seringkali terjadi salah pembacaan data session, isu kecepatan juga menjadi kendala mengingat penyimpanan pada disk sehingga isu latensi muncul, untuk isu skalabilitas tidak menjadi kendala mengingat database ini bersifat statefull yang bisa di akses dari banyak instance  aplikasi

Belum direkomendasikan untuk diimplementasikan

Tabel 2. Analisis beberapa perangkat lunak untuk Penyimpanan Session

 

Dari hasil analisis untuk pemilihan teknologi redis untuk penyimpanan session pada tabel 2, diketahui bahwa memang pilihan teknologi redis lebih tepat untuk diimplementasikan terutama dari aspek kecepatan akses data dan juga aspek skalabilitas aplikasi.

 

Dampak

 

Dampak untuk pemanfaatn redis pada penyimpanan session antara lain:

1.   Perubahan pada aplikasi dalam mengakses session

Perubahan ini perlu dilakukan pada aplikasi aplikasi yang telah ada dengan mengubah cara akses session dari yang umumnya berbasis file yang tersimpan dalam disk menjadi session storage yang tersimpan dalam memori

2.   Meningkatkan kemampuan untuk High Availability / Cluster

Arsitektur harus memenuhi kebutuhan untuk high availability dimana sistem harus meminimalisir waktu downtime. Ketika ada disaster atau sistem terdampak risiko, sehingga penyimpanan session ini harus redundan

3.   Perlunya peningkatan kompetensi SDM

Adanya hal baru tentunya harus diimbangi dengan kemampuan SDM para pengelola untuk perawatan dan pengelolaan sistem sehingga perlu ada nya pelatihan pengembangan kompetensi pegawai terkait teknologi redis in memori session

4.   Perlunya mekanisme peganggaran untuk implementasi

Jika implementasi redis sudah sudah cukup masif dan menjadi kritikal maka perlu pertimbangan penganggaran untuk model pekerjaan jasa konsultasi dengan output tenaga ahli yang melakukan setup, transfer knowledge, pelatihan, dan pendampingan teknis terhadap tim internal dalam melakukan maintenance sehingga fitur yang ada juga meningkat dan adanya dukungan dari penyedia untuk pengelolaan, perawatan, dan dukungan jika terjadi kendala.






Link Pemerintahan


Link Lainnya