Aku bosaan, kamu telpon melulu…

Cukup kalau kamu perlu saja , telpon, selebihnya anggap saja aku baik-baik saja..

– The meongs


Pendahuluan

Cache ?

Sepertinya pernah dengar.

Iya .. yang itu ..

Biasanya kita akan mengetahui tentang hal ini :

  • L1, L2, L3 Cache untuk CPU komputer kita, yang biasa kita namakan memory Cache.
  • Database cache.
  • Networking layer cache untuk menyimpan file-file statik seperti menyimpan .js, .css, image file di CDN (Content Delivery Network).
  • DNS (Domain Name Server) cache untuk menyimpan data mapping IP ke hostname setelah di propagasi.
  • Cache di Sistem Operasi, untuk menyimpan data yang sering diakses.
  • Cache di Aplikasi, yaitu menyimpan data sementara yang kita dapatkan misalnya dari database.
  • dll.

Tekniknya ini disebut Caching

Yang akan kita bahas adalah terkait Caching Aplikasi.

Khususnya di bahasa Java.


Ok , sekarang apa itu Caching ?

Caching adalah salah satu teknik dalam aplikasi untuk meminimalkan cost untuk mendapatkan atau mengakses data.

Caranya adalah dengan menggunakan struktur data yang bersifat low-latency atau memory sementara, yang disebut Cache.

Low latency maksudnya mudah didapatkan karena lokasi dekat, atau aksesnya cepat.

Didalam Cache ini akan disimpan copy-an atau referensi terhadap data/information yang akan digunakan oleh aplikasi kita nantinya.

Secara umum, informasi yang cukup mahal ketika mengaksesnya atau membutuhkan waktu lama , cocok untuk diperlakukan dengan teknik Caching ini.

Mahal disini maksudnya adalah memerlukan akses terhadap IO, CPU, memori, atau jaringan yang tidak mudah atau tidak murah atau berulang-ulang.

Oleh karenanya, maka ada beberara kasus Caching di dalam aplikasi.

  • Melakukan Caching terhadap hasil dari pemanggilan microservice lain.
  • Melakukan Caching terhadap rendering gambar yang butuh komputasi.
  • Melakukan Caching terhadap file static, seperti .css, .js, dll.
  • Dan yang paling umum adalah melakukan Caching terhadap data yang didapat dari database.
  • dll

Tujuannya tentu saja untuk :

  • Performa aplikasi. Aplikasi akan lebih cepat, karena datanya disimpan di Cache yang lebih dekat dan mudah lokasinya dari aplikasi.

  • Skalabilitas aplikasi. Aplikasi bisa diproses secara paralel ketika menggunakan Cache. Daripada mengakses data ke server aslinya yang bisa jadi sebagai bottleneck, maka dengan Cache, aplikasi bisa diproses secara paralel dan bersamaan.


Caching di Java

Bagaimana dengan Caching di Java ?

Karena dari awal Java adalah bahasa berorientasi objek, maka Caching di Java artinya teknik Caching yang ditujukan untuk melakukan Cache terhadap object-object yang ada di Java.

Kebutuhan akan spesifikasi Java mengenai Caching ini sudah menjadi kebutuhan sejak lama bagi Developer Java.

Banyak implementasi diluar sana dibuat oleh perusahaan atau komunitas untuk kasus Caching ini.

Misalnya :

  • ehCache
  • BlazingCache
  • Cache2k
  • Apache Ignite
  • Redisson
  • Caffeine
  • Hazelcast
  • WebSphere eXtreme Scale
  • Oracle Coherence
  • Infinispan
  • dll

Dengan adanya kebutuhan itu, maka muncullah permintaan untuk membuat standar spesifikasi yang jelas mengenai Cache di Java.

Seperti biasa, komponen library di Java, akan melewati proses JCP (Java Community Process), kemudian beberapa orang di committe akan membuat JSR (Java Spesification Request) untuk library yang dibutuhkan.

Termasuk dalam hal ini untuk kasus Caching.

Akhirnya dimunculkan JSR-107.

Didalamnya didefinisikan mengenai Java Caching API.

Disebut juga sebagai JCache API

Yaitu spesifikasi bagaimana cara yang umum dan standar agar sebuah program Java bisa membuat, mengakses, mengupdate, dan menghapus data di Caches.

Dengan Java Caching API ini, maka diharapkan Software Engineer bisa fokus kepada membuat aplikasi logic lainnya, tanpa harus dipusingkan dengan mengimplementasikan Cache sendiri.

Oleh karena JSR ini lebih kepada spsesifikasi, maka perusahan atau komunitas yang ingin mengimplementasikan spesifikasi ini bebas membuat implementasinya.

Asalkan tetap mengacu kepada interface, guidance, best practice di dalam spesifikasi ini.

Library implementasi dari JSR107 ini disebut sebagai Caching Provider


Detailnya ?

Untuk Java Caching API ini sendiri didesain untuk aplikasi yang menggunakan minimal Java versi 6 atau versi lebih baru lagi.

Sehingga perusahaan/komunitas yang ingin mengimplementasikannya mestinya juga memilih implementasi menggunakan Java versi 6 atau lebih.

Karena jenisnya spesifikasi, maka secara seragam, paket Java yang disediakan oleh JSR107 adalah :

javax.cache

Kita bahas di artikel selanjutnya !!