এক্সটেনশন মূল্যায়ন করতে এক্সটেনশন এমুলেটর ব্যবহার করুন

আপনার অ্যাপের সাথে Extensions এমুলেটর ব্যবহার করার আগে, নিশ্চিত করুন যে আপনি Firebase Local Emulator Suite সামগ্রিক কার্যপ্রবাহ বুঝতে পেরেছেন , এবং Local Emulator Suite ইনস্টল ও কনফিগার করার পাশাপাশি এর CLI কমান্ডগুলো পর্যালোচনা করেছেন।

এই নির্দেশিকাটি আরও ধরে নেয় যে আপনি Firebase Extensions এবং আপনার ফায়ারবেস অ্যাপে সেগুলি কীভাবে ব্যবহার করতে হয় সে সম্পর্কে পরিচিত।

Extensions এমুলেটর দিয়ে আমি কী করতে পারি?

Extensions এমুলেটরের সাহায্যে, আপনি একটি নিরাপদ স্থানীয় পরিবেশে এক্সটেনশন ইনস্টল ও পরিচালনা করতে পারেন এবং বিলিং খরচ কমানোর পাশাপাশি সেগুলোর কার্যকারিতা আরও ভালোভাবে বুঝতে পারেন। এই এমুলেটরটি আপনার এক্সটেনশনের ফাংশনগুলো স্থানীয়ভাবে চালায়, যার মধ্যে রয়েছে Cloud Firestore , Realtime Database , Cloud Storage for Firebase , AuthenticationPub/Sub -এর এমুলেটর ব্যবহার করে ব্যাকগ্রাউন্ডে ইভেন্ট-ট্রিগার হওয়া ফাংশন এবং Cloud Functions ভি২-এ বাস্তবায়িত ইভেন্টআর্ক-ট্রিগার হওয়া ফাংশন।

একটি ফায়ারবেস প্রজেক্ট বেছে নিন

Firebase Local Emulator Suite একটিমাত্র ফায়ারবেস প্রোজেক্টের প্রোডাক্টগুলোকে এমুলেট করে।

ব্যবহার করার জন্য প্রজেক্ট নির্বাচন করতে, এমুলেটরগুলো চালু করার আগে, আপনার ওয়ার্কিং ডিরেক্টরিতে CLI-তে firebase use চালান। অথবা, আপনি প্রতিটি এমুলেটর কমান্ডে --project ফ্ল্যাগটি পাস করতে পারেন।

Local Emulator Suite বাস্তব ফায়ারবেস প্রজেক্ট এবং ডেমো প্রজেক্টের এমুলেশন সমর্থন করে।

প্রকল্পের ধরণ বৈশিষ্ট্য এমুলেটরের সাথে ব্যবহার করুন
বাস্তব

একটি প্রকৃত Firebase প্রজেক্ট হলো সেটি যা আপনি তৈরি এবং কনফিগার করেছেন (সম্ভবত Firebase কনসোলের মাধ্যমে)।

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

আসল Firebase প্রোজেক্ট নিয়ে কাজ করার সময়, আপনি সমর্থিত যেকোনো বা সমস্ত প্রোডাক্টের জন্য এমুলেটর চালাতে পারেন।

যেসব প্রোডাক্ট আপনি এমুলেট করছেন না, সেগুলোর ক্ষেত্রে আপনার অ্যাপ ও কোড লাইভ রিসোর্সের (যেমন ডেটাবেস ইনস্ট্যান্স, স্টোরেজ বাকেট, ফাংশন ইত্যাদি) সাথে ইন্টারঅ্যাক্ট করবে।

ডেমো

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

ডেমো প্রজেক্টগুলোর আইডির শুরুতে demo- উপসর্গটি থাকে।

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

আমরা আপনাকে যথাসম্ভব ডেমো প্রজেক্ট ব্যবহার করার পরামর্শ দিই। এর সুবিধাগুলোর মধ্যে রয়েছে:

  • সেটআপ করা সহজ, কারণ কোনো Firebase প্রজেক্ট তৈরি না করেই এমুলেটরগুলো চালানো যায়।
  • আরও শক্তিশালী সুরক্ষা, কারণ যদি আপনার কোড ভুলবশত নন-এমুলেটেড (প্রোডাকশন) রিসোর্স ব্যবহার করে, তাহলেও ডেটা পরিবর্তন, ব্যবহার এবং বিলিং-এর কোনো সম্ভাবনা থাকে না।
  • উন্নততর অফলাইন সাপোর্ট, কারণ আপনার SDK কনফিগারেশন ডাউনলোড করার জন্য ইন্টারনেট অ্যাক্সেস করার প্রয়োজন নেই।

একটি এক্সটেনশন ইনস্টল এবং মূল্যায়ন করুন

কোনো এক্সটেনশন আপনার প্রয়োজন মেটাতে পারে কি না, তা যাচাই করার জন্য Extensions এমুলেটর ব্যবহার করা খুবই সহজ।

ধরা যাক আপনি ট্রিগার ইমেল ( firestore-send-email ) এক্সটেনশনটিতে আগ্রহী, যদিও নিম্নলিখিত কার্যপ্রবাহটি যেকোনো এক্সটেনশনের ক্ষেত্রেই প্রযোজ্য। স্থানীয় এমুলেটর দিয়ে চালালে, ট্রিগার ইমেল স্বয়ংক্রিয়ভাবে Cloud Firestore এবং Cloud Functions এমুলেটরগুলো ব্যবহার করবে।

