কম্পিউটার টিউটোরিয়াল

Serverless Redis ক্যাশিং দিয়ে Strapi পারফরম্যান্স বাড়ান

সময়মতো প্রজেক্ট ডেলিভার করা সাধারণত মানে আপনাকে সম্ভাব্য সর্বোচ্চ বিদ্যমান প্রযুক্তি আড়াল করতে হবে। আপনি যে প্রতিটি সিদ্ধান্ত নেন যা কাস্টম ইমপ্লিমেন্টেশনের দিকে নিয়ে যায়, সেটি অবশ্যই এই কথা বিবেচনা করতে হবে যে আপনাকে আপনার নিজের সমাধান রক্ষণাবেক্ষণ করতে হবে। এজন্য Strapi-এর মতো ওপেন-সোর্স টুল আপনার পরবর্তী প্রজেক্টের REST API তৈরি করার জন্য সেরা পথ।

Strapi হল একটি সুস্থাপিত হেডলেস CMS। এটি আপনাকে একটি গ্রাফিক্যাল ইন্টারফেস দিয়ে আপনার স্কিমা ডিফাইন করতে দেয়, তাই নন-টেকনিক্যাল লোকেরা ডেটা মডেল করতে পারে। আপনার ডেভেলপমেন্ট টিম ওয়েব এবং মোবাইল অ্যাপ তৈরি করতে এবং নতুন ফিচার ডেলিভার করতে ফোকাস করতে পারে ব্যাকএন্ড ইমপ্লিমেন্টেশন চিন্তা না করে। শোেষে, একটি বড় ওপেন-সোর্স কমিউনিটি Strapi রক্ষণাবেক্ষণ করে।

আপনার ব্যাকএন্ড স্পিড আপ করা

এখন, SQLite ব্যবহার করলে Strapi রেসপন্স ডেলিভার করতে نسبيভাবে দ্রুত, কিন্তু আপনার ডেটা এবং ইউজার বেস বাড়ার সাথে সাথে, এটি শুরুতে সেরা সমাধান নাও হতে পারে। মার্কেটে হিট করার পরে, আপনি বিশ্বব্যাপী বিতরণ করা হাজার হাজার ব্যবহারকারীর সাথে সমाप्त হতে পারেন।

তাই, আপনাকে আপনার Strapi স্কেল আউট করতে হবে এবংsledging, আপনার ডাটাবেস ডিপ্লয়মেন্টগুলো সেই লোড হ্যান্ডেল করতে। কি খুব সুন্দর হত না যদি আপনি কি না কোনো ধরনের ক্যাশ প্লাগ ইন করতে পারতেন?

REST Cache-এ প্রবেশ

Strapi REST Cache হল Strapi প্লাগইনগুলির একটি সংকলন। সেগুলি আপনাকে আপনার Strapi অ্যাপে LRU ক্যাশিং যোগ করতে সাহায্য করে, আসল ডাটাবেস রিকোয়েস্ট কমিয়ে দেয়।

Memory, Couchbase, এবং Redis সমর্থিত, এবং আপনি এমনকি একটি কাস্টম প্রোভাইডার লিখতে পারেন। এখানে রোমাঞ্চক অংশ হলো Redis ক্যাশ প্রোভাইডার যা আমাদের Upstash Redis-এ মিনিটों में সংযোগ করতে দেয়!

আপনি Upstash Redis legtöbb সিনেরিওতে ব্যবহার করতে পারেন যেখানে আপনি Redis ব্যবহার করবেন। পার্থক্য হলো আপনি কয়েকটি ক্লিকেই Upstash Redis সেট আপ করতে পারেন। এছাড়া এতে গ্লোবাল রেপ্লিকেশন আসে, তাই আপনার Strapi ইন্সট্যান্সগুলো নিকটতম রেপ্লিকায় রাউট হবে, যা একটি ফাস্ট ক্যাশের জন্য অত্যন্ত গুরুত্বপূর্ণ। এবং এটি serverless, তাই আপনি শুধু যে ব্যবহার করেন তার জন্য পে করেন।

তাহলে, চলুন দেখি কীভাবে আমরা Strapi কে Upstash Redis-এ সাথে আপ এবং রানিং করতে পারি!

পূর্বশর্ত

এই টিউটোরিয়ালের জন্য, আপনার একটি Upstash অ্যাকাউন্ট এবং একটি Node.js ইনস্টলেশন দরকার। আপনার Yarnও দরকার, যা Strapi-এর পছন্দসই প্যাকেজ ম্যানেজার।

একটি Strapi প্রজেক্ট তৈরি করা

আপনি সরাসরি "Adding the REST Cache" সেকশনে যেতে পারেন যদি আপনার ইতিমধ্যে একটি বিদ্যমান Strapi প্রজেক্ট থাকে। নিচের ধাপগুলো শুধু ডেটা সেট আপ করার জন্য কাজের সাথে।

প্রথম ধাপ হলো Strapi-র সাথে একটি নতুন ব্যাকএন্ড তৈরি করা। আপনি নিচের কমান্ড দিয়ে এটি করতে পারেন:

$ npx create-strapi-app@latest strapi-upstash-redis-cache

কমান্ডটি ফিনিশ হলে, Strapi ব্রাউজার খুলবে এবং অ্যাডমিন লগইন ডিটেইলস চাইবে ডেটা মডেল এবং প্রথম কন্টেন্ট তৈরি করতে।

Content-Type Builder দিয়ে ডেটা মডেলিং

লগ ইন করার পরে, আপনি Strapi Content-Type Builder-এ আপনার প্রথম ডেটা কালেকশন মডেল করতে পারেন। Figure 1 দেখায় Strapi অ্যাডমিন কনসোলে Content-Type Builder কোথায় পাবেন।

Serverless Redis ক্যাশিং দিয়ে Strapi পারফরম্যান্স বাড়ান

"Create new collection type" লিংকে ক্লিক করুন এবং একটি নতুন টাইপ তৈরি করুন। এটিকে "Article" নাম দিন এবং দুটি সিম্পল টেক্সট ফিল্ড যোগ করুন। একটি ফিল্ড শর্ট টেক্সটের জন্য যাকে "title" বলা হয়েছে, এবং একটি লং টেক্সটের জন্য যাকে "content" বলা হয়েছে।

Figure 2 দেখায় "Save" বাটনে ক্লিক করার আগে টাইপটি কেমন দেখাবে।

Serverless Redis ক্যাশিং দিয়ে Strapi পারফরম্যান্স বাড়ান

এতে পর, আমাদের ওই কন্টেন্ট টাইপের একটি আসল ইন্সট্যান্স দরকার।

Content Manager-এ কন্টেন্ট তৈরি করা

Figure 1-এ Content Manager-এর লোকেশন দেখতে পারেন। সেখানে নেভিগেট করুন এবং টপ রাইট-এ "Create new entry" বাটনে ক্লিক করুন।

Figure 3-এ আপনি নতুন কন্টেন্ট এন্ট্রি UI দেখতে পাবেন। "Save" এবং "Publish" বাটনে ক্লিক করা ভুলবেন না; অন্যথায়, আপনার একটি প্রাইভেট ড্রাফট থাকবে যা পাবলিক API-এর মাধ্যমে অ্যাক্সেসযোগ্য নন।

Serverless Redis ক্যাশিং দিয়ে Strapi পারফরম্যান্স বাড়ান

কন্টেন্ট টাইপের জন্য পারমিশন সেট করা

আমাদের একটি আর্টিকেল টাইপ এবং একটি আসল আর্টিকেল আছে, কিন্তু এটি পাবলিকের জন্য অ্যাক্সেসযোগ্য নয়। এটিকে পরিবর্তন করতে, আমাদের পাবলিক রোল আপডেট করতে হবে। Figure 4 দেখায় নেভিগেশনে আপনি কোথায় পাবেন।

Serverless Redis ক্যাশিং দিয়ে Strapi পারফরম্যান্স বাড়ান

পাবলিক রোলে ক্লিক করুন এবং তারপর "Article" পারমিশনসে। এখানে আপনাকে "find" এবং "findOne" সিলেক্ট করতে হবে এবং "Save" ক্লিক করতে হবে, এইভাবে যে কেউ সেই API খুললে সব আর্টিকেল লিস্ট করতে পারবে এবং একটি আর্টিকেল লোড করতে পারবে।

যখন আপনি ব্রাউজারে articles রিসোর্স খুলবেন, আপনি আমাদের নতুন আর্টিকেলটি দেখতে পাবেন। ডিফল্ট Strapi সেটিংস আপনাকে নিচের URL-এ রিসোর্স দেবে:

https://localhost:1337/api/articles

রেসপন্সটি কিছু এরকম দেখাবে:

{ "data": [ { "id": 2, "attributes": { "title": "My First Article", "content": "This is an article!", "createdAt": "2022-04-06T15:29:48.104Z", "updatedAt": "2022-04-06T15:29:48.949Z", "publishedAt": "2022-04-06T15:29:48.948Z" } } ], "meta": { "pagination": { "page": 1, "pageSize": 25, "pageCount": 1, "total": 1 } } }

REST Cache যোগ করা

শেষে, Upstash Redis-এ ক্যাশিং যোগ করার রোমাঞ্চক অংশ!

এটি করার জন্য, আপনাকে প্রথমে তিনটি প্যাকেজ ইনস্টল করতে হবে।

yarn add strapi-plugin-redis \ strapi-plugin-rest-cache \ strapi-provider-rest-cache-redis

