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

টিয়ার ২-এর দাম

Cloud Functions নিম্নলিখিত অঞ্চলে উপলভ্য, যেখানে টিয়ার ২-এর দাম প্রযোজ্য:

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

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

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

ডিফল্ট হিসেবে, 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 রিডাইরেক্ট স্ট্যাটাস (301) ফিরিয়ে দিতে পারেন। আপনার ক্লায়েন্ট রিডাইরেক্ট ঠিকভাবে ম্যানেজ করতে না পারলে, আপনি আসল ফাংশন থেকে নতুন ফাংশনে নতুন অনুরোধ শুরু করার মাধ্যমে আসল ফাংশন থেকে নতুন ফাংশনে অনুরোধ প্রক্সি করতে পারবেন। শেষ ধাপে নিশ্চিত করতে হবে যে সব ক্লায়েন্ট নতুন ফাংশন কল করছে।

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

কল করা যায় এমন ফাংশনের ক্ষেত্রে, ক্লায়েন্ট কল করা যায় এমন সেট-আপের ক্ষেত্রে 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