Serverless এবং Lambda Integration

Database Tutorials - ডকুমেন্ট ডিবি (DocumentDB)
251
251

Serverless computing হল এমন একটি ক্লাউড কম্পিউটিং মডেল যেখানে ডেভেলপাররা সার্ভার পরিচালনা বা ইনফ্রাস্ট্রাকচার নিয়ে চিন্তা না করে কোড লিখে অ্যাপ্লিকেশন তৈরি করতে পারেন। AWS Lambda হল একটি serverless প্ল্যাটফর্ম যা ব্যবহারকারীদের code execution এর জন্য সার্ভারের ব্যবস্থাপনা করতে না দিয়ে শুধুমাত্র ফাংশন রান করতে দেয়। AWS Lambda ব্যবহার করে আপনি কোড চালাতে পারেন যা নির্দিষ্ট ট্রিগার বা ইভেন্টের মাধ্যমে চলবে, এবং Lambda স্বয়ংক্রিয়ভাবে সম্পদ বরাদ্দ, স্কেলিং এবং রক্ষণাবেক্ষণ পরিচালনা করবে।

DocumentDB এর সাথে Serverless এবং Lambda Integration আপনাকে serverless অ্যাপ্লিকেশন তৈরি করতে সহায়ক হবে যা DocumentDB এর সাথে সংযোগ স্থাপন করে ডেটা পড়া, লেখা এবং আপডেটের জন্য সহজে কোড চালাতে সক্ষম হবে।


Serverless Computing Overview

Serverless computing একটি ক্লাউড কনসেপ্ট যেখানে অ্যাপ্লিকেশন চালানোর জন্য কোন নির্দিষ্ট সার্ভারের প্রয়োজন হয় না। এর মানে, আপনি কেবলমাত্র আপনার কোড লিখবেন, এবং ক্লাউড প্রোভাইডার (যেমন AWS) আপনার জন্য সার্ভার বা ইনফ্রাস্ট্রাকচার পরিচালনা করবে।

এতে গুরুত্বপূর্ণ কিছু সুবিধা রয়েছে:

  • স্বয়ংক্রিয় স্কেলিং: অ্যাপ্লিকেশনটি স্বয়ংক্রিয়ভাবে স্কেল হয় এবং কোনো অতিরিক্ত ব্যাচ বা সার্ভারের প্রয়োজন পড়ে না।
  • অথবা কেবল কোডের খরচ: আপনি শুধুমাত্র কোড রান করার জন্য খরচ বহন করেন।
  • ফাংশন ভিত্তিক চালনা: কোডের নির্দিষ্ট অংশ কাজ করার জন্য ব্যবহৃত হয়, যেমন API কল বা ইভেন্টের ভিত্তিতে।

AWS Lambda Overview

AWS Lambda হল একটি serverless কম্পিউটিং সেবা যা ডেভেলপারদের কোড চালানোর জন্য কোনো সার্ভার বা ইনফ্রাস্ট্রাকচার পরিচালনা না করেই কেবলমাত্র কোডে মনোযোগ দেওয়ার সুযোগ দেয়।

Lambda সেবা আপনাকে বিভিন্ন ইভেন্টের মাধ্যমে কোড চালানোর সুযোগ দেয়:

  • API Gateway: REST API বা HTTP endpoint এর মাধ্যমে Lambda ফাংশন চালাতে পারে।
  • S3 Events: যখন কোনো নতুন ফাইল আপলোড হয়, তখন Lambda ফাংশন চালানো যেতে পারে।
  • SNS (Simple Notification Service): যখন SNS মেসেজ পাওয়া যায়, তখন Lambda ফাংশন ট্রিগার হতে পারে।

Lambda এ কোড লেখার সময় আপনাকে কেবলমাত্র function handler (প্রধান কোড) প্রদান করতে হয় এবং AWS Lambda বাকিটা পরিচালনা করে, যেমন স্কেলিং এবং ইনফ্রাস্ট্রাকচার।


DocumentDB এবং Lambda Integration

Amazon DocumentDB কে serverless অ্যাপ্লিকেশন সঙ্গে ইন্টিগ্রেট করার মাধ্যমে, আপনি AWS Lambda ব্যবহার করে ডেটাবেস থেকে ডেটা পড়া, লেখা বা আপডেট করতে পারবেন, এবং অ্যাপ্লিকেশনগুলির মধ্যে ডেটাবেস অপারেশন সহজভাবে পরিচালনা করতে পারবেন।

ধাপ ১: DocumentDB ক্লাস্টার তৈরি করা

প্রথমে আপনাকে Amazon DocumentDB ক্লাস্টার তৈরি করতে হবে, যেখানে আপনার ডেটা সংরক্ষিত থাকবে। আপনি VPC, Security Group, এবং অন্যান্য কনফিগারেশন নির্ধারণ করবেন যা Lambda ফাংশনের সাথে কাজ করবে।

ধাপ ২: Lambda ফাংশন তৈরি করা

Lambda ফাংশন তৈরি করতে:

  1. AWS Lambda Console এ যান।
  2. একটি নতুন Lambda ফাংশন তৈরি করুন।
  3. ফাংশনের জন্য প্রয়োজনীয় runtime নির্বাচন করুন (যেমন Python, Node.js, Java)।
  4. Execution Role তৈরি করুন যা Lambda ফাংশনকে DocumentDB-এ অ্যাক্সেস করার অনুমতি দেয়। এই রোলটি IAM role হবে এবং AmazonDynamoDBFullAccess বা AmazonRDSFullAccess মতো অনুমতি প্রাপ্ত হবে।

ধাপ ৩: DocumentDB ক্লাস্টারে সংযোগ স্থাপন

Lambda ফাংশনকে DocumentDB ক্লাস্টারের সাথে সংযোগ স্থাপনের জন্য, আপনার Lambda ফাংশনে ড্রাইভার যুক্ত করতে হবে (যেমন MongoDB ড্রাইভার) এবং endpoint, username, password সহ সংযোগ স্থাপন করতে হবে।

উদাহরণস্বরূপ, Node.js এ MongoDB ড্রাইভার ব্যবহার করে সংযোগ স্থাপন:

const { MongoClient } = require('mongodb');

// DocumentDB connection string
const uri = 'mongodb://username:password@docdb-endpoint:27017/mydb';

exports.handler = async (event) => {
  const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });
  
  try {
    await client.connect();
    const database = client.db('mydb');
    const collection = database.collection('mycollection');
    
    // Query or insert/update data
    const result = await collection.findOne({ status: 'active' });
    
    return result;
  } finally {
    await client.close();
  }
};

এই কোডটি DocumentDB ক্লাস্টারের সাথে সংযোগ স্থাপন করে এবং mycollection থেকে একটি ডকুমেন্ট খুঁজে বের করে যেখানে status "active"


ধাপ ৪: Lambda ফাংশন ট্রিগার কনফিগার করা

Lambda ফাংশনকে ট্রিগার করার জন্য API Gateway, SNS, S3 বা CloudWatch Events ব্যবহার করা যেতে পারে।

API Gateway ব্যবহার করে Lambda ট্রিগার:

  1. API Gateway কনফিগার করুন যা HTTP বা REST API তৈরি করবে।
  2. Lambda ফাংশনকে API Gateway এর সাথে ইন্টিগ্রেট করুন।
  3. API এর মাধ্যমে ইনকামিং HTTP রিকোয়েস্ট Lambda ফাংশন ট্রিগার করবে।

ধাপ ৫: Monitoring এবং Logging

AWS Lambda ফাংশনগুলি Amazon CloudWatch Logs-এ লগ করে। এটি আপনাকে Lambda ফাংশনের কার্যকারিতা পর্যবেক্ষণ করতে এবং ত্রুটির ক্ষেত্রে দ্রুত সমস্যা চিহ্নিত করতে সহায়ক হবে।


Lambda এবং DocumentDB Integration এর সুবিধা

  • Serverless: Lambda ব্যবহার করে আপনি কোনো ইনফ্রাস্ট্রাকচার ম্যানেজ না করে কেবলমাত্র আপনার কোডে মনোযোগ দিতে পারেন।
  • স্বয়ংক্রিয় স্কেলিং: Lambda কোডটি ট্রিগার হওয়ার সাথে সাথে স্কেল হয়, এবং শুধুমাত্র ব্যবহৃত রিসোর্সের জন্যই খরচ হয়।
  • ডেটাবেস অপারেশন: Lambda ফাংশন দিয়ে আপনি DocumentDB ডেটাবেসে দ্রুত ডেটা পড়া, লেখা বা আপডেট করতে পারবেন।
  • কম খরচ: Lambda-তে আপনি শুধু কোড চালানোর জন্য খরচ প্রদান করেন, এবং আপনি অব্যবহৃত সময়ে কোনো খরচ বহন করেন না।

Conclusion

AWS Lambda এবং DocumentDB এর ইন্টিগ্রেশন ব্যবহার করে আপনি serverless অ্যাপ্লিকেশন তৈরি করতে পারেন যা real-time data synchronization এবং scalable data operations প্রদান করে। Lambda-এর ট্রিগার, স্বয়ংক্রিয় স্কেলিং, এবং DocumentDB-এর উচ্চ পারফরম্যান্স ডেটাবেস সিস্টেম একসাথে একটি শক্তিশালী, স্কেলেবল এবং খরচ-কার্যকর সমাধান তৈরি করতে সাহায্য করে।

common.content_added_by

AWS Lambda এর সাথে DocumentDB Integration

222
222

Amazon AWS Lambda একটি serverless কম্পিউটিং পরিষেবা যা আপনাকে কোড চালানোর জন্য কোনও সার্ভার পরিচালনা করতে দেয় না। AWS Lambda ব্যবহার করে আপনি বিভিন্ন AWS পরিষেবা, যেমন Amazon DocumentDB, এর সাথে সহজে ইন্টিগ্রেট করতে পারেন। DocumentDB-কে Lambda ফাংশনের সাথে সংযুক্ত করে আপনি অটোমেটেড ডেটা প্রসেসিং, অ্যাকশন ট্রিগারিং, ডেটাবেস অপারেশন (যেমন, ইনসার্ট, আপডেট, ডিলিট) এবং সোর্স থেকে ডেটা সংগ্রহ সহ বিভিন্ন কার্যক্রম পরিচালনা করতে পারেন।

এখানে AWS Lambda এর সাথে DocumentDB Integration করার ধাপগুলি বর্ণনা করা হয়েছে।


১. Lambda ফাংশন তৈরি করা

প্রথমে একটি Lambda ফাংশন তৈরি করতে হবে যা DocumentDB এর সাথে যোগাযোগ করবে এবং ডেটাবেসে প্রয়োজনীয় অপারেশন সম্পাদন করবে।

ধাপ:

  1. AWS Management Console এ লগইন করুন।
  2. AWS Lambda পরিষেবায় যান এবং Create Function নির্বাচন করুন।
  3. ফাংশনের নাম দিন এবং Runtime নির্বাচন করুন (যেমন Python, Node.js, Java ইত্যাদি)।
  4. Execution Role নির্বাচিত করুন অথবা নতুন একটি IAM Role তৈরি করুন যা Lambda ফাংশনকে DocumentDB এর সাথে সংযুক্ত হতে সহায়তা করবে।
  5. Lambda ফাংশন তৈরি করুন।

