ক্লাউড ফাংশনগুলির সাথে গতিশীল সামগ্রী এবং হোস্ট মাইক্রোসার্ভিস পরিবেশন করুন৷

আপনার ডাইনামিক কন্টেন্ট তৈরি ও পরিবেশন করতে অথবা মাইক্রোসার্ভিস হিসেবে REST API তৈরি করতে Cloud Functions সাথে Firebase Hosting যুক্ত করুন।

Cloud Functions for Firebase আপনাকে HTTPS অনুরোধের জবাবে স্বয়ংক্রিয়ভাবে ব্যাকএন্ড কোড চালাতে দেয়। আপনার কোড গুগলের ক্লাউডে সংরক্ষিত থাকে এবং একটি পরিচালিত পরিবেশে চলে। আপনার নিজের সার্ভার পরিচালনা এবং স্কেল করার কোনো প্রয়োজন নেই।

Firebase Hosting সাথে সমন্বিত Cloud Functions উদাহরণ ও নমুনা দেখতে আমাদের সার্ভারলেস ওভারভিউ দেখুন।

Cloud Functions Firebase Hosting এর সাথে সংযুক্ত করুন

এই বিভাগে Firebase Hosting এর সাথে একটি ফাংশন সংযোগ করার জন্য ধাপে ধাপে উদাহরণ দেওয়া হয়েছে।

মনে রাখবেন যে, ডাইনামিক কন্টেন্ট পরিবেশনের পারফরম্যান্স উন্নত করতে আপনি ঐচ্ছিকভাবে আপনার ক্যাশ সেটিংস পরিবর্তন করতে পারেন।

ধাপ ১: Cloud Functions সেট আপ করুন

  1. নিশ্চিত করুন যে আপনার কাছে Firebase CLI-এর সর্বশেষ সংস্করণ রয়েছে এবং আপনি Firebase Hosting চালু করেছেন।

    CLI ইনস্টল করা এবং Hosting চালু করার বিষয়ে বিস্তারিত নির্দেশাবলীর জন্য, Hosting এর 'গেট স্টার্টেড' গাইডটি দেখুন।

  2. নিশ্চিত করুন যে আপনি Cloud Functions সেট আপ করেছেন:

    • আপনি যদি ইতিমধ্যেই Cloud Functions সেট আপ করে থাকেন, তাহলে আপনি ধাপ ২: একটি HTTPS ফাংশন তৈরি এবং পরীক্ষা করতে পারেন।

    • যদি আপনি Cloud Functions সেট আপ না করে থাকেন :

      1. আপনার প্রজেক্ট ডিরেক্টরির রুট থেকে নিম্নলিখিত কমান্ডটি চালিয়ে Cloud Functions চালু করুন:

        firebase init functions
      2. নির্দেশিত হলে জাভাস্ক্রিপ্ট নির্বাচন করুন (এই ধাপে ধাপে দেখানো উদাহরণটিতে JS ব্যবহার করা হয়েছে)।

      3. আপনার লোকাল প্রজেক্ট ডিরেক্টরিতে (যা আপনি এইমাত্র চালানো Firebase কমান্ডের মাধ্যমে তৈরি করেছেন) একটি functions ডিরেক্টরি আছে কিনা তা যাচাই করুন। এই functions ডিরেক্টরিতেই Cloud Functions কোড থাকে।

ধাপ ২: আপনার Hosting সাইটের জন্য একটি HTTPS ফাংশন তৈরি ও পরীক্ষা করুন।

  1. আপনার পছন্দের এডিটরে /functions/index.js খুলুন।

  2. ফাইলটির বিষয়বস্তু নিম্নলিখিত কোড দিয়ে প্রতিস্থাপন করুন।

    এই কোডটি bigben নামের একটি HTTPS ফাংশন তৈরি করে, যা ঘড়ির কাঁটার মতো দিনের প্রতিটি ঘণ্টায় HTTPS অনুরোধের জবাবে একটি BONG শব্দ করে।

    const functions = require('firebase-functions/v1');
    
    exports.bigben = functions.https.onRequest((req, res) => {
      const hours = (new Date().getHours() % 12) + 1  // London is UTC + 1hr;
      res.status(200).send(`<!doctype html>
        <head>
          <title>Time</title>
        </head>
        <body>
          ${'BONG '.repeat(hours)}
        </body>
      </html>`);
    });
    
  3. Firebase Local Emulator Suite ব্যবহার করে আপনার ফাংশনগুলো স্থানীয়ভাবে পরীক্ষা করুন।

    1. আপনার স্থানীয় প্রজেক্ট ডিরেক্টরির রুট থেকে নিম্নলিখিত কমান্ডটি চালান:

      firebase emulators:start
    2. CLI দ্বারা প্রাপ্ত স্থানীয় URL ব্যবহার করে ফাংশনটি অ্যাক্সেস করুন, উদাহরণস্বরূপ: http://localhost:5001/ PROJECT_ID /us-central1/bigben