এই তিনটি প্যাকেজ Strapi কে আপনার Upstash Redis ডাটাবেসে ডেটা পাঠাতে দেবে।

একটি Upstash Redis ডাটাবেস তৈরি করা

ক্যাশ সঠিকভাবে কনফিগার করতে, আমাদের একটি Redis ইন্সট্যান্সের URL দরকার। এর জন্য, আমাদের একটি Upstash Redis ডাটাবেস তৈরি করতে হবে। তাহলে Upstash Console ব্রাউজারে খুলুন এবং "Create database" বাটনে ক্লিক করুন।

ক্রিয়েশন প্রসেস ফিনিশ হলে, আপনি ডাটাবেস URL ধরে নিতে পারেন, যা শুধু সেকেন্ডের কথা। "Node" ট্যাব বেছে নিন, এবং কোড উদাহরণ থেকে URL কপি করুন Figure 5-এ দেখানো মতো।

Serverless Redis ক্যাশিং দিয়ে Strapi পারফরম্যান্স বাড়ান

REST Cache কনফিগার করা

REST cache কনফিগার করতে, আপনাকে config/plugins.js-এ একটি ফাইল তৈরি করতে হবে নিচের কন্টেন্টসহ:

module.exports = { redis: { config: { connections: { default: { connection: "REDIS_URL" }, }, }, }, "rest-cache": { config: { provider: { name: "redis" }, strategy: { contentTypes: [{ contentType: "api::article.article", hitpass: false }], //debug: true, }, }, }, };

redis ফিল্ডে, আমরা Upstash Redis ডাটাবেসের সাথে কানেকশন কনফিগার করি। পূর্বের ধাপ থেকে URL-এ Strapi-এর প্রয়োজনীয় সব ক্রেডেনশিয়াল থাকে।

rest-cache ফিল্ডে, আমরা ক্যাশকে বলে দিই কোন প্রোভাইডার ব্যবহার করবে এবং কোন কন্টেন্ট টাইপ ক্যাশ করা উচিত। আমাদের কেসে, এটি শুধু আর্টিকেল কন্টেন্ট টাইপ। hitpass: false নিশ্চিত করে যে কন্টেন্ট সবসময় ক্যাশ হবে, এমনকি যদি কিছু অথেন্টিকেশন ঘটে।

আপনি যদি debug: true আনকমেন্ট করেন, আপনি কিছু ডিবাগ আউটপুট দেখবেন। এই আউটপুট ক্যাশ কাজ করছে কিনা তা দেখতে সহজ করে দেয়।

Strapi ডিফল্ট হিসেবে SQLite ব্যবহার করে, যা আপনার ডেভেলপমেন্ট কম্পিউটারে ইন-প্রসেস চলে, তাই এটি Upstash Redis-এর চেয়ে দ্রুত হবে যা এই সিস্টেম থেকে কিলোমিটার দূরে ডিপ্লয়ড। একটি রিয়েল ডাটাবেস সার্ভারের সাথে প্রোডাকশন এনভায়রনমেন্টে বিষয়গুলো সম্পূর্ণ ভিন্ন দেখাবে।

ক্যাশ টেস্ট করা

সবকিছু সঠিকভাবে কনফিগার করার পরে, আমরা ডেভেলপমেন্ট সার্ভার রিস্টার্ট করতে পারি:

yarn run develop

যখন সার্ভার আপ এবং রানিং হয়, আমরা আবার এটিকে এই URL-এ অ্যাক্সেস করতে পারি:

https://localhost:1337/api/articles

আমাদের ডাটাবেস প্রথম রিকোয়েস্ট সার্ভ করবে, এবং Upstash Redis বাকিগুলো করবে।

উপসংহার

Upstash Redis ব্যবহার করলে একটি Strapi ডিপ্লয়মেন্ট স্পিড আপ করা শুধু মিনিটের কাজ। Upstash Console আমাদের একটি URL দেয় যা আমরা সিম্পলি কনফিগ-এ পেস্ট করে দিতে পারি, এবং এটাই সব।

প্রথম Upstash Redis ডাটাবেসটি এমনকি ফ্রি, তাই চেক আউট করুন; কোনো ক্রেডিট কার্ড দরকার নেই!

  1. Render-এ Upstash Serverless Redis দিয়ে Next.js ডিপ্লয় করুন

  2. গ্লোবাল সার্ভারলেস এবং এজ ডেটাবেস: সিমলেস, স্কেলেবল স্টোরেজ

  3. এজ ক্যাশিংয়ে Redis-র মাধ্যমে ৫ মিলিসেকেন্ড গ্লোবাল লেটেন্সি অর্জন

  4. Pipeline REST API দিয়ে সার্ভারলেস Redis এক্সেস বাড়ান