Recraftory

Strategi Caching

Pola-pola umum dalam mengimplementasikan cache di aplikasi

Cache-Aside (Lazy Loading)

  • Aplikasi memeriksa cache terlebih dahulu
  • Jika cache miss, aplikasi mengambil dari database dan menyimpan ke cache
  • Data di-cache hanya saat pertama kali diminta

Alur Cache-Aside

  1. Aplikasi minta data ke cache
  2. Jika cache hit, kembalikan data
  3. Jika cache miss, ambil dari database
  4. Simpan data ke cache
  5. Kembalikan data ke client

Kelebihan

  • Cache hanya menyimpan data yang benar-benar diperlukan
  • Tidak ada overhead mengisi cache saat startup

Kekurangan

  • Cache miss memperlambat response karena harus ke database
  • Data baru pertama kali diakses selalu lambat

Read-Through

  • Aplikasi selalu membaca dari cache
  • Cache yang bertanggung jawab mengambil dari database saat miss
  • Aplikasi tidak pernah berinteraksi langsung dengan database untuk read

Kelebihan

  • Logika cache terpusat, aplikasi lebih sederhana
  • Konsistensi pola read di seluruh aplikasi

Kekurangan

  • Cache harus mendukung read-through logic
  • Kurang fleksibel jika perlu query khusus

Write-Through

  • Data ditulis ke cache dan database secara bersamaan
  • Setiap write selalu menyimpan ke kedua tempat

Kelebihan

  • Cache selalu terupdate, tidak ada stale data
  • Read selalu cepat karena cache selalu up-to-date

Kekurangan

  • Write lebih lambat karena harus ke dua tempat
  • Data yang jarang dibaca tetap disimpan di cache

Write-Behind (Write-Back)

  • Data ditulis ke cache terlebih dahulu
  • Cache menyinkronkan ke database secara asynchronous
  • Write ke database bisa di-delay atau di-batch

Kelebihan

  • Write sangat cepat karena hanya ke cache
  • Bisa batch write untuk mengurangi beban database

Kekurangan

  • Risiko kehilangan data jika cache gagal sebelum sinkronisasi
  • Kompleksitas lebih tinggi untuk menangani failure

Refresh-Ahead

  • Cache memprediksi data yang akan dibutuhkan dan mengisinya sebelumnya
  • Data di-refresh sebelum expired

Kelebihan

  • Cache miss berkurang karena data sudah disiapkan
  • Response lebih konsisten

Kekurangan

  • Prediksi tidak selalu benar, bisa membuang resource
  • Lebih kompleks untuk diimplementasikan

Kapan Menggunakan Strategi Mana

Cache-Aside

  • Aplikasi dengan read-heavy workload
  • Tidak tahu data mana yang akan populer
  • Redis atau in-memory cache dengan aplikasi yang mengontrol

Write-Through

  • Data yang harus selalu up-to-date dan sering dibaca
  • Sistem yang tidak toleran terhadap stale data

Write-Behind

  • Write-heavy workload dengan toleransi delay
  • Logging atau analytics yang bisa ditunda

Refresh-Ahead

  • Data dengan pola akses yang bisa diprediksi
  • Dashboard dengan data yang di-refresh berkala