HTTPS অনুরোধ সম্পর্কে আরও জানতে Cloud Functions ডকুমেন্টেশন দেখুন।

পরবর্তী ধাপে দেখানো হবে কীভাবে একটি Firebase Hosting ইউআরএল থেকে এই HTTPS ফাংশনটি অ্যাক্সেস করতে হয়, যাতে এটি আপনার ফায়ারবেস-হোস্টেড সাইটের জন্য ডাইনামিক কন্টেন্ট তৈরি করতে পারে।

ধাপ ৩: আপনার ফাংশনে HTTPS অনুরোধগুলি নির্দেশ করুন

রিরাইট রুল ব্যবহার করে, আপনি নির্দিষ্ট প্যাটার্নের সাথে মিলে যাওয়া রিকোয়েস্টগুলোকে একটিমাত্র গন্তব্যে পাঠাতে পারেন। নিচের ধাপগুলোতে দেখানো হয়েছে কীভাবে আপনার Hosting সাইটে ../bigben পাথ থেকে আসা সমস্ত রিকোয়েস্টকে bigben ফাংশনটি এক্সিকিউট করার জন্য নির্দেশ দেবেন।

  1. আপনার firebase.json ফাইলটি খুলুন।

  2. hosting সেকশনের অধীনে নিম্নলিখিত rewrite কনফিগারেশনটি যোগ করুন:

    "hosting": {
      // ...
    
      // Add the "rewrites" attribute within "hosting"
      "rewrites": [ {
        "source": "/bigben",
        "function": {
          "functionId": "bigben",
          "region": "us-central1"  // optional (see note below)
          "pinTag": true           // optional (see note below)
        }
      } ]
    }
    
  3. ফায়ারবেস এমুলেটরগুলো দিয়ে পুনরায় পরীক্ষা করে নিশ্চিত করুন যে আপনার রিডাইরেক্টটি প্রত্যাশিতভাবে কাজ করছে।

    1. আপনার স্থানীয় প্রজেক্ট ডিরেক্টরির রুট থেকে নিম্নলিখিত কমান্ডটি চালান:

      firebase emulators:start
    2. CLI দ্বারা প্রাপ্ত আপনার সাইটের স্থানীয়ভাবে হোস্ট করা URL-টি (সাধারণত localhost:5000 ) ভিজিট করুন, কিন্তু URL-টির শেষে bigben যুক্ত করুন, যেমন: http://localhost:5000/bigben

  4. আপনার সাইটের জন্য আপনার ফাংশন এবং এর কার্যকারিতা পরিমার্জন করতে থাকুন। এই পরিমার্জনগুলো পরীক্ষা করার জন্য ফায়ারবেস এমুলেটরগুলো ব্যবহার করুন।

সর্বোত্তম পারফরম্যান্সের জন্য, নিম্নলিখিত অঞ্চলগুলির মধ্যে একটি বেছে নিয়ে আপনার ফাংশনগুলিকে Hosting সাথে সংযুক্ত করুন:

  • us-west1
  • us-central1
  • us-east1
  • europe-west1
  • asia-east1

রিরাইট রুল সম্পর্কে আরও বিস্তারিত জানতে Hosting কনফিগারেশন পেজটি দেখুন। এছাড়াও, আপনি বিভিন্ন Hosting কনফিগারেশনের জন্য রেসপন্সগুলোর অগ্রাধিকার ক্রম সম্পর্কে জানতে পারবেন।

মনে রাখবেন যে, ডাইনামিক কন্টেন্ট পরিবেশনের পারফরম্যান্স উন্নত করতে আপনি ঐচ্ছিকভাবে আপনার ক্যাশ সেটিংস পরিবর্তন করতে পারেন।

ধাপ ৪: আপনার ফাংশনটি ডিপ্লয় করুন

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

  1. আপনার লোকাল প্রজেক্ট ডিরেক্টরির রুট থেকে নিম্নলিখিত কমান্ডটি চালিয়ে আপনার ফাংশন এবং Hosting কন্টেন্ট ও কনফিগারেশন আপনার সাইটে ডিপ্লয় করুন:

    firebase deploy --only functions,hosting
  2. নিম্নলিখিত URL-গুলিতে আপনার লাইভ সাইট এবং ফাংশন অ্যাক্সেস করুন:

    • আপনার ফায়ারবেস সাবডোমেনগুলি:
      PROJECT_ID .web.app/bigben এবং PROJECT_ID .firebaseapp.com/bigben

    • যেকোনো সংযুক্ত কাস্টম ডোমেইন :
      CUSTOM_DOMAIN /bigben

