ekinerja - sistem informasi manajemen kinerja elektronik

Cara mempercepat aplikasi eKinerja (Sistem informasi manajemen kinerja ASN)

Salah satu upaya pemerintah dalam meningkatkan kinerja Aparatur Sipil Negara di seluruh Indonesia adalah dengan mengoptimalkan teknologi informasi melalui aplikasi eKinerja ASN. Aplikasi eKinerja ini merupakan sebuah sistem informasi manajemen kinerja ASN (Aparatur Sipil Negara) yang dikembangkan oleh Badan Kepegawaian Negara (BKN) Republik Indonesia.

Aplikasi eKinerja telah diterapkan oleh beberapa daerah di berbagai provinsi dalam wilayah NKRI. Penerapan sistem ini secara kontinue mendapat pendampingan oleh tim IT Badan Kepegawaian Negara (BKN).

Kelengkapan fitur sistem informasi manajemen eKinerja

sistem informasi manajemen ekinerja
Dashboard eKinerja

Meskipun masih terdapat beberapa kekurangan, namun secara umum aplikasi ini sudah cukup memenuhi kebutuhan akan pelayanan pelaporan kinerja ASN/PNS. Aplikasi ini sendiri terus dilakukan pembaruan baik fitur maupun sistem.

Salah satu keuntungan penggunaan aplikasi ini adalah bersifat terbuka di mana kode programnya dapat dimodifikasi sesuai kebutuhan, dengan syarat tanpa merubah hak cipta. Sistem informasi manajemen ini sendiri menggunakan Codeigniter, salah satu framework PHP yang paling populer.

Persoalan yang dihadapi… it’s such a nightmare!

Masalah utama yang dialami oleh saya sebagai sysadmin adalah aplikasi ini berjalan sangat berat meskipun saat itu jumlah user yang mengakses tidak banyak.

Dalam pengalaman saya, sudah beberapa kali diusahakan peningkatan sistem baik melalui tuning sistem software maupun upgrade sistem hardware terutama memori dan processor. Sayangnya kedua cara tersebut tidak berhasil.

Tuning software saya lakukan dengan mengoptimalkan Memcache, Opcache, Mysql, PHP-FPM sampai Nginx sampai Firewall. Saya cukup lama ngubek firewall karena sempat paranoid jangan sampai server menerima request berlebihan yang tak masuk akal (jenis serangan apakah itu?). Kebetulan saya lebih menyukai sistem Stack menggunakan LEMP (Linux, Nginx, MySQL, PHP).

Browsing di Google??? Entah berapa ratus kata kunci dengan kombinasinya sudah saya pakai untuk menemukan solusi dengan hasil NIHIL! Sistem informasi manajemen ekinerja yang tercinta masih ngambek , belum mau ngebut. Htop dan mytop masih memberikan informasi bahwa processor 16 Core bekerja keras sampai begitu seringnya menyentuh 100%! Wow, gawat.

Langkah selanjutnya adalah memeriksa query database pada kode program. Ada sangat banyak query yang rata-rata besar karena meliputi banyak operasi join dan union. Namun menurut pandangan saya yang ahli database setengah-setengah ini query-querynya rapi dan konsisten. Penggunaan index tabel sangat tertib. Developer aplikasinya memang bagus. Ketika disimulasikan di komputer lokal berjalan sangat baik dan normal. Begitupun ketika query dijalankan langsung satu per satu melalui tunnel berjalan NORMAL!!!

Solusi jangka pendek

Dalam keadaan setengah putus asa karena para saudara ASN yang tercinta sudah menjerit-jerit baik di WAG sampai media sosial saya melakukan langkah yang belum pernah saya ambil. Saya memeriksa satu persatu tabel pada database, mungkinkah ada yang mencurigakan?

Dalam melakukan pengecekan tabel-tabel ini saya menemukan satu tabel yang sungguh amat sangat mencurigakan. Tabel apakah itu? Dia adalah tabel ci_sessions.

Alasan saya mencurigai ci_session adalah karena tabel yang saya periksa tersebut memiliki sebanyak 17 ribuan record! Sebuah hal yang tidak masuk akal karena dibandingkan dengan jumlah user/pegawai daerah jumlahnya sebanyak 3 ribuan sehingga jumlah user tidak sampai 4 ribu.

Sekilas tentang ci_sessions

Bagi para Codeigniters (pengguna atau developer aplikasi berbasis Codeigniter), ci_session tentu bukanlah barang asing. Yang tidak mengenal ci_session pasti developer abal-abal atau developer copas (copy paste), hahaha…

Fungsi tabel ci_session adalah untuk menyimpan informasi session ketika seorang user atau pengguna melakukan login. Dalam Codeigniter session dapat disimpan ke dalam file, redis, memcached, dan database. Metode yang paling umum digunakan adalah menggunakan database. Menurut saya cara ini paling simple dan nyaman ketimbang cara lain yang memerlukan pengaturan tambahan…hih!!!

OK, cara kerja session adalah silakan dibaca di halaman resminya di : https://www.codeigniter.com/userguide3/libraries/sessions.html

Secara normal ketika user melakukan logout atau keluar dari aplikasi, session dihancurkan menggunakan perintah:

...............
$this->session->sess_destroy();

Ketika dicek pada kode aplikasi fungsi tersebut ada. Ini menjadi misteri yang harus dipecahkan pada episode mendatang.

Hapus-hapus masa lalu

OK… dalam kasus aplikasi ekinerja ini, menimbang waktu yang sangat singkat saat itu terhadap deadline kebutuhan para ASN binaan saya (maaf, para bosku!!!! hehehe) maka saya memutuskan untuk menggunakan “cara kampung”. Cara yang saya gunakan paling sederhana, saya beri istilah HARD RESET…hahaha. Simak caranya:

Masuk ke konsol Mysql atau menggunakan phpmyadmin atau aplikasi klien database kesukaan anda untuk mengecek tabel ci_session. Dalam kasus saya, karena lebih familiar dengan terminal atau command-line maka perkenankan saya menambahkan beberapa kata berikut ini:

DELETE FROM ci_sessions;

CASE CLOSED!!!!!????

Yah, dalam kasus saya masalah lambatnya aplikasi sistem informasi manajemen eKinerja terpecahkan. Seketika itu juga aplikasi berjalan sangat lancar. Minusnya adalah saya masih menggunakan cara manual untuk membersihkan ci_sessions, di mana saya menggunakan istilah keren: Reset. Lumayan istilah itu membuat saya terlihat keren, hehehe…. (setidaknya dalam imajinasi saya).

Tugas berikutnya adalah membuat patch agar masalah ini terselesaikan secara otomatis oleh aplikasi itu sendiri. Nantikan episode selanjutnya. Sampai jumpa!

……………………

……………………..

Oya….. Terima kasih atas kunjungannya hari ini.

Leave a Reply