Cloud Functions লোকেশন

Cloud Functions হল আঞ্চলিক, এর অর্থ হল, আপনার ফাংশন যে ইনফ্রাস্ট্রাকচার চালায় সেটি নির্দিষ্ট অঞ্চলে অবস্থিত এবং Google এটি ম্যানেজ করে যাতে সেইসব অঞ্চলের সমস্ত জোনে এটি অতিরিক্ত হিসেবে উপলভ্য থাকে।

কোন কোন অঞ্চলে আপনার ফাংশন চালানো হবে তা বেছে নেওয়ার সময়, আপনার প্রধান বিবেচ্য বিষয় হওয়া উচিত লেটেন্সি ও উপলভ্যতা। সাধারণত, আপনি ব্যবহারকারীদের কাছাকাছি অঞ্চল বেছে নিতে পারেন, তবে আপনার অ্যাপ ব্যবহার করে এমন অন্যান্য প্রোডাক্ট ও পরিষেবার লোকেশনও বিবেচনা করা উচিত। একাধিক অঞ্চল জুড়ে পরিষেবা ব্যবহার করলে আপনার অ্যাপের লেটেন্সি এবং মূল্যের উপর প্রভাব পড়তে পারে।

ডিফল্ট হিসেবে, Firebase CLI আপনার প্রজেক্টের কনফিগারেশনের উপর ভিত্তি করে কোনও অঞ্চলে ফাংশন ডেপ্লয় করে। ইভেন্ট-পরিচালিত ফাংশনের জন্য, এটি সাধারণত ট্রিগার করা ডেটা সোর্সের অঞ্চলে (যেমন, Cloud Firestore ডেটাবেস বা Cloud Storage বাকেট) এবং ফলব্যাক হিসেবে us-central1-এ ডিপ্লয় করা হয়।

ডেপ্লয় করার পরে, আপনি Firebase কনসোলে বা firebase functions:list রান করানোর মাধ্যমে অঞ্চল যাচাই করতে পারবেন। আপনি যদি চান যে আপনার ফাংশনটি অন্য অঞ্চলে রান করুক, তাহলে আপনি এর অঞ্চল পরিবর্তন করতে পারেন।

যেসব অঞ্চলে কাজ করে

এই বিভাগের তালিকায়, energy_savings_leaf আইকন থেকে বোঝা যায় যে এই অঞ্চলের বিদ্যুৎ কম কার্বন নির্গমনের মাধ্যমে তৈরি করা হয়। আরও তথ্যের জন্য, Google Cloud অঞ্চলের জন্য কার্বন মুক্ত শক্তি দেখুন।

টিয়ার ১ প্রাইসিং

Cloud Functions নিম্নলিখিত অঞ্চলে লেভেল ১ প্রাইসিং সহ উপলভ্য:

অঞ্চল লোকেশন মানানসই প্রোডাক্ট ভার্সন CO2 নির্গমন
africa-south1 জোহানেসবার্গ শুধুমাত্র ২য় জেনারেশন
asia-east1 তাইওয়ান 1st gen, 2nd gen
asia-east2 হংকং শুধুমাত্র 1st gen
asia-northeast1 টোকিও 1st gen, 2nd gen
asia-northeast2 ওসাকা 1st gen, 2nd gen
europe-north1 ফিনল্যান্ড শুধুমাত্র ২য় জেনারেশন energy_savings_leaf
europe-southwest1 মাদ্রিদ শুধুমাত্র ২য় জেনারেশন
europe-west1 বেলজিয়াম 1st gen, 2nd gen energy_savings_leaf
europe-west4 নেদারল্যান্ড শুধুমাত্র ২য় জেনারেশন
europe-west8 মিলান শুধুমাত্র ২য় জেনারেশন
europe-west9 প্যারিস শুধুমাত্র ২য় জেনারেশন energy_savings_leaf
me-west1 তেল আভিভ শুধুমাত্র ২য় জেনারেশন
europe-west2 লন্ডন শুধুমাত্র 1st gen
us-central1 আইওয়া 1st gen, 2nd gen energy_savings_leaf
us-east1 সাউথ ক্যারোলিনা 1st gen, 2nd gen
us-east4 উত্তর ভার্জিনিয়া 1st gen, 2nd gen
us-east5 কলম্বাস শুধুমাত্র ২য় জেনারেশন
us-south1 ডালাস শুধুমাত্র ২য় জেনারেশন
us-west1 অরেগন 1st gen, 2nd gen energy_savings_leaf

