Latihan 1: Idempotency & Retry Safety — System Design

Latihan 1 dari materi Idempotency & Retry Safety di System Design — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.

Bikin versi kecil dedupe store bayar: function createHandler(processFn) yang mengembalikan function handle(request). request berbentuk { idempotencyKey, payload }.

  1. Di dalam createHandler, const cache = new Map(); sudah ada. Biarkan.
  2. Di handle, cek dulu cache.has(request.idempotencyKey). Kalau key itu sudah pernah datang, kembalikan cache.get(request.idempotencyKey): objek hasil yang sama persis, tanpa memanggil processFn lagi.
  3. Kalau key-nya baru, panggil processFn(request.payload), simpan hasilnya dengan cache.set(request.idempotencyKey, hasil), lalu kembalikan hasil itu.

Di latihan ini key saja yang menentukan: request kedua dengan key yang sama tetap dapat hasil simpanan walau payload-nya beda. Jangan bandingkan payload.

Kode di bawah createHandler (counter, process, tiga panggilan handle, dan lima console.log) sudah ada, biarkan begitu. Output-nya harus persis lima baris ini, berurutan:

  1. 1
  2. 1
  3. true
  4. 2
  5. 2

Hint