Skip to content

georgemisaell/cloud-computing-caching

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

Docker Caching Lab

Lab ini menunjukkan perbedaan akses data tanpa cache dan dengan cache menggunakan Redis.

Arsitektur

  • redis: penyimpanan cache in-memory.
  • app: aplikasi Express dengan endpoint uji cache.
  • tester: container untuk menjalankan Apache Benchmark (ab).

Semua service berada pada network lab-net.

Endpoint Aplikasi

  • GET /slow
    • Simulasi proses lambat (100ms) tanpa cache.
  • GET /fast
    • Cek Redis key key.
    • Jika ada: kirim data dari cache (cache hit).
    • Jika belum ada: tunggu 100ms, simpan ke Redis dengan TTL 10 detik, lalu kirim respons (cache miss).
  • GET /stats
    • Menampilkan statistik cache:
      • hit
      • miss
      • total
      • hitRate
      • cacheKey
      • cacheTtlSeconds
  • POST /stats/reset
    • Reset counter hit/miss di aplikasi.

Menjalankan Lab

Jalankan dari folder ini:

docker compose up -d

Catatan: aplikasi app memakai Node.js bawaan tanpa dependency npm tambahan, jadi startup biasanya cepat dan konsisten.

Cek status container:

docker compose ps

Lihat log aplikasi:

docker logs -f lab-app

Pengujian Benchmark (Urutan Ideal)

Gunakan urutan berikut agar hasil lebih konsisten dan mudah dibaca.

1) Baseline tanpa cache

docker exec lab-tester ab -n 100 -c 10 http://app:3000/slow

Ini memberi referensi performa endpoint yang selalu lambat.

2) Reset statistik

docker exec lab-tester sh -c "wget -qO- --post-data='' http://app:3000/stats/reset"

3) Warm-up cache

docker exec lab-tester ab -n 5 -c 1 http://app:3000/fast

Tujuan warm-up adalah memastikan key cache sudah terbentuk sebelum tes utama.

4) Tes cache hit (utama)

docker exec lab-tester ab -n 200 -c 20 -l http://app:3000/fast

Gunakan -l karena respons /fast bisa memiliki panjang berbeda antara miss dan hit.

5) Lihat statistik hit/miss

docker exec lab-tester wget -qO- http://app:3000/stats

Jika warm-up berhasil, nilai hit biasanya jauh lebih tinggi daripada miss.

Skenario Uji Tambahan

Melihat efek TTL cache (10 detik)

  1. Jalankan tes /fast.
  2. Tunggu lebih dari 10 detik.
  3. Jalankan lagi tes /fast.

Pada request awal setelah TTL habis, akan muncul miss lagi sebelum hit kembali dominan.

Hentikan Lab

docker compose down

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors