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

সার্ভারলেস অ্যাপে রেট লিমিটিং মাস্টার করুন: রিসোর্স রক্ষা ও খরচ নিয়ন্ত্রণ

সার্ভারলেসের সেরা দিকlerden একটি হলো বিশাল ট্রাফিক স্পাইকেও স্কেল করার ক্ষমতা। কিন্তু দুর্ভাগ্য, স্কেলিং ফ্রি নয়—ন অর্থনৈতিকভাবে ন টেকনিক্যালি। তাই ডেভেলপারদের তাদের অ্যাপ্লিকেশনের স্কেলেবিলিটি কন্ট্রোল করতে হয়। সার্ভারলেস অ্যাপ্লিকেশনে রেট লিমিটিং মেকানিজমের প্রধান কারণগুলো:

১. আপনার রিসোর্স রক্ষা: যদি আপনি পাবলিক API প্রদান করেন, ট্রাফিক স্পাইক সার্ভিস কোয়ালিটি ডিগ্রেড করতে পারে এবং সব ইউজারের জন্য সার্ভিস আউটেজের দিকে পরিচালিত করতে পারে। ক্যাসকেডিং ফেইলার এবং স্বয়ংক্রিয় DDoS ঘটনা থেকে সিস্টেম রক্ষা করতে হবে। আপনার অ্যাপ্লিকেশনের একটি বাগ এমন সমস্যা সৃষ্টি করতে পারে। একটি ইন্টারন্যাল প্রসেস যা ফেইল হলে এন্ডপয়েন্ট ইনডিফিনিটলি রিট্রাই করে, সহজে আপনার রিসোর্স এক্সহাস্ট করতে পারে।

২. ইউজার কোটা ম্যানেজমেন্ট: আপনি আপনার সার্ভিসের ন্যায় ব্যবহার নিশ্চিত করতে ইউজার কোটা ডিফাইন করতে পারেন। আপনি যদি ভিন্ন প্রাইসিং টিয়ারে সার্ভিস দেন তবে কোটা লাগবে।

৩. খরচ নিয়ন্ত্রণ: অনকন্ট্রোল্ড সিস্টেম কিভাবে বড় বিল সৃষ্টি করে তার রিয়েল লাইফ উদাহরণ বহু। সার্ভারলেসের হাই স্কেলেবল ন্যাচারের কারণে এটি বড় রিস্ক। রেট লিমিটিং এই খরচ কন্ট্রোল করতে সাহায্য করে।

সমাধান

বিভিন্ন লেয়ারে একাধিক রেট লিমিটিং সমাধান আছে। ৩টি প্রধান সমাধানের সংক্ষিপ্ত প্রস/কনস বিশ্লেষণ:

১. ফাংশনের কনকারেন্সি লেভেল:

ক্লাউড প্রোভাইডার একাধিক কন্টেইনার তৈরি করে সার্ভারলেস ফাংশন এক্সিকিউশন স্কেল করে। আপনি ম্যাক্স কনকারেন্ট কন্টেইনার/ইনস্ট্যান্সের লিমিট সেট করতে পারেন। এটি কনকারেন্সি লিমিট করতে সাহায্য করলেও এটি কন্ট্রোল করে না আপনার ফাংশন প্রতি সেকেন্ডে কতবার কল হবে।

AWS Lambda এবং Google Cloud Functions-এ কনকারেন্সি লিমিট করার গাইড।

Pros: ওভারহেড নেই, কনফিগার করা সহজ।
Cons: সম্পূর্ণ সমাধান নয়। শুধু কনকারেন্সি কন্ট্রোল করে। প্রতি সেকেন্ড এক্সিকিউশন সংখ্যা লিমিটেড নয়।

২. API Gateway-এ রেট লিমিটিং:

যদি API Gateway-এর মাধ্যমে ফাংশন এক্সেস করেন, তবে API Gateway-এ রেট লিমিটিং পলিসি অ্যাপ্লাই করতে পারেন। AWS এবং GCP-র কনফিগারেশন গাইড।

Pros: ওভারহেড নেই, কনফিগার করা সহজ।
Cons: শুধু API Gateway ব্যবহার করলে लागু হয়। ইউজার বা IP অনুযায়ী কোটা মানের মতো সফিস্টিকেটেড কেস সাপোর্ট করে না।

৩. Redis দিয়ে রেট লিমিটিং:

এটি সবচেয়ে সম্পূর্ণ এবং শক্তিশালী সমাধান। অনেক Redis-ভিত্তিক রেট লিমিটিং লাইব্রেরি আছে। Jeremy Daly-এর ব্লগ পোস্টে Elasticache কে রিজেক্ট করা হয়েছে বলে, "this adds a 'non-serverless' component and another thing to manage"। এখানে Upstash এর সার্ভারলেস মডেল এবং পার-রিকোয়েস্ট প্রাইসিং-এর কারণে এটি চমৎকার বিকল্প।

Pros: পাওয়ারফুল, আপনার ইউজার মডেল ফিট করে কাস্টমাইজড লজিক বাস্তবায়ন করতে পারেন। স্কেলেবল সমাধান। GitHub কীভাবে Redis ব্যবহার করে রেট লিমিটিং-এ দেখুন। রিচ ইকোসিস্টেম, অনেক ওপেন সোর্স লাইব্রেরি: redis_rate, redis-cell, node-ratelimiter।
Cons: Redis ব্যবহারের ওভারহেড।

কোড: Redis দিয়ে রেট লিমিটিং

রেট লিমিটিং লাইব্রেরির 덕분에 আপনার অ্যাপ্লিকেশন কোডে রেট লিমিটিং অ্যাপ্লাই করা খুব সহজ। নিচে উদাহরণ কোড AWS Lambda ফাংশন এক্সিকিউশন IP প্রতি সেকেন্ডে লিমিট করে:

const RateLimiter = require("async-ratelimiter");
const Redis = require("ioredis");
const { getClientIp } = require("request-ip");

const rateLimiter = new RateLimiter({
  db: new Redis("YOUR_REDIS_URL"),
  max: 1,
  duration: 5_000,
});

module.exports.hello = async (event) => {
  const clientIp = getClientIp(event) || "NA";
  const limit = await rateLimiter.get({ id: clientIp });
  if (!limit.remaining) {
    return {
      statusCode: 429,
      body: JSON.stringify({
        message: "Sorry, you are rate limited. Wait for 5 seconds",
      }),
    };
  }
  return {
    statusCode: 200,
    body: JSON.stringify({ message: "hello!" }),
  };
};

পুরো উদাহরণের জন্য টিউটোরিয়াল দেখুন।

রিডিং লিস্ট

  1. PayPal একাউন্ট লিমিটেড হয়ে যাওয়া থেকে বাঁচুন

  2. সাধারণ পুরনো মনিটর রিফ্রেশ রেট ওভারক্লক করার পদ্ধতি

  3. উইন্ডোজ ১০ PC-এ RAM ফ্রি আপ করে স্পিড বাড়ানোর সহজ উপায়

  4. Mac-এ ডিফল্ট অ্যাপ্লিকেশন পরিবর্তন: ধাপে ধাপে গাইড