API Gateway এবং Rate Limiting কি?
API Gateway হল একটি সার্ভিস যা একাধিক API গুলির সামনে একটি একক এন্ট্রি পয়েন্ট হিসেবে কাজ করে। এটি বিভিন্ন ফাংশনালিটি যেমন রাউটিং, লোড ব্যালান্সিং, অথেনটিকেশন, অথোরাইজেশন এবং Rate Limiting সরবরাহ করতে পারে। Rate Limiting হল এমন একটি কৌশল যা একটি নির্দিষ্ট সময়ে কতবার কোনো API অ্যাক্সেস করা যাবে তা নিয়ন্ত্রণ করে। এটি সার্ভারে অতিরিক্ত লোড কমাতে এবং সেবা সুস্থ রাখতে সাহায্য করে।
API Gateway-এ Rate Limiting ব্যবহার করা হলে, এটি API কলের সংখ্যা সীমিত করে, যাতে একটি নির্দিষ্ট সময়ের মধ্যে একাধিক অনুরোধ করার ফলে সিস্টেমে অব্যাহত চাপ না পড়ে। এই পদ্ধতিটি সাধারণত ডিজিটাল সার্ভিসের নিরাপত্তা, স্থিতিশীলতা এবং পারফরম্যান্সের উন্নতিতে সহায়তা করে।
API Gateway এবং Rate Limiting ইমপ্লিমেন্টেশন
API Gateway এ Rate Limiting প্রয়োগ করার জন্য সাধারণত API Gateway Tools বা Proxy Servers ব্যবহৃত হয়, যেমন:
- Kong API Gateway
- AWS API Gateway
- Nginx
- Express.js (Node.js framework)
এখানে, আমরা Express.js (Node.js ভিত্তিক) API Gateway এবং Rate Limiting প্রয়োগ করার একটি উদাহরণ দেখব।
Express.js এর মাধ্যমে Rate Limiting ইমপ্লিমেন্ট করা
Express.js একটি জনপ্রিয় Node.js ওয়েব অ্যাপ্লিকেশন ফ্রেমওয়ার্ক যা সহজে RESTful API তৈরি করতে সাহায্য করে। Rate Limiting সাধারণত express-rate-limit লাইব্রেরি দিয়ে ইমপ্লিমেন্ট করা হয়, যা ইনস্টল করার পর বিভিন্ন কনফিগারেশনের মাধ্যমে রিকোয়েস্ট সংখ্যা সীমিত করে।
১. Express.js এবং express-rate-limit ইনস্টলেশন
প্রথমে, আপনার Node.js প্রোজেক্টে express এবং express-rate-limit প্যাকেজ ইনস্টল করুন।
npm install express express-rate-limit
২. Rate Limiting কনফিগারেশন
এখানে, আমরা express-rate-limit ব্যবহার করে API Gateway-এ Rate Limiting কনফিগার করব।
const express = require('express');
const rateLimit = require('express-rate-limit');
// Express অ্যাপ্লিকেশন তৈরি
const app = express();
// Rate Limiting কনফিগারেশন
const limiter = rateLimit({
windowMs: 60 * 1000, // 1 মিনিট
max: 100, // প্রতি মিনিটে সর্বাধিক 100 রিকোয়েস্ট
message: "Too many requests, please try again later."
});
// Rate Limiting সমস্ত রাউটের জন্য প্রয়োগ
app.use(limiter);
// একটি সাধারণ রাউট তৈরি
app.get('/', (req, res) => {
res.send('Hello, World!');
});
// পোর্ট 3000 এ অ্যাপ্লিকেশন চালু
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
এখানে:
windowMs: এই প্যারামিটারটি এক নির্দিষ্ট সময়ের ইন্টারভ্যাল নির্ধারণ করে (যেমন 1 মিনিট)।max: প্রতিwindowMsসময়ের মধ্যে কতবার API কল করা যাবে, সেটি নির্ধারণ করে।message: যখন রিকোয়েস্ট সীমা অতিক্রম করা হবে, তখন ব্যবহারকারীকে যে বার্তা দেখানো হবে।
৩. Rate Limiting এর প্রভাব
এখন, আপনি যদি এক মিনিটের মধ্যে 100টির বেশি রিকোয়েস্ট পাঠান, তাহলে আপনি একটি "Too many requests" বার্তা পাবেন।
curl http://localhost:3000
যদি 100টির বেশি রিকোয়েস্ট পাঠানো হয়, তাহলে আপনি এই মেসেজটি পাবেন:
Too many requests, please try again later.
এটি নিশ্চিত করবে যে সার্ভার প্রয়োজনের অতিরিক্ত চাপ না নেবে এবং সার্ভিসের স্থিতিশীলতা বজায় থাকবে।
AWS API Gateway ব্যবহার করে Rate Limiting
AWS API Gateway ক্লাউড-বেজড API গেটওয়ে সেবা যা Amazon Web Services (AWS) দ্বারা সরবরাহিত। এর মাধ্যমে আপনি আপনার API গুলিতে Rate Limiting সহজেই প্রয়োগ করতে পারেন।
১. API Gateway Console ব্যবহার করে Rate Limiting
- API Gateway Console এ যান:
- AWS Management Console থেকে API Gateway নির্বাচন করুন।
- API নির্বাচন করুন:
- আপনার API গেটওয়ে নির্বাচন করুন বা নতুন API তৈরি করুন।
- Usage Plan তৈরি করুন:
- Usage Plan সেটআপ করে, সেটির মাধ্যমে রিকোয়েস্ট সীমা নির্ধারণ করতে পারবেন। উদাহরণস্বরূপ, 1 মিনিটে 1000 রিকোয়েস্ট।
- Throttling Settings কনফিগার করুন:
- Throttling সেটিংসে Rate Limiting প্রয়োগ করুন:
- Rate: প্রতি সেকেন্ডে কত রিকোয়েস্ট অনুমোদিত হবে (উদাহরণ: 1000 রিকোয়েস্ট প্রতি সেকেন্ড)।
- Burst: থ্রোটলিং পরিস্থিতিতে কত রিকোয়েস্ট একসাথে অনুমোদিত হবে (উদাহরণ: 2000 রিকোয়েস্ট)।
- Throttling সেটিংসে Rate Limiting প্রয়োগ করুন:
- API ডিপ্লয় করুন:
- সমস্ত কনফিগারেশন শেষ হলে API গেটওয়ে ডিপ্লয় করুন।
এভাবে AWS API Gateway ব্যবহার করে আপনি আপনার API-তে Rate Limiting এবং Throttling প্রয়োগ করতে পারবেন।
সারাংশ
API Gateway ব্যবহার করে Rate Limiting ইমপ্লিমেন্ট করা একটি গুরুত্বপূর্ণ কৌশল, যা সার্ভারকে অতিরিক্ত চাপ থেকে রক্ষা করে এবং সিস্টেমের স্থিতিশীলতা নিশ্চিত করে। Express.js বা AWS API Gateway এর মতো টুল ব্যবহার করে আপনি সহজেই API-তে Rate Limiting প্রয়োগ করতে পারেন। Express.js-এ express-rate-limit লাইব্রেরি এবং AWS API Gateway-তে Usage Plan এবং Throttling এর মাধ্যমে আপনি Rate Limiting কনফিগার করতে পারবেন। Rate Limiting সার্ভিসের পারফরম্যান্স এবং নিরাপত্তা বৃদ্ধিতে সহায়ক।
Read more