২. Lambda ফাংশনে DocumentDB কানেকশন সেটআপ করা

Lambda ফাংশনে DocumentDB এর সাথে কানেক্ট করতে, আপনি প্রথমে MongoDB-কে সমর্থনকারী লাইব্রেরি (যেমন mongodb লাইব্রেরি) ব্যবহার করতে পারেন। এটি MongoDB API-কে সমর্থন করে, যা DocumentDB এর সাথে যোগাযোগ করতে সক্ষম।

ধাপ:

  1. আপনার Lambda ফাংশনের Deployment Package তৈরি করতে হবে। যদি আপনি Python ব্যবহার করছেন, তবে pymongo লাইব্রেরি ইনস্টল করতে হবে।
pip install pymongo -t .
  1. এখন, আপনার কোডে MongoDB ড্রাইভার ব্যবহার করে DocumentDB-এর সাথে সংযোগ করার জন্য কোড লিখুন।

Python উদাহরণ:

import pymongo
import os

def lambda_handler(event, context):
    # DocumentDB Endpoint এবং Port
    host = os.environ['DOCDB_HOST']   # DocumentDB Endpoint URL
    port = "27017"                    # Default MongoDB port
    username = os.environ['DOCDB_USER']
    password = os.environ['DOCDB_PASSWORD']
    
    # MongoDB URI (DocumentDB-এর জন্য SSL সক্রিয়)
    uri = f"mongodb://{username}:{password}@{host}:{port}/?ssl=true&replicaSet=rs0&readPreference=primary&retryWrites=false"
    
    # MongoDB কানেকশন তৈরি
    client = pymongo.MongoClient(uri)
    
    # ডেটাবেস এবং কোলেকশন নির্বাচন
    db = client['yourDatabase']
    collection = db['yourCollection']
    
    # ডেটা ইনসার্ট করা
    result = collection.insert_one({"name": "Lambda Example", "message": "Hello, DocumentDB!"})
    
    return {
        'statusCode': 200,
        'body': f"Document inserted with id: {result.inserted_id}"
    }

এখানে:

  • DocumentDB-এর host, username, এবং password পরিবেশ ভেরিয়েবল থেকে নেয়া হয়েছে।
  • pymongo লাইব্রেরি ব্যবহার করে DocumentDB এর সাথে সংযোগ করা হচ্ছে।

৩. Lambda Execution Role এবং VPC Configuration

DocumentDB একটি VPC (Virtual Private Cloud)-এর মধ্যে কাজ করে, তাই Lambda ফাংশনকে সেই VPC-এর মধ্যে সংযুক্ত করতে হবে। আপনি যদি Lambda ফাংশনটি VPC এর মধ্যে সংযুক্ত না করেন, তবে এটি DocumentDB এর সাথে যোগাযোগ করতে পারবে না।

ধাপ:

  1. Lambda ফাংশনের Execution Role এ VPC অ্যাক্সেস অনুমতি দিন।
  2. VPC সেটিংসে Lambda ফাংশনটি সেই VPC এর মধ্যে অ্যাসাইন করুন যেখানে DocumentDB হোস্ট করা হয়েছে।
  3. Lambda ফাংশনকে Private Subnet (যেখানে DocumentDB হোস্ট করা থাকে) এবং Security Group অ্যাসাইন করুন যা DocumentDB ক্লাস্টারে অ্যাক্সেস অনুমতি দেয়।

৪. Environment Variables সেট করা

DocumentDB এর সাথে সংযোগ করতে আপনার Lambda ফাংশনে environment variables সেট করতে হবে, যেমন:

  • DOCDB_HOST: DocumentDB ক্লাস্টারের endpoint।
  • DOCDB_USER: DocumentDB ব্যবহারকারীর নাম।
  • DOCDB_PASSWORD: DocumentDB পাসওয়ার্ড।

AWS Management Console এ Lambda ফাংশনের Environment variables সেকশনে এগুলি যোগ করুন।


৫. Lambda ফাংশন ট্রিগার সেট করা

Lambda ফাংশনটিকে একটি ট্রিগার দ্বারা চালিত করতে হবে। আপনি বিভিন্ন ধরণের ট্রিগার সেট করতে পারেন, যেমন:

  • API Gateway: REST API এর মাধ্যমে Lambda ফাংশন ট্রিগার করুন।
  • S3 Bucket: S3 বকেট থেকে একটি ফাইল আপলোড হলে Lambda ফাংশন চালান।
  • SNS/SQS: SNS বা SQS থেকে একটি মেসেজ এলে Lambda ফাংশন চালান।

API Gateway Example: Lambda ফাংশনটি HTTP অ্যাপ্লিকেশনের অংশ হিসেবে কাজ করতে পারে, যেখানে API Gateway দিয়ে HTTP রিকোয়েস্টগুলি Lambda ফাংশনের কাছে পাঠানো হবে।


৬. Lambda এবং DocumentDB-এর মধ্যে অ্যাক্সেস মনিটরিং এবং ত্রুটি নির্ধারণ

  • CloudWatch Logs: Lambda ফাংশনের লগ দেখার জন্য CloudWatch Logs ব্যবহার করুন। এর মাধ্যমে আপনি দেখতে পারবেন যে ফাংশনটি সফলভাবে কাজ করছে কিনা বা কোনো ত্রুটি হচ্ছে কিনা।
  • CloudWatch Metrics: Lambda ফাংশনের পারফরম্যান্স মেট্রিক্স এবং DocumentDB-এর পারফরম্যান্স ট্র্যাক করতে CloudWatch Metrics ব্যবহার করতে পারেন।