টিয়ার ২ মূল্য

Cloud Functions নিম্নলিখিত অঞ্চলে টিয়ার ২ প্রাইসিং সহ উপলভ্য:

অঞ্চল লোকেশন মানানসই প্রোডাক্ট ভার্সন CO2 নির্গমন
asia-east2 হংকং শুধুমাত্র ২য় জেনারেশন
asia-northeast3 সোল 1st gen, 2nd gen
asia-southeast1 সিঙ্গাপুর 1st gen, 2nd gen
asia-southeast2 জাকার্তা 1st gen, 2nd gen
asia-south1 মুম্বাই শুধুমাত্র ২য় জেনারেশন
asia-south2 দিল্লি, ভারত শুধুমাত্র ২য় জেনারেশন
australia-southeast1 সিডনি 1st gen, 2nd gen
australia-southeast2 মেলবোর্ন শুধুমাত্র ২য় জেনারেশন
europe-central2 ওয়ারশ 1st gen, 2nd gen
europe-west2 লন্ডন শুধুমাত্র ২য় জেনারেশন
europe-west3 ফ্র্যাঙ্কফুর্ট 1st gen, 2nd gen energy_savings_leaf
europe-west6 জুরিখ 1st gen, 2nd gen energy_savings_leaf
europe-west10 বার্লিন শুধুমাত্র ২য় জেনারেশন
europe-west12 তুরিন শুধুমাত্র ২য় জেনারেশন
me-central1 দোহা শুধুমাত্র ২য় জেনারেশন
me-central2 দাম্মাম শুধুমাত্র ২য় জেনারেশন
northamerica-northeast1 মন্ট্রিয়েল 1st gen, 2nd gen energy_savings_leaf
northamerica-northeast2 টোরন্টো শুধুমাত্র ২য় জেনারেশন energy_savings_leaf
southamerica-east1 সাও পাওলো 1st gen, 2nd gen energy_savings_leaf
southamerica-west1 সান্টিয়াগো, চিলি শুধুমাত্র ২য় জেনারেশন
us-west2 লস এঞ্জেলেস 1st gen, 2nd gen
us-west3 সল্ট লেক সিটি 1st gen, 2nd gen
us-west4 লাস ভেগাস 1st gen, 2nd gen

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

অঞ্চল নির্দিষ্ট করার পেশাদার পদ্ধতি

ডিফল্ট হিসেবে, Firebase CLI আপনার প্রজেক্টের কনফিগারেশনের উপর ভিত্তি করে কোনও অঞ্চলে ফাংশন ডেপ্লয় করে। ইভেন্ট-পরিচালিত ফাংশনের জন্য, এটি সাধারণত ট্রিগার করা ডেটা সোর্সের অঞ্চলে (যেমন, Cloud Firestore ডেটাবেস বা Cloud Storage বাকেট) এবং ফলব্যাক হিসেবে us-central1-এ ডিপ্লয় করা হয়।

Firebase ডিফল্টের উপর নির্ভর না করে নির্দিষ্ট অঞ্চল সেট করার জন্য আপনাকে উৎসাহিত করা হচ্ছে, যা সময়ের সাথে সাথে পরিবর্তিত হতে পারে। অঞ্চল সেট করার সময়, প্রতিটি ট্রিগার ধরনের জন্য এই বিভাগে দেওয়া পরামর্শ অনুসরণ করুন

