Brief #02 · Backend
Redis Cache for a Slow API
Easy⏱ 6-10 ঘণ্টাশীঘ্রই
দুই সেকেন্ডের একটা endpoint এর সামনে cache বসিয়ে ৫০ ms এর নিচে আনো, কখনো পুরোনো দাম না দেখিয়ে।
Outline free · tracking সহ বানাতে Pro লাগবে
RBriefTeam এর পক্ষ থেকে
Product page একটা inventory service কে ডাকে, যার উত্তর দিতে প্রায় দুই সেকেন্ড লাগে, আর পুরো site এ এটাই সবচেয়ে ধীর জিনিস। Product manager রা বারবার জিজ্ঞেস করছেন page টা এত ভারী লাগে কেন। গতি বাড়াও, কিন্তু page এর দাম কখনো ৩০ সেকেন্ডের বেশি পুরোনো হতে পারবে না।
যা বানাবে
- 1ইচ্ছা করে ধীর একটা upstream service (২ সেকেন্ড ঘুমায়), আর তার সামনে একটা API।
- 2Redis দিয়ে cache-aside আর TTL; আগে আর পরে p50 আর p95 মাপো।
- 3দাম বদলালে key মুছে দাও, যাতে নতুন দাম সাথে সাথে দেখায়।
- 4একটা cache stampede ঘটাও (মেয়াদ শেষ হওয়া key তে ৫০০টা request), তারপর lock বা request coalescing দিয়ে সারাও।
- 5Redis বন্ধ থাকলে কী দেখাবে, সেটা ঠিক করো আর পরীক্ষা করো।
ধাপে ধাপে walkthrough
Walkthrough শীঘ্রই আসছে
এই project এর ধাপে ধাপে walkthrough, প্রতিটা ধাপে আসল output সহ, এখনো লেখা হচ্ছে। ততক্ষণ brief পড়ে নিজে চেষ্টা করতে পারো; walkthrough তৈরি হলে tracking চালু হবে।
শেষ হবে যখন
- তোমার benchmark এ cache হওয়া অবস্থায় p95 ৫০ ms এর নিচে।
- Stampede এর সময় upstream এ একটা request যায়, শত শত না।
- Redis বন্ধ করলেও API উত্তর দেয় (ধীরে), error দেয় না।
- একটা ছোট লেখায় TTL কেন এত রাখলে, তার ব্যাখ্যা।
আরো এগোতে চাইলে
- Stale-while-revalidate: পেছনে নতুন মান আনতে আনতে পুরোনোটা দেখাও।
- HTTP caching header (ETag, Cache-Control) যোগ করো, যাতে browser ও সাহায্য করে।