৭. খরচ এবং কর্মক্ষমতা অপটিমাইজেশন

Lambda ফাংশনের খরচ এবং কর্মক্ষমতা অপটিমাইজ করতে আপনি নিম্নলিখিত বিষয়গুলো লক্ষ্য করতে পারেন:

  • Function Timeout: Lambda ফাংশনের timeout সীমা 15 মিনিটের মধ্যে থাকবে, তাই আপনাকে কিভাবে আপনার ফাংশনকে দ্রুত সম্পন্ন করতে হবে তা বিবেচনা করতে হবে।
  • Memory Allocation: Lambda ফাংশনের জন্য উপযুক্ত মেমরি বরাদ্দ করা উচিত যাতে এটি কার্যকরীভাবে কাজ করতে পারে এবং খরচ অপটিমাইজ হয়।
  • DocumentDB Query Optimization: MongoDB কুয়েরি অপটিমাইজেশনের মতোই DocumentDB এর কুয়েরি অপটিমাইজেশন করতে হবে যাতে ফাংশনটির কর্মক্ষমতা বৃদ্ধি পায়।

সারাংশ

AWS Lambda এবং Amazon DocumentDB এর সংযোগ একটি শক্তিশালী এবং স্কেলেবল সমাধান প্রদান করে, যা ডেটাবেস অপারেশনগুলোকে স্বয়ংক্রিয় করতে সাহায্য করে। Lambda ফাংশন ব্যবহারের মাধ্যমে আপনি DocumentDB-এ ডেটা ইনসার্ট, আপডেট, ডিলিট এবং আরও অনেক ধরনের অপারেশন সম্পাদন করতে পারেন। সঠিকভাবে VPC কনফিগারেশন, IAM রোল এবং নিরাপত্তা সেটিংস কনফিগার করে আপনি একটি সুরক্ষিত এবং পারফরম্যান্স-অপটিমাইজড ফাংশন তৈরি করতে পারবেন।

common.content_added_by

Serverless API তৈরি করা

208
208

Serverless API তৈরি করা এমন একটি প্রক্রিয়া যা আপনাকে সার্ভার পরিচালনা বা কনফিগার করার ঝামেলা ছাড়াই অ্যাপ্লিকেশন ডেভেলপ করতে সক্ষম করে। AWS Lambda এবং Amazon API Gateway এর মাধ্যমে একটি serverless API তৈরি করা যায়। এই কনসেপ্টটি মূলত ক্লাউড কম্পিউটিং পরিবেশে চলে, যেখানে আপনি শুধু কোড লেখেন এবং তা রান করার জন্য কোনও সার্ভার বা ইনফ্রাস্ট্রাকচার ম্যানেজ করার দরকার হয় না।

এখানে AWS ব্যবহারের মাধ্যমে একটি Serverless API তৈরির ধাপ ব্যাখ্যা করা হয়েছে।


প্রথমে কি প্রয়োজন?

  • AWS Account: AWS Lambda, API Gateway, DynamoDB (যদি ডেটাবেস দরকার হয়) ইত্যাদি ব্যবহার করতে হবে, সেগুলোর জন্য একটি অ্যাকাউন্ট থাকতে হবে।
  • IAM Permissions: Lambda এবং API Gateway ব্যবহারের জন্য সঠিক IAM রোল এবং অনুমতি প্রয়োজন।

Step 1: AWS Lambda ফাংশন তৈরি করা

AWS Lambda হলো একটি serverless কম্পিউটিং সেবা যা আপনাকে কোড রান করানোর জন্য কোনো সার্ভার পরিচালনা করতে দেয় না। Lambda ফাংশনগুলি কোডের নির্দিষ্ট টুকরো যা API-এর বেসিক কাজ করতে ব্যবহৃত হয়।

Lambda ফাংশন তৈরি করার ধাপ:

  1. AWS Management Console এ লগইন করুন।
  2. Lambda সার্ভিস নির্বাচন করুন।
  3. Create function নির্বাচন করুন।
  4. Author from Scratch নির্বাচন করুন এবং একটি ফাংশন নাম দিন, যেমন: my-api-function.
  5. একটি Runtime নির্বাচন করুন, যেমন Node.js, Python, অথবা আপনার পছন্দের ভাষা।
  6. Function code সেকশনে আপনার কোড লিখুন।

উদাহরণ: Node.js Lambda ফাংশন:

exports.handler = async (event) => {
    const response = {
        statusCode: 200,
        body: JSON.stringify('Hello from Lambda!'),
    };
    return response;
};
  1. Create function ক্লিক করুন। Lambda ফাংশন এখন তৈরি হয়ে গেছে।

Step 2: API Gateway সেটআপ করা

API Gateway ব্যবহার করে আপনি HTTP API তৈরি করতে পারেন যা Lambda ফাংশনকে ট্রিগার করবে। API Gateway আপনার API কে ইন্টারনেটের মাধ্যমে অ্যাক্সেসযোগ্য করে তোলে।

API Gateway তৈরি করার ধাপ:

  1. AWS Management Console এ ফিরে যান এবং API Gateway সার্ভিস নির্বাচন করুন।
  2. Create API ক্লিক করুন।
  3. HTTP API নির্বাচন করুন (অথবা আপনি REST API নির্বাচন করতে পারেন)।
  4. API নাম দিন (যেমন, my-serverless-api), এবং Create API ক্লিক করুন।

Step 3: Lambda ফাংশনকে API Gateway এর সাথে ইন্টিগ্রেট করা

API Gateway-কে Lambda ফাংশনের সাথে সংযুক্ত করতে হলে, API Gateway একটি Lambda Integration সেটআপ করতে হবে।