ফাংশন যেখানে রান করে সেই অঞ্চল সেট করতে, ফাংশন ডেফিনিশনে region প্যারামিটার সেট করুন যেমন দেখানো হয়েছে:

Node.js

exports.firestoreAsia = onDocumentCreated(
  {
    document: "my-collection/{docId}",
    region: "asia-northeast1",
  },
  (event) => {},
);

Python

# Before
@firestore_fn.on_document_created("my-collection/{docId}")
def firestore_trigger(event):
    pass

# After
@firestore_fn.on_document_created("my-collection/{docId}",
                                  region="asia-northeast1")
def firestore_trigger_asia(event):
    pass

আপনি region-এ কমা দিয়ে আলাদা করা একাধিক অঞ্চল স্ট্রিং পাস করে একাধিক অঞ্চল নির্দিষ্ট করতে পারবেন। এছাড়াও, মনে রাখবেন যে, অনেক ব্যাকগ্রাউন্ড ট্রিগারের ধরনের জন্য কোনও অঞ্চল নির্দিষ্ট করার সময়, আপনাকে অঞ্চলের সাথে সঠিক ইভেন্ট ফিল্টারও নির্দিষ্ট করতে হবে। উপরের উদাহরণে, এটি হল Cloud Firestore document যা ইভেন্ট এমিট করে। Cloud Storage ট্রিগারের জন্য, ইভেন্ট ফিল্টার bucket হতে পারে; Pub/Sub ট্রিগারের জন্য এটি topic হবে এবং আরও অনেক কিছু।

প্রোডাকশন ট্রাফিক ম্যানেজ করছে এমন ফাংশনের অঞ্চল পরিবর্তন করার বিষয়ে আরও তথ্য পেতে ফাংশনের অঞ্চল পরিবর্তন করুন লিঙ্কে যান।

HTTP ও ক্লায়েন্ট-কলযোগ্য ফাংশন

HTTP ও কল করা যায় এমন ফাংশনের ক্ষেত্রে, আমরা সাজেস্ট করি যে প্রথমে আপনার ফাংশনটি ডেস্টিনেশন অঞ্চলে সেট করুন অথবা যেখানে বেশিরভাগ সম্ভাব্য গ্রাহক থাকেন তার সবচেয়ে কাছাকাছি লোকেশনে সেট করুন এবং তারপরে আপনার আসল ফাংশনটি পরিবর্তন করে সেটির HTTP অনুরোধ নতুন ফাংশনে রিডাইরেক্ট করুন (দুটির নাম একই হতে পারে)। আপনার HTTP ফাংশনের ক্লায়েন্টরা রিডাইরেক্ট কাজ করে থাকলে, আপনি নতুন ফাংশনের URL-এর সাথে HTTP রিডাইরেক্ট স্ট্যাটাস (৩০১) রিটার্ন করার জন্য আপনার আসল ফাংশনটি পরিবর্তন করতে পারেন। আপনার ক্লায়েন্ট রিডাইরেক্ট ভালভাবে ম্যানেজ করতে না পারলে, আপনি অরিজিনাল ফাংশন থেকে নতুন ফাংশনে একটি নতুন অনুরোধ শুরু করে, অরিজিনাল ফাংশন থেকে নতুন ফাংশনে অনুরোধ প্রক্সি করতে পারেন। সব ক্লায়েন্ট নতুন ফাংশন কল করছে কিনা তা নিশ্চিত করাই হল শেষ ধাপ।

কল করা যায় এমন ফাংশনের জন্য ক্লায়েন্ট-সাইড লোকেশন বেছে নেওয়া

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

ক্লায়েন্টে অঞ্চল সেট করতে, ইনিশিয়ালাইজেশনের সময় পছন্দসই অঞ্চল নির্দিষ্ট করুন:

Swift

lazy var functions = Functions.functions(region:"europe-west1")

Objective-C

@property(strong, nonatomic) FIRFunctions *functions;
// ...
self.functions = [FIRFunctions functionsWithRegion:@"europe-west1"];

ওয়েব


var functions = firebase.app().functions('europe-west1');

Android

private FirebaseFunctions mFunctions;
// ...
mFunctions = FirebaseFunctions.getInstance("europe-west1");

C++

firebase::functions::Functions* functions;
// ...
functions = firebase::functions::Functions::GetInstance("europe-west1");

Unity

firebase.Functions.FirebaseFunctions functions;

functions = Firebase.Functions.FirebaseFunctions.GetInstance("europe-west1");

ব্যাকগ্রাউন্ড ফাংশন

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

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

ইভেন্ট ট্রিগারের ধরন অনুযায়ী অপ্টিমাল অঞ্চলের সাজেশন আলাদা হয়:

ট্রিগারের ধরন অঞ্চল সংক্রান্ত সাজেশন
Cloud Firestore Cloud Firestore ইনস্ট্যান্স লোকেশনের (পরবর্তী বিভাগ দেখুন) সবচেয়ে কাছের অঞ্চল
Realtime Database Realtime Database ইনস্ট্যান্সের মতো একই অঞ্চল
Cloud Storage Cloud Storage বাকেট লোকেশনের সবচেয়ে কাছের অঞ্চল (পরবর্তী বিভাগ দেখুন)
অন্যান্য আপনি যদি কোনও Realtime Database ইনস্ট্যান্স, Cloud Firestore ইনস্ট্যান্স বা ফাংশনের মধ্যে কোনও Cloud Storage বাকেটের সাথে ইন্টার‍্যাক্ট করেন, তাহলে সাজেস্ট করা অঞ্চলটি একই হবে যেন আপনার কাছে সেইসব রিসোর্সের কোনও একটির দ্বারা ট্রিগার করা ফাংশন আছে। Firebase Hosting-এর সাথে কানেক্ট করা ফাংশন যেকোনও অঞ্চলে থাকতে পারে, তবে সাজেশনের জন্য হোস্টিং সার্ভারলেস ওভারভিউ দেখুন।

Cloud Firestore ও Cloud Storage লোকেশনের ভিত্তিতে অঞ্চল বেছে নেওয়া

ফাংশনের জন্য উপলভ্য অঞ্চলগুলি সবসময় আপনার Cloud Firestore ডেটাবেস এবং আপনার Cloud Storage বাকেটের জন্য উপলভ্য অঞ্চলের সাথে হুবহু মেলে না।

মনে রাখবেন, আপনার ফাংশন ও রিসোর্স (ডেটাবেস ইনস্ট্যান্স বা Cloud Storage বাকেট) আলাদা আলাদা লোকেশনে থাকলে, আপনি সম্ভাব্যভাবে বেশি লেটেন্সি ও বিলিং খরচ অনুভব করতে পারেন।

Cloud Firestore এবং Cloud Storage-এর জন্য সবচেয়ে কাছাকাছি ফাংশন-সাপোর্ট করা অঞ্চলের ম্যাপিং এখানে দেওয়া হল, সেইসব ক্ষেত্রে যেখানে একই অঞ্চল সাপোর্ট করে না:

Cloud Firestore ও Cloud Storage-এর জন্য অঞ্চল/একাধিক অঞ্চল ফাংশনের জন্য সবচেয়ে কাছের অঞ্চল
nam5 বা us-central (মাল্টি-রিজিয়ন) us-central1
eur3 বা europe-west (মাল্টি-রিজিয়ন) europe-west1
europe-west4 (নেদারল্যান্ড) europe-west1
asia-south1 (মুম্বই) asia-east2
asia-south2 (দিল্লি) asia-east2
australia-southeast2 (মেলবোর্ন) australia-southeast1