একটি ওয়েব ফ্রেমওয়ার্ক ব্যবহার করুন

আপনি Cloud Functions এক্সপ্রেস.জেএস (Express.js) -এর মতো ওয়েব ফ্রেমওয়ার্ক ব্যবহার করে আপনার অ্যাপের ডাইনামিক কন্টেন্ট পরিবেশন করতে পারেন এবং আরও সহজে জটিল ওয়েব অ্যাপ তৈরি করতে পারেন।

নিম্নলিখিত অংশে Firebase Hosting এবং Cloud Functions সাথে এক্সপ্রেস.জেএস ব্যবহারের একটি ধাপে ধাপে উদাহরণ দেওয়া হয়েছে।

  1. আপনার functions ডিরেক্টরি থেকে নিম্নলিখিত কমান্ডটি চালিয়ে আপনার লোকাল প্রজেক্টে Express.js ইনস্টল করুন:

    npm install express --save
  2. আপনার /functions/index.js ফাইলটি খুলুন, তারপর Express.js ইম্পোর্ট এবং ইনিশিয়ালাইজ করুন:

    const functions = require('firebase-functions/v1');
    const express = require('express');
    const app = express();
  3. নিম্নলিখিত দুটি এন্ডপয়েন্ট যোগ করুন:

    1. আমাদের ওয়েবসাইটের ইন্ডেক্স পরিবেশন করার জন্য প্রথম এন্ডপয়েন্টটি / এ যোগ করুন।

      app.get('/', (req, res) => {
        const date = new Date();
        const hours = (date.getHours() % 12) + 1;  // London is UTC + 1hr;
        res.send(`
          <!doctype html>
          <head>
            <title>Time</title>
            <link rel="stylesheet" href="/style.css">
            <script src="/script.js"></script>
          </head>
          <body>
            <p>In London, the clock strikes:
              <span id="bongs">${'BONG '.repeat(hours)}</span></p>
            <button onClick="refresh(this)">Refresh</button>
          </body>
        </html>`);
      });
      
    2. এবং /api অধীনে JSON ফরম্যাটে একটি API হিসাবে BONG সংখ্যাটি ফেরত দেওয়ার জন্য আরেকটি এন্ডপয়েন্ট:

      app.get('/api', (req, res) => {
        const date = new Date();
        const hours = (date.getHours() % 12) + 1;  // London is UTC + 1hr;
        res.json({bongs: 'BONG '.repeat(hours)});
      });
      
  4. Express.js অ্যাপটিকে HTTPS ফাংশন হিসেবে এক্সপোর্ট করুন:

    exports.app = functions.https.onRequest(app);
  5. আপনার firebase.json ফাইলে, সমস্ত অনুরোধ app ফাংশনে পাঠান। এই পুনর্লিখনটি Express.js-কে আমাদের কনফিগার করা বিভিন্ন সাবপাথ (এই উদাহরণে, / এবং /api ) পরিবেশন করার সুযোগ দেয়।

    {
     "hosting": {
       // ...
    
       // Add the "rewrites" attribute within "hosting"
       "rewrites": [ {
         "source": "**",
         "function": "app"
       } ]
     }
    }

মিডলওয়্যার যোগ করুন

আমাদের উদাহরণটি চালিয়ে গেলে, এখন যেহেতু আপনি Express.js ব্যবহার করছেন, আপনি প্রচলিত পদ্ধতিতেই Express.js মিডলওয়্যার যোগ করতে পারেন। উদাহরণস্বরূপ, আপনি আমাদের এন্ডপয়েন্টগুলিতে CORS রিকোয়েস্ট সক্রিয় করতে পারেন।

  1. নিম্নলিখিত কমান্ডটি চালিয়ে cors মিডলওয়্যারটি ইনস্টল করুন:

    npm install --save cors
  2. আপনার /functions/index.js ফাইলটি খুলুন, তারপর আপনার Express.js অ্যাপে cors যোগ করুন, এইভাবে:

    const cors = require('cors')({origin: true});
    app.use(cors);

এক্সপ্রেস অ্যাপ এবং মিডলওয়্যার মডিউলের সাথে ফায়ারবেস ব্যবহার সম্পর্কে আরও জানতে Cloud Functions ডকুমেন্টেশন দেখুন।

পরবর্তী পদক্ষেপ