Lambda Integration করার ধাপ:

  1. API Gateway ড্যাশবোর্ডে যান।
  2. Routes সেকশনে গিয়ে একটি নতুন route তৈরি করুন (যেমন, GET /hello বা POST /data)।
  3. Integration-এ গিয়ে Lambda function নির্বাচন করুন এবং পূর্বে তৈরি করা Lambda ফাংশনটি নির্বাচন করুন।
  4. Deploy বাটনে ক্লিক করুন এবং APIটি ডিপ্লয় করুন।

Step 4: API-এর জন্য Endpoint তৈরি করা

API Gateway ডিপ্লয় করার পর, একটি Invoke URL বা Endpoint URL তৈরি হবে, যা আপনি API কল করার জন্য ব্যবহার করতে পারবেন। উদাহরণস্বরূপ:

https://xyz123.execute-api.us-west-2.amazonaws.com/hello

এই URL এখন অ্যাক্সেসযোগ্য, এবং আপনি এটি ব্যবহার করে Lambda ফাংশনে GET বা POST রিকোয়েস্ট পাঠাতে পারেন।


Step 5: Testing the Serverless API

এখন আপনি API-এর মাধ্যমে Lambda ফাংশনকে ট্রিগার করতে পারেন। আপনি API Gateway এর Test টুল ব্যবহার করতে পারেন বা আপনার API ইন্ডপয়েন্টে HTTP রিকোয়েস্ট পাঠাতে পারেন।

cURL কমান্ড ব্যবহার:

curl https://xyz123.execute-api.us-west-2.amazonaws.com/hello

এটি Lambda ফাংশনকে ট্রিগার করবে এবং Hello from Lambda! মেসেজ ফিরিয়ে দেবে।


Step 6: (Optional) Database Integration

আপনি যদি ডেটাবেস ব্যবহার করতে চান (যেমন DynamoDB), তবে আপনি Lambda ফাংশনে ডেটাবেস কল করতে পারেন। এখানে একটি সাধারণ DynamoDB ইনটিগ্রেশন দেখানো হলো:

Node.js Lambda ফাংশনে DynamoDB সংযোগ:

const AWS = require('aws-sdk');
const dynamoDb = new AWS.DynamoDB.DocumentClient();

exports.handler = async (event) => {
    const params = {
        TableName: 'my-table',
        Key: {
            'id': event.id
        }
    };

    try {
        const result = await dynamoDb.get(params).promise();
        return {
            statusCode: 200,
            body: JSON.stringify(result.Item),
        };
    } catch (error) {
        return {
            statusCode: 500,
            body: JSON.stringify({ error: 'Could not fetch item' }),
        };
    }
};

Step 7: API Security (Optional)

আপনি API এর জন্য authentication এবং authorization যুক্ত করতে পারেন, যেমন AWS Cognito ব্যবহার করে OAuth 2.0 বা API Keys এর মাধ্যমে। এটি API ব্যবহারের জন্য নিরাপত্তা নিশ্চিত করে।


সারাংশ

Serverless API তৈরি করা AWS Lambda এবং API Gateway এর মাধ্যমে একটি দ্রুত, স্কেলেবল, এবং অব্যাহত API ডেভেলপমেন্ট প্রক্রিয়া নিশ্চিত করে। আপনি শুধু কোড লেখেন এবং তা AWS-এর শক্তিশালী এবং স্কেলেবল প্ল্যাটফর্মে রান করান, সার্ভার পরিচালনা বা ইনফ্রাস্ট্রাকচার সম্পর্কে চিন্তা না করেই। DocumentDB বা DynamoDB এর মতো ডেটাবেস সংযোগের মাধ্যমে আরও কার্যকরী API তৈরি করা সম্ভব।

common.content_added_by

API Gateway এবং Lambda ব্যবহার করে DocumentDB অ্যাক্সেস

229
229

Amazon API Gateway এবং AWS Lambda ব্যবহার করে আপনি DocumentDB তে সহজে অ্যাক্সেস করতে পারেন এবং এটি একটি serverless architecture তৈরি করতে সাহায্য করে। এই সমাধানটি বিশেষভাবে উপকারী যখন আপনি একটি RESTful API তৈরি করতে চান, যা অ্যাপ্লিকেশন বা ক্লায়েন্ট থেকে DocumentDB ডেটাবেসে ডেটা পাঠাতে বা পাওয়ার অনুমতি দেয়। API Gateway ক্লায়েন্ট রিকোয়েস্ট গ্রহণ করবে এবং Lambda ফাংশনটি DocumentDB এর সাথে ইন্টিগ্রেটেড হয়ে রিকোয়েস্ট প্রক্রিয়া করবে।


প্রয়োজনীয় উপকরণ

  1. Amazon API Gateway: API Gateway একটি fully managed service যা HTTP বা WebSocket API তৈরি এবং পরিচালনা করার জন্য ব্যবহৃত হয়।
  2. AWS Lambda: Lambda একটি serverless compute service যা কোড এক্সিকিউট করতে সক্ষম, এবং এটি API Gateway থেকে ট্রিগার হতে পারে।
  3. Amazon DocumentDB: DocumentDB MongoDB-এর সাথে সামঞ্জস্যপূর্ণ একটি managed NoSQL ডেটাবেস, যা ডকুমেন্ট-ভিত্তিক ডেটা সংরক্ষণ করে।
  4. IAM Roles: Lambda ফাংশন এবং API Gateway এর জন্য সঠিক অনুমতিসমূহ প্রদান করা।

১. Lambda ফাংশন তৈরি করা

