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

AWS Lambda-তে Redis REST দিয়ে স্টেট ম্যানেজমেন্ট: একটি প্র্যাকটিক্যাল গাইড

AWS Lambda সার্ভারলেস স্পেসের পথপ্রদর্শক। অনেক ডেভেলপার মনে করেন সার্ভারলেসই ডেভেলপমেন্টের ভবিষ্যৎ। এটি আপনাকে আসল পে-পার-ইউজ মডেল দেয়, ব্যাকএন্ড ইনফ্রাস্ট্রাকচারের রক্ষণাবেক্ষণ এবং স্কেলিং থেকে মুক্ত করে। কিন্তু এর চ্যালেঞ্জও আছে। 그중 একটি হলো এর স্টেটলেস প্রকৃতি। স্টেট এক্সটার্নাল ডেটা স্টোরে রাখতে হয়। দুর্ভাগ্য 익숙 ব্যাপক ডেটা স্টোরগুলো কানেকশন-ভিত্তিক। যেমন এই পোস্টে ব্যাখ্যা করা হয়েছে, সার্ভারলেসে কানেকশন ম্যানেজ করা যন্ত্রণাদায়ক হতে পারে। তাই আমরা Upstash Redis-এ হাই-পারফরম্যান্স REST API তৈরি করেছি। এই ব্লগ পোস্টে আমি AWS Lambda এবং Upstash Redis REST API ব্যবহার করে একটি বেসিক স্টেটফুল API (পেজ কাউন্টার) বানাবো।

লাইভ ডেমো: https://3jyz1n07o8.execute-api.us-east-1.amazonaws.com/count

কোড: GitHub রিপো

প্রজেক্ট সেটআপ

আমরা Serverless Framework ব্যবহার করব ডিপ্লয় করতে।

git:(master) ✗ serverless
Serverless: No project detected. Do you want to create a new one? Yes
Serverless: What do you want to make? AWS Node.js
Serverless: What do you want to call this project? aws-lambda-redis-rest
Project successfully created in 'aws-lambda-redis-rest' folder.

কোড

npm install node-fetch দিয়ে fetch ইনস্টল করুন। তারপর Upstash কনসোল থেকে ডেটাবেস তৈরি করুন। REST API বাটনে ক্লিক করে URL এবং টোকেন কপি করুন। handler.js আপডেট করুন নিচের মতো:

const fetch = require("node-fetch");
module.exports.hello = async (event) => {
  const url = "https://us1-last-panther-33620.upstash.io/incr/counter?_token=AACQgMzYyNGM0OGMtZWQ3MC00OTRlLWFmOGEtODc3ZWQxYWQyZGJjZjgyOTlkM2JhNWIxE3OTJlNmE2NGVjNGM=";
  let data = await fetch(url);
  let result = await data.text();
  return {
    statusCode: 200,
    body: result
  };
};

serverless.yml-এ API এন্ডপয়েন্ট যোগ করুন:

service: aws-lambda-redis-rest
frameworkVersion: '2'
provider:
  name: aws
  runtime: nodejs12.x
  lambdaHashingVersion: 20201221
functions:
  hello:
    handler: handler.hello
    events:
      - httpApi:
          path: /count
          method: get

রান এবং ডিপ্লয়

লোকালি ফাংশন চালান:

serverless invoke local -f hello

ডিপ্লয় করুন:

serverless deploy

কম্যান্ড আউটপুটে URL পাবেন যা ব্রাউজারে চেক করতে পারবেন।

নোটস

  • সর্বোত্তম পারফরম্যান্সের জন্য ডেটাবেস এবং AWS Lambda ফাংশন একই রিজনে রাখুন।
  • REST API-এর কারণে ডেটাবেস কানেকশন ম্যানেজ করতে হয় না এবং কোনো Redis ক্লায়েন্ট লাগে না।
  • API টোকেন পাবলিক শেয়ার করবেন না। যদি লিক হয়, ডেটাবেসের পাসওয়ার্ড রিসেট করে রিভোক করতে পারেন।
  • একই ফাংশনে একাধিক কমান্ড রান করতে চাইলে সর্বোত্তম পারফরম্যান্সের জন্য Pipeline API ব্যবহার করুন।
  1. ফ্লাটার, সার্ভারলেস ফ্রেমওয়ার্ক এবং আপস্ট্যাশ রেডিস দিয়ে ফুল-স্ট্যাক সার্ভারলেস মোবাইল অ্যাপ তৈরি করুন – পার্ট ২

  2. ফ্লাটার, সার্ভারলেস ফ্রেমওয়ার্ক এবং আপস্ট্যাশ রেডিস দিয়ে ফুল-স্ট্যাক সার্ভারলেস ফ্লাটার অ্যাপ বানান – পার্ট ১

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

  4. Cloudflare Workers-এ Redis ব্যবহার করে এজ কম্পিউটিং-এর শক্তি ব্যবহার করুন