স্থানীয়ভাবে একটি এক্সটেনশন মূল্যায়ন করতে:

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

    firebase ext:install --local firebase/firestore-send-email

    উপরের কমান্ডটি চালালে আপনাকে firebase/firestore-send-email এক্সটেনশনের সর্বশেষ সংস্করণটি কনফিগার করতে এবং কনফিগারেশনটি ম্যানিফেস্টে সংরক্ষণ করতে বলা হবে, কিন্তু এটি আপনার প্রোজেক্টে কনফিগারেশনটি ডেপ্লয় করবে না। এ সম্পর্কে আরও জানতে, ‘ম্যানিফেস্টের মাধ্যমে এক্সটেনশন কনফিগারেশন পরিচালনা’ দেখুন।

  2. আপনি সাধারণত যেভাবে Local Emulator Suite চালু করেন, সেভাবেই তা চালু করুন।

    firebase emulators:start

এখন, আপনার ম্যানিফেস্টে তালিকাভুক্ত firestore-send-email এক্সটেনশন ইনস্ট্যান্সটি ব্যবহার করে, Local Emulator Suite সেই এক্সটেনশনটির সোর্স কোড ~/.cache/firebase/extensions এ ডাউনলোড করবে। সোর্সগুলো ডাউনলোড হয়ে গেলে, Local Emulator Suite চালু হবে এবং আপনি এক্সটেনশনটির যেকোনো ব্যাকগ্রাউন্ডে চালিত ফাংশন চালু করতে পারবেন ও আপনার অ্যাপের সাথে সেগুলোর ইন্টিগ্রেশন পরীক্ষা করার জন্য আপনার অ্যাপটিকে Local Emulator Suite সাথে সংযুক্ত করতে পারবেন।

আপনি Emulator Suite UI ব্যবহার করে ইমেল ডকুমেন্টস কালেকশনে ডেটা যোগ করতে এবং ট্রিগার ইমেল এক্সটেনশনের প্রয়োজন অনুযায়ী অন্যান্য ব্যাকএন্ড রিসোর্স সেট আপ করতে পারেন।

বিকল্পভাবে, কন্টিনিউয়াস ইন্টিগ্রেশন ওয়ার্কফ্লো-এর মতো নন-ইন্টারেক্টিভ টেস্টিং এনভায়রনমেন্টের জন্য, আপনি এক্সটেনশনটি মূল্যায়নের উদ্দেশ্যে একটি টেস্ট স্ক্রিপ্ট লিখতে পারেন, যা অন্যান্য ধাপের পাশাপাশি প্রয়োজনীয় Cloud Firestore ডেটা পূরণ করে এবং ফাংশন ট্রিগার করে। এরপর আপনার টেস্ট স্ক্রিপ্টটি চালানোর জন্য আপনি Local Emulator Suite চালু করবেন।

firebase emulators:exec my-test.sh

Extensions এমুলেটর দিয়ে টেস্টিং এবং প্রোডাকশনের মধ্যে পার্থক্য

Extensions এমুলেটর আপনাকে প্রোডাকশন অভিজ্ঞতার সাথে ঘনিষ্ঠভাবে সাদৃশ্যপূর্ণ উপায়ে এক্সটেনশন পরীক্ষা করার সুযোগ দেয়। তবে, প্রোডাকশনের আচরণের সাথে এর কিছু পার্থক্য রয়েছে।

ক্লাউড আইএএম

ফায়ারবেস এমুলেটর স্যুট চলার জন্য কোনো IAM-সম্পর্কিত আচরণ অনুকরণ বা অনুসরণ করার চেষ্টা করে না। এমুলেটরগুলো প্রদত্ত ফায়ারবেস নিরাপত্তা নিয়মগুলো মেনে চলে, কিন্তু যেসব ক্ষেত্রে সাধারণত IAM ব্যবহৃত হয়, যেমন ক্লাউড ফাংশন চালু করার সার্ভিস অ্যাকাউন্ট এবং তার ফলে অনুমতি নির্ধারণ করতে, সেসব ক্ষেত্রে এমুলেটরটি কনফিগারযোগ্য নয় এবং সরাসরি একটি লোকাল স্ক্রিপ্ট চালানোর মতোই আপনার ডেভেলপার মেশিনে থাকা বিশ্বব্যাপী উপলব্ধ অ্যাকাউন্টটি ব্যবহার করবে।

ট্রিগারিং টাইপ সীমাবদ্ধতা

বর্তমানে, Firebase Local Emulator Suite শুধুমাত্র HTTP অনুরোধ-চালিত ফাংশন, এক্সটেনশনের জন্য ইভেন্টআর্ক কাস্টম ইভেন্ট ট্রিগার এবং Cloud Firestore , Realtime Database , Cloud Storage for Firebase , AuthenticationPub/Sub জন্য ব্যাকগ্রাউন্ড ইভেন্ট-চালিত ফাংশন সমর্থন করে। অন্য ধরনের ট্রিগারড ফাংশন ব্যবহারকারী এক্সটেনশনগুলো মূল্যায়ন করতে, আপনাকে একটি টেস্ট ফায়ারবেস প্রজেক্টে আপনার এক্সটেনশনটি ইনস্টল করতে হবে।

এরপর কী?