Lambda ফাংশনটি DocumentDB-এর সাথে কাজ করতে সক্ষম হওয়ার জন্য, এটি DocumentDB Driver ব্যবহার করে MongoDB-এ কুয়েরি পাঠাতে সক্ষম হতে হবে।

Lambda ফাংশন তৈরি করা:

  1. Lambda ফাংশন তৈরি করুন:
    • AWS Management Console-এ যান এবং Lambda সিলেক্ট করুন।
    • "Create function" ক্লিক করুন এবং Author from scratch নির্বাচন করুন।
    • একটি নাম দিন এবং রuntime হিসেবে Node.js বা Python নির্বাচন করুন (MongoDB-এর জন্য সাধারণত Node.js ব্যবহার করা হয়)।
    • Execution role এর জন্য একটি নতুন IAM role তৈরি করুন, যাতে Lambda DocumentDB অ্যাক্সেস করতে পারে।
  2. MongoDB Node.js Driver ইনস্টল করুন: Lambda ফাংশনটি MongoDB বা DocumentDB ডেটাবেসের সাথে সংযোগ করতে MongoDB Node.js Driver ব্যবহার করবে। আপনি যদি Node.js ব্যবহার করেন, তাহলে নিচের মতো কোড ব্যবহার করতে পারেন:

    npm install mongodb
    
  3. Lambda কোড লিখুন:

    • Lambda ফাংশনের কোডে DocumentDB (MongoDB) থেকে ডেটা ফেচ বা ডেটা আপডেট করার জন্য MongoDB-এর Node.js ড্রাইভার ব্যবহার করা হবে।
    const { MongoClient } = require("mongodb");
    
    const uri = "mongodb://<username>:<password>@<documentdb-endpoint>:27017";
    const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });
    
    exports.handler = async (event) => {
        const response = {
            statusCode: 200,
            body: JSON.stringify('Hello from Lambda!'),
        };
    
        try {
            await client.connect();
            const database = client.db("myDatabase");
            const collection = database.collection("myCollection");
    
            // Perform a read operation (for example, finding a document)
            const document = await collection.findOne({ "name": "John Doe" });
            response.body = JSON.stringify(document);
        } catch (error) {
            response.statusCode = 500;
            response.body = JSON.stringify({ error: error.message });
        } finally {
            await client.close();
        }
    
        return response;
    };
    
    • কোডে:
      • uri: এখানে আপনাকে আপনার DocumentDB-এর Endpoint এবং Port ব্যবহার করতে হবে।
      • Database: "myDatabase" নামক ডেটাবেস এবং "myCollection" নামক কলেকশনটি ব্যবহার করা হয়েছে। আপনি আপনার বাস্তব ডেটাবেস এবং কলেকশন নাম ব্যবহার করবেন।
  4. Lambda IAM Role: Lambda ফাংশনকে AWS DocumentDB অ্যাক্সেস করতে IAM role অনুমতি প্রদান করুন। Role-এ AmazonDocDBFullAccess পলিসি অ্যাটাচ করতে হবে।

২. API Gateway তৈরি করা

API Gateway ক্লায়েন্টদের জন্য একটি API প্রদান করবে, যা Lambda ফাংশনে রিকোয়েস্ট পাঠাবে। এই API তে HTTP রিকোয়েস্টগুলি চলে আসবে এবং Lambda ফাংশন সেই রিকোয়েস্ট হ্যান্ডেল করবে।

API Gateway Setup:

  1. API Gateway তৈরি করুন:
    • AWS Management Console থেকে API Gateway সিলেক্ট করুন।
    • "Create API" সিলেক্ট করুন এবং HTTP API অথবা REST API নির্বাচন করুন।
    • API এর নাম দিন এবং Create করুন।
  2. Lambda ফাংশন যোগ করা:
    • API Gateway এ Lambda ফাংশনটি যোগ করতে Integration নির্বাচন করুন এবং Lambda-কে ইনটিগ্রেট করুন।
    • আপনার Lambda function নির্বাচন করুন।
  3. API Endpoint Configurations:
    • API Gateway এর জন্য একটি HTTP endpoint তৈরি করুন, যেমন GET /fetchDocument বা POST /updateDocument যা Lambda ফাংশনকে কল করবে।
  4. Deploy API:
    • API তৈরি করার পর Deploy অপশনে ক্লিক করুন এবং একটি stage (যেমন prod বা dev) নির্বাচন করুন।
    • Deploy করার পর, আপনি একটি URL endpoint পাবেন, যা ক্লায়েন্টের কাছ থেকে HTTP রিকোয়েস্ট গ্রহণ করবে।

৩. Testing API Gateway

আপনার API Gateway সেটআপ সম্পন্ন হলে, আপনি HTTP রিকোয়েস্ট পাঠাতে পারবেন এবং Lambda ফাংশনটি DocumentDB এর সাথে কাজ করবে।

  • আপনি Postman বা cURL ব্যবহার করে আপনার API endpoint টেস্ট করতে পারেন।
  • উদাহরণস্বরূপ:

    curl -X GET https://<api-id>.execute-api.<region>.amazonaws.com/prod/fetchDocument
    

৪. Error Handling এবং Logging

  • Error Handling: Lambda ফাংশনে ত্রুটি ব্যবস্থাপনা গুরুত্বপূর্ণ। আপনি try-catch ব্লক ব্যবহার করতে পারেন এবং ত্রুটি বার্তা ক্লায়েন্টকে ফিরিয়ে দিতে পারেন।
  • CloudWatch Logs: API Gateway এবং Lambda-এর লগ দেখতে Amazon CloudWatch ব্যবহার করুন। এটি ডিবাগ এবং মনিটরিং করার জন্য সহায়ক হবে।

