Render Cache: Mempercepat performa pelayanan web bagi sebagian pembaca

6 Maret 2019 9:47 WIB
comment
4
sosmed-whatsapp-white
copy-link-circle
more-vertical
Ilustrasi Cache (oleh stevepb di Pixabay)
zoom-in-whitePerbesar
Ilustrasi Cache (oleh stevepb di Pixabay)
Sebagai platform media, kumparan selalu berusaha melakukan apapun demi menyajikan berita semudah mungkin untuk dikonsumsi oleh masyarakat. Misalnya beberapa bulan lalu kumparan telah merilis beberapa perbaikan berupa render cache agar akses via web browser akan terasa lebih cepat bagi sebagian pembaca.
Rendering disini adalah proses untuk mengumpulkan data yang diperlukan untuk ditampilkan kepada seorang pengguna serta mengemasnya dengan visual yang akan memudahkan pengguna dalam memahami data tersebut. Biasanya proses ini memerlukan waktu yang cukup lama karena beragamnya sumber data hingga besarnya komputasi yang diperlukan. Untuk menyiasati hal ini, akan sangat membantu jika hasil rendering tersebut bisa dikonsumsi oleh lebih banyak orang dengan kriteria yang sama dalam satu kali render.
Cache disini adalah mekanisme untuk menyimpan hasil kerja suatu proses agar bisa digunakan lagi jika ada yang memerlukan untuk mempercepat respon suatu program dan menghemat resource, dalam kasus ini mungkin hampir mirip dengan cara kerja mesin fotokopi yang menggandakan satu buku menjadi sebanyak mungkin dengan cepatnya agar lebih banyak orang yang dapat membaca dalam waktu yang bersamaan. Namun tak ada gading yang tak retak, para saintis masih berlomba-lomba mencari algoritme caching yang lebih optimal, dengan hit-ratio setinggi mungkin. Hit-ratio adalah rasio seberapa membantu suatu mekanisme cache dalam merespon penggunanya. kumparan sendiri masih menggunakan FIFO (first-in-first-out) dalam memilih algoritme.
Selain memilih algoritme cache, strategi cache juga sangat membantu dalam meningkatkan hit-ratio. Disini kumparan mencoba meningkatkan hit-ratio dengan mengelompokkan pengguna sesuai atributnya. Dalam tiap kelompok pengguna, akan ada 1 pengguna yang harus menunggu sepanjang proses yang diperlukan sedangkan pengguna lainnya dalam kelompok yang sama akan menggunakan hasil yang sudah diproses tadi. Semakin banyak jumlah anggota pengguna dalam kelompok tersebut, semakin tinggi pula hit-ratio yang akan dirasakan pengguna.
Pengelompokan pengguna dipilah berdasarkan beberapa atribut berikut:
Active Experiment adalah daftar experimen yang sedang dilakukan terhadap seorang pengguna, kerap disebut sebagai A/B test meskipun jumlah varian bisa tak terhingga (A-Z, AA-ZZ). Misalnya: Warna background manakah yang paling menarik perhatian?
Implementasi komponen eksperimen
Active Feature Gates adalah daftar fitur baru yang dirilis secara bertahap kepada beberapa persen pengguna ataupun environment untuk meminimalisir gangguan masal serta mengumpulkan crash data untuk segera dibenahi agar semakin stabil.
Implementasi komponen feature flag
URL dari halaman yang sedang di akses.
Mode Browser yang sedang digunakan, karena kita menggunakan satu codebase untuk melayani pengguna dari mobile browser maupun dari desktop browser.
Implementasi komponen render adapter
Berikut adalah pengelompokan yang bisa kita lakukan sejauh ini:
Render cache key
Lalu bagaimana dengan user-specific data seperti informasi login, dan user-specific data? kumparan telah memilahnya juga dengan mengelompokkan mana saja data yang bisa digunakan kembali oleh pengguna lain dan mana yang tetap private. Semua data private akan dimuat belakangan setelah data public diterima:
Dari animasi diatas bisa dilihat bahwa data stories ditampilkan terlebih dahulu sedangkan foto profil dan status ikuti/diikuti berubah beberapa saat setelahnya.
Dari konfigurasi ini kumparan mendapatkan performa cache-hit sebagai berikut:
Performa render cache
Seperti yang bisa dilihat dari metrik diatas, perbedaan antara cache-hit dan cache-miss tidak terasa pada persentil ke-5 yakni sama-sama ~90ms. Namun mulai dari persentil ke-50 perbedaannya sangat tinggi yakni cache-hits masih 96ms sedangkan cache-miss sudah mencapai 984ms. Pada persentil ke-90 perbedaannya sangat tidak enak dipandang, untuk itu hit-ratio harus diperhatikan dengan baik agar jauh lebih banyak pembaca yang mendapatkan cache-hit dibandingkan pembaca yang mendapatkan cache-miss.
Sedangkan hit-ratio secara keseluruhan kumparan mendapatkan data sebagai berikut:
Render cache hit-ratio metric
Dari metrik cache hit-ratio diatas, bisa dilihat adanya peningkatan cache-hit pada menit-menit akhir, sebenarnya itulah salah satu kegunaan dari render cache, yakni agar peningkatan traffic tidak terlalu berdampak pada menurunnya performa response duration.
Dengan rumus hit-ratio sebagai berikut:
maka didapatkan
=
Masih sangat jauh bagi kumparan untuk mencapai hit-ratio yang lebih tinggi lagi, misalnya apakah
dan
akan membantu menaikkan hit-ratio? bagaimana dengan algoritme lain? Masih banyak eksplorasi yang akan kumparan lakukan demi meningkatkan performa response-time, mempermudah akses informasi di platform kumparan.com. Tertarik dengan tantangan ini? we are hiring Frontend Engineers!
DISCLAIMER: Metric diatas hanyalah sampling, digit tidak merepresentasikan keadaan yang sebenarnya.