ডেটাবেস এবং ক্লায়েন্ট একই রিজনে থাকলে Redis-এ ১ মিলিসেকেন্ড লেটেন্সি পাওয়া সহজ। কিন্তু ক্লায়েন্টরা যদি গ্লোবালি বিতরণ করা থাকে, তবে লেটেন্সি ১০০ মিলিসেকেন্ডের ওপরে চলে যায়। এই সমস্যাটি সমাধান করার জন্য আমরা Edge Caching তৈরি করেছি।
Edge Caching কী?
Edge caching-এ REST রেসপন্স গুলো CDN-এর মতো সারাবিশ্বের এজ লোকেশনগুলোতে ক্যাশ হয়। Edge caching সক্ষম করলে গ্লোবাল লেটেন্সি গড়ে ৫ মিলিসেকেন্ড দেখলাম। আমাদের বেঞ্চмар্ক অ্যাপ্লিকেশন দেখুন যেখানে ১০টি ভিন্ন রিজনের ক্লায়েন্ট থেকে লেটেন্সি রেকর্ড করা হয়েছে। আমরা এজ URL এবং সাদা REST URL-র লেটেন্সি তুলনা করেছি। সার্ভার এবং ক্লায়েন্টের দূরত্ব যত বেশি, এজ ক্যাশিং-এর প্রভাব তত বেশি।

ব্যবহারের ক্ষেত্রসমূহ
ওয়েব/মোবাইল (ব্যাকএন্ড-রহিত) ক্লায়েন্ট
Upstash রিড-অনলি অথেনটিকেশন টোকেন দিয়ে ক্লায়েন্টকে কোনো ব্যাকএন্ড ছাড়াই ডেটাবেস এক্সেস করতে দেয়। আপনি সরাসরি ওয়েব বা মোবাইল অ্যাপ থেকে Redis এক্সেস করতে পারেন। এই আর্কিটেকচারে ক্লায়েন্টরা যেকোনো জায়গায় থাকতে পারে। তাই ব্যবহারকারীদের সবচেয়ে নিকটবর্তী লোকেশনে ডেটা ক্যাশ করা খুবই যৌক্তিক।
মাল্টি-রিজন সার্ভারলেস আর্কিটেকচার
আপনি AWS Lambda ফাংশন একাধিক রিজনে চালাতে পারেন গ্লোবাল লেটেন্সি কমাতে। Vercel/Netlify ফাংশন কিছু কনফিগারেশনে ভিন্ন রিজনে চলে। Edge caching সহ সার্ভারলেস Redis আপনার সার্ভারলেস ফাংশন যেখানেই থাকে, সেখানে দ্রুত ডেটা দেবে।
এজ ফাংশন
এজ কম্পিউটিং (Cloudflare Workers ইত্যাদি) গ্লোবালি দ্রুত অ্যাপ্লিকেশন বানানোর জনপ্রিয় পথ হয়ে উঠছে। এজ ফাংশনের চ্যালেঞ্জ হলো ডেটা রাখার অপশন কম। Edge caching সহ Redis এর কম লেটেন্সি এবং লাইটওয়েট প্রকৃতির কারণে এজ ফাংশনের জন্য отлиচটি ফিট।
শুরু করুন
Upstash কনসোলে Edge caching সক্ষম করুন। মনে রাখবেন Edge caching-এর অতিরিক্ত খরচ থাকে।
Edge caching সক্ষম হলে REST API ডায়ালগে Edge URL পাবেন। Edge caching শুধু GET কলের জন্য উপলব্ধ। আপডেট (POST) এর জন্য সাদা REST API ব্যবহার করুন।
ডিফল্টভাবে ক্যাশড রেসপন্স ৩০ সেকেন্ডে এক্সপায়ার হয়। আপনি Cache-Control: max-age=<seconds> হেডার দিয়ে এটি কন্ট্রোল করতে পারেন।
উদাহরণ:
curl https://us1-smart-bunny-32732.edge-c.upstash.io/get/foo \
-H "Authorization: Bearer 2dfgf98elrg0w009c842z2adfdde9132" \
-H "Cache-Control: max-age=50"
উপরোক্ত URL-এ প্রথম রিকোয়েস্ট ওরিজিন থেকে রেসপন্স আনবে। পরের রিকোয়েস্টগুলো এজ লোকেশন থেকে সার্ভ হবে। প্রতিটি এজ লোকেশনে ৫০ সেকেন্ড পর ক্যাশ এক্সপায়ার হবে।
Edge Caching বনাম Global Database
গ্লোবাল ডেটাবেস বানানো (আপডেট: এটি রিলিজ হয়েছে, আরও জানুন) আমাদের রোডম্যাপে আছে। গ্লোবাল ডেটাবেস রাইট লেটেন্সি এবং স্ট্রং কনসিস্টেন্সি দেবে। কিন্তু সব রিজনে ডেটাবেস রেপ্লিকেট করা খুব খরচে পড়ে। এজ ক্যাশিং এবং গ্লোবাল রেপ্লিকেশন একে অপরকে পূরক করে, প্রতিযোগিতা করে না। যদি আপনার ইউজ কেস eventual consistent reads টলারেট করতে পারে, তবে Edge caching ইতিমধ্যে গ্লোবাল ফাস্ট ডেটার জন্য একটি চমৎকার সমাধান।
সার্ভারলেস এবং এজ ডেটা নিয়ে আমাদের প্রচেষ্টা সম্পর্কে আপনার মতামত জানাতে চাই। টুইটার এবং ডিস্কর্ড-এ কথা বলুন।