৫. সুরক্ষা এবং অনুমতিসমূহ

  • IAM Roles: API Gateway এবং Lambda-এর জন্য সঠিক IAM Roles ব্যবহার করুন, যা AWS DocumentDB অ্যাক্সেস করতে অনুমতি দেয়।
  • Authorization: API Gateway-তে AWS IAM Authorization অথবা Cognito Authorizer সেট করতে পারেন, যা নিরাপত্তা বৃদ্ধি করবে।

Conclusion

API Gateway এবং Lambda ব্যবহার করে Amazon DocumentDB অ্যাক্সেস করা একটি serverless এবং স্কেলেবল সমাধান। API Gateway ক্লায়েন্টের HTTP রিকোয়েস্ট গ্রহণ করে, যা Lambda ফাংশন দ্বারা প্রক্রিয়াজাত হয় এবং তারপর DocumentDB এর সাথে ইন্টারঅ্যাক্ট করে। এই সেটআপটি নিরাপদ, ফ্লেক্সিবল, এবং অত্যন্ত স্কেলেবল, যা আপনার অ্যাপ্লিকেশনের জন্য API তৈরি করতে সহায়ক।

common.content_added_by

DocumentDB এর Serverless সুবিধা

201
201

Amazon DocumentDB Serverless একটি বিশেষ ফিচার যা আপনাকে fully managed, on-demand ডেটাবেস ব্যবস্থাপনা সুবিধা প্রদান করে, যেখানে আপনি সার্ভার বা ইনস্ট্যান্স ব্যবস্থাপনা নিয়ে চিন্তা করতে হবে না। Serverless মোডে, ডেটাবেসের সক্ষমতা এবং পারফরম্যান্স স্বয়ংক্রিয়ভাবে স্কেল করতে পারে ডেটাবেসের কাজের চাপ অনুযায়ী, অর্থাৎ যখন লোড কমে যায় তখন এটি সম্পদ সাশ্রয়ীভাবে কমিয়ে আনে এবং যখন লোড বাড়ে তখন এটি স্বয়ংক্রিয়ভাবে বাড়িয়ে দেয়। এটি ছোট ও মাঝারি আকারের অ্যাপ্লিকেশনের জন্য একটি আদর্শ সমাধান, যেখানে অতিরিক্ত ইনফ্রাস্ট্রাকচার খরচ কমাতে হবে।


Serverless DocumentDB এর মূল সুবিধাসমূহ

১. সহজ স্কেলিং

Serverless DocumentDB স্বয়ংক্রিয়ভাবে horizontal scaling এবং vertical scaling সমর্থন করে। আপনার ডেটাবেসের লোডের উপর ভিত্তি করে এটি পারফরম্যান্স এবং সম্পদ (CPU, RAM) প্রয়োজনীয়তা বাড়িয়ে দেয় বা কমিয়ে দেয়। এটি আপনার ডেটাবেসের স্কেলিংকে আরও সহজ এবং স্বয়ংক্রিয় করে তোলে, যাতে আপনি সার্ভার বা ইনস্ট্যান্সের স্বয়ংক্রিয় কনফিগারেশন এবং ম্যানেজমেন্ট নিয়ে চিন্তা না করেন।

২. On-Demand পারফরম্যান্স

Serverless DocumentDB আপনাকে ডেটাবেসের পারফরম্যান্স পরিমাপ এবং on-demand রিসোর্স প্রয়োজনীয়তা সরবরাহ করে, যার ফলে আপনি যখন ডেটাবেসে কম কার্যকলাপ পাবেন, তখন এটি স্বয়ংক্রিয়ভাবে রিসোর্স কমিয়ে দেবে এবং যখন কার্যকলাপ বাড়বে তখন রিসোর্স বাড়িয়ে দেবে। এটি বিশেষভাবে উপকারী যেখানে ডেটাবেসের ট্রাফিকের পরিমাণ অপ্রত্যাশিত হতে পারে বা অত্যন্ত ভিন্ন ভিন্ন সময়ে লোড থাকে।

৩. ব্যয় সাশ্রয়ী

Serverless DocumentDB এর ব্যবহারকারী শুধুমাত্র ব্যবহৃত রিসোর্সের জন্য পে করেন, অর্থাৎ আপনার ডেটাবেস যখন কম ব্যবহার হবে তখন আপনি কম খরচ করবেন। সাধারণত, এটা pay-per-use মডেল অনুসরণ করে, যেখানে আপনি CPU এবং মেমরি ব্যবহার অনুযায়ী খরচ পরিশোধ করবেন, কোনো প্রিপেইড বা রিজার্ভড ইনস্ট্যান্সের মতো কমিটমেন্ট ছাড়াই। এর ফলে, ছোট ও মাঝারি আকারের অ্যাপ্লিকেশনগুলির জন্য এটি একটি আদর্শ সমাধান।

৪. ইনফ্রাস্ট্রাকচার পরিচালনা মুক্ত

Serverless DocumentDB ব্যবহার করলে আপনার ইনফ্রাস্ট্রাকচার পরিচালনার প্রয়োজন নেই। AWS আপনার ডেটাবেসের সম্পূর্ণ রক্ষণাবেক্ষণ এবং ম্যানেজমেন্ট কাজ করে, যেমন:

  • সার্ভার provisioning: ডেটাবেস চালানোর জন্য প্রয়োজনীয় সার্ভার হ্যান্ডলিং।
  • প্যাচিং: AWS স্বয়ংক্রিয়ভাবে সফটওয়্যার প্যাচিং পরিচালনা করে।
  • মনিটরিং এবং স্কেলিং: এটি AWS CloudWatch এর মাধ্যমে স্বয়ংক্রিয়ভাবে মনিটর এবং স্কেল করে।

৫. উচ্চ অ্যাভেইলেবিলিটি এবং ফোল্ট টলারেন্স

Serverless DocumentDB Multi-AZ Replication সমর্থন করে, যার ফলে আপনার ডেটা সুরক্ষিত থাকে এবং যখন একটি Availability Zone ডাউন হয়ে যায়, তখন ডেটা অ্যাক্সেস চালু থাকে। AWS স্বয়ংক্রিয়ভাবে এই ফোল্ট টলারেন্স ফিচারটি পরিচালনা করে, যাতে আপনার ডেটাবেস উচ্চ অ্যাভেইলেবিলিটি বজায় থাকে।

৬. সুগম ডেভেলপমেন্ট এবং ডেপ্লয়মেন্ট

Serverless DocumentDB তে ডেভেলপাররা খুব সহজেই তাদের অ্যাপ্লিকেশন তৈরি এবং ডেপ্লয় করতে পারে। ডেটাবেসের রিসোর্স হ্যান্ডলিং, স্কেলিং, এবং ইনস্ট্যান্স ম্যানেজমেন্টের মতো কাজগুলি AWS-এ হ্যান্ডল করা হয়, এবং ডেভেলপারদের শুধুমাত্র অ্যাপ্লিকেশন ডেভেলপমেন্টে মনোনিবেশ করার সুযোগ দেয়।


Serverless DocumentDB ব্যবহারের জন্য আদর্শ পরিস্থিতি

Serverless DocumentDB সবচেয়ে উপকারী হয় যখন:

  • অবিশ্বাস্য ডেটাবেস লোড: আপনার ডেটাবেসে খুব বেশি ট্রাফিক নেই বা কখনো কখনো বড় পরিমাণে ট্রাফিক বাড়ে, যেমন প্রতি মাসে বা বিশেষ দিনগুলোতে।
  • অস্থির চাহিদা: আপনার অ্যাপ্লিকেশনটির অস্থির ডেটাবেস লোড রয়েছে, যেখানে ট্রাফিক স্বল্প সময়ের মধ্যে বাড়ে এবং কমে।
  • আলোচনা প্রজেক্ট: ছোট, পরীক্ষামূলক বা প্রোটোটাইপ প্রকল্প যেখানে স্কেল এবং ইনফ্রাস্ট্রাকচার ব্যয় সাশ্রয়ী হতে হবে।
  • খরচ নিয়ন্ত্রণ: আপনি অতিরিক্ত খরচ থেকে বাঁচতে চান, যেমন ডেডিকেটেড ইনস্ট্যান্স এবং সার্ভার ব্যবস্থাপনা।

Serverless DocumentDB কনফিগারেশন

DocumentDB Serverless ব্যবহারের জন্য কনফিগারেশন করতে, আপনি DB Cluster তৈরি করার সময় সঠিক সেটিংস নির্বাচন করতে হবে।

Cluster Configuration Example:

  1. AWS Management Console এ গিয়ে DocumentDB ক্লাস্টার তৈরি করুন।
  2. ক্লাস্টার তৈরির সময়, আপনি Serverless mode নির্বাচন করতে পারেন।
  3. সঠিক Capacity Range নির্বাচন করুন, যেখানে আপনি আপনার ডেটাবেসের কার্যক্ষমতা এবং খরচ নিয়ন্ত্রণ করতে পারবেন।

Serverless DocumentDB Limitations

যদিও Serverless DocumentDB অনেক সুবিধা প্রদান করে, তবে এর কিছু সীমাবদ্ধতা রয়েছে:

  • Connection Limitations: Serverless DocumentDB-তে কানেকশনের একটি সীমাবদ্ধতা থাকতে পারে, কারণ এটি খুব দ্রুত স্কেল করে। বৃহত্তর অ্যাপ্লিকেশনের জন্য কানেকশন পুলিং বা সংশোধন করা দরকার হতে পারে।
  • Latency: ডেটাবেসের স্কেলিং যখন স্বয়ংক্রিয়ভাবে বৃদ্ধি পায়, তখন কিছু ক্ষেত্রে লেটেন্সি বৃদ্ধি পেতে পারে। তবে এটি খুব দ্রুত ট্রাফিক বৃদ্ধি হওয়ার সময় সামলাতে সহায়ক হয়।
  • Not Suitable for Heavy Workloads: যদি আপনার অ্যাপ্লিকেশনটির জন্য খুব উচ্চ এবং ধারাবাহিক ট্রাফিকের প্রয়োজন হয়, তাহলে traditional instances হতে পারে আরও উপযুক্ত।

Conclusion

Amazon DocumentDB Serverless একটি শক্তিশালী এবং সুবিধাজনক পছন্দ যখন আপনি একটি স্কেলেবল, ব্যয়সাপেক্ষ এবং ইনফ্রাস্ট্রাকচার-মুক্ত ডেটাবেস সলিউশন চান। এটি ছোট এবং মাঝারি আকারের অ্যাপ্লিকেশনগুলির জন্য আদর্শ, যেখানে ট্রাফিকের চাপ অনিয়মিত বা অস্থির এবং যেখানে খরচ সাশ্রয়ী হওয়া গুরুত্বপূর্ণ। Serverless DocumentDB AWS-এর স্কেলিং এবং পারফরম্যান্স ব্যবস্থাপনা ফিচারের মাধ্যমে আপনার ডেটাবেসের রিসোর্স অপ্টিমাইজ করতে সাহায্য করে, যাতে আপনি শুধুমাত্র আপনার অ্যাপ্লিকেশন উন্নয়নে মনোনিবেশ করতে পারেন।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion