PERF03-BP05 Mengimplementasikan pola akses data yang memanfaatkan caching - Pilar Efisiensi Kinerja

PERF03-BP05 Mengimplementasikan pola akses data yang memanfaatkan caching

Implementasikan pola akses yang dapat memanfaatkan caching data untuk pengambilan cepat data yang sering diakses.

Antipola umum:

  • Anda menyimpan cache data yang sering berubah.

  • Anda mengandalkan data dalam cache seolah-olah data tersebut disimpan dengan durabilitas tinggi dan selalu tersedia.

  • Anda tidak mempertimbangkan konsistensi data cache Anda.

  • Anda tidak memantau efisiensi implementasi caching Anda.

Manfaat menjalankan praktik terbaik ini: Menyimpan data dalam cache dapat meningkatkan latensi baca, throughput baca, pengalaman pengguna, dan efisiensi secara keseluruhan, serta mengurangi biaya.

Tingkat risiko yang terjadi jika praktik terbaik ini tidak dijalankan: Sedang

Panduan implementasi

Cache adalah komponen perangkat lunak atau perangkat keras yang dimaksudkan untuk menyimpan data sehingga permintaan di masa mendatang untuk data yang sama dapat dilayani lebih cepat atau lebih efisien. Data yang disimpan dalam cache dapat direkonstruksi jika hilang dengan mengulangi perhitungan sebelumnya atau mengambilnya dari tempat penyimpanan data lain.

Caching data dapat menjadi salah satu strategi paling efektif untuk meningkatkan performa aplikasi Anda secara keseluruhan dan mengurangi beban pada sumber data primer yang mendasarinya. Data dapat di-cache di berbagai tingkatan dalam aplikasi, seperti di dalam aplikasi yang membuat panggilan jarak jauh, yang dikenal sebagai caching sisi klien, atau dengan menggunakan layanan sekunder cepat untuk menyimpan data, yang dikenal sebagai caching jarak jauh.

Caching sisi klien

Dengan caching sisi klien, setiap klien (aplikasi atau layanan yang mengkueri penyimpanan data backend) dapat menyimpan hasil kueri unik mereka secara lokal selama jangka waktu tertentu. Hal ini dapat mengurangi jumlah permintaan di seluruh jaringan ke sebuah penyimpanan data dengan memeriksa cache klien lokal terlebih dahulu. Jika hasilnya tidak ada, aplikasi kemudian dapat mengkueri penyimpanan data tersebut dan menyimpan hasilnya secara lokal. Dengan pola ini, setiap klien dapat menyimpan data di lokasi terdekat (klien itu sendiri), sehingga menghasilkan latensi serendah mungkin. Klien juga dapat terus melayani beberapa kueri ketika penyimpanan data backend tidak tersedia, sehingga meningkatkan ketersediaan sistem secara keseluruhan.

Salah satu kelemahan pendekatan ini adalah ketika ada beberapa klien yang dilibatkan, semuanya dapat menyimpan data cache yang sama secara lokal. Hal ini mengakibatkan penggunaan penyimpanan duplikat dan inkonsistensi data antara klien-klien tersebut. Salah satu klien mungkin melakukan caching hasil kueri, dan satu menit kemudian klien lainnya dapat menjalankan kueri yang sama dan mendapatkan hasil yang berbeda.

Caching jarak jauh

Untuk mengatasi masalah duplikat data antarklien, layanan eksternal yang cepat, atau cache jarak jauh, dapat digunakan untuk menyimpan data yang dikueri. Alih-alih memeriksa penyimpanan data lokal, setiap klien akan memeriksa cache jarak jauh sebelum mengkueri penyimpanan data backend. Strategi ini memungkinkan respons yang lebih konsisten antarklien, efisiensi yang lebih baik pada data yang disimpan, dan volume data cache yang lebih tinggi karena ruang penyimpanannya diskalakan tanpa terikat klien.

Kelemahan cache jarak jauh adalah keseluruhan sistem mungkin mengalami latensi yang lebih tinggi karena diperlukan lompatan jaringan tambahan untuk memeriksa cache jarak jauh. Caching sisi klien dapat digunakan bersama caching jarak jauh untuk caching multitingkat sehingga dapat memperbaiki latensi.

Langkah implementasi

  1. Identifikasikan basis data, API, dan layanan jaringan yang dapat memanfaatkan caching. Layanan yang memiliki beban kerja baca yang berat, memiliki rasio baca-tulis yang tinggi, atau mahal untuk diskalakan dapat memanfaatkan caching.

  2. Identifikasikan jenis strategi caching yang tepat yang paling sesuai dengan pola akses Anda.

  3. Ikuti Praktik Terbaik Caching untuk penyimpanan data Anda.

  4. Konfigurasikan strategi pembatalan cache, seperti time-to-live (TTL), untuk semua data yang menyeimbangkan kesegaran data dan mengurangi tekanan pada penyimpanan data backend.

  5. Aktifkan fitur seperti percobaan ulang koneksi otomatis, mundur eksponensial, batas waktu sisi klien, dan pooling koneksi di dalam klien, jika tersedia, karena fitur-fitur tersebut dapat meningkatkan performa dan keandalan.

  6. Pantau laju hit cache dengan target 80% atau lebih tinggi. Nilai yang lebih rendah mungkin menunjukkan ukuran cache yang tidak mencukupi atau pola akses yang tidak diuntungkan dengan caching.

  7. Implementasikan replikasi data untuk melimpahkan baca ke beberapa instans dan meningkatkan performa dan ketersediaan pembacaan data.

Sumber daya

Dokumen terkait:

Video terkait:

Contoh terkait: