Cloud Functions আঞ্চলিক , যার অর্থ হলো, যে পরিকাঠামো আপনার ফাংশনটি পরিচালনা করে তা নির্দিষ্ট অঞ্চলে অবস্থিত এবং গুগল দ্বারা পরিচালিত হয়, যাতে সেই অঞ্চলগুলির অন্তর্গত সমস্ত জোনে এটি রিডান্ড্যান্টভাবে উপলব্ধ থাকে।
আপনার ফাংশনগুলো কোন কোন অঞ্চলে চালাবেন তা নির্বাচন করার সময়, আপনার প্রধান বিবেচ্য বিষয় হওয়া উচিত ল্যাটেন্সি এবং প্রাপ্যতা। আপনি সাধারণত আপনার ব্যবহারকারীদের কাছাকাছি অঞ্চলগুলো নির্বাচন করতে পারেন, তবে আপনার অ্যাপ যে অন্যান্য পণ্য ও পরিষেবাগুলো ব্যবহার করে, সেগুলোর অবস্থানও বিবেচনা করা উচিত। একাধিক অঞ্চলে পরিষেবা ব্যবহার করলে তা আপনার অ্যাপের ল্যাটেন্সির পাশাপাশি মূল্যের উপরও প্রভাব ফেলতে পারে।
ডিফল্টরূপে, ফাংশনগুলো us-central1 অঞ্চলে চলে। উল্লেখ্য যে, এটি কোনো ইভেন্ট সোর্সের (যেমন Cloud Storage বাকেট) অঞ্চল থেকে ভিন্ন হতে পারে। এই পৃষ্ঠার পরবর্তী অংশে জানুন, কীভাবে একটি ফাংশন চলার অঞ্চল নির্দিষ্ট করতে হয়।
সমর্থিত অঞ্চল
এই বিভাগের তালিকাগুলিতে, energy_savings_leaf আইকনটি নির্দেশ করে যে এই অঞ্চলের বিদ্যুৎ কম কার্বন নিঃসরণের মাধ্যমে উৎপাদিত হয়। আরও তথ্যের জন্য, Google Cloud অঞ্চলগুলির জন্য কার্বন-মুক্ত শক্তি দেখুন।
টায়ার ১ মূল্য নির্ধারণ
Cloud Functions নিম্নলিখিত অঞ্চলগুলিতে টিয়ার ১ মূল্যে উপলব্ধ:
| অঞ্চল | অবস্থান | সমর্থিত পণ্যের সংস্করণ | CO2 নির্গমন |
|---|---|---|---|
africa-south1 | জোহানেসবার্গ | শুধুমাত্র ২য় প্রজন্মের জন্য | |
asia-east1 | তাইওয়ান | ১ম প্রজন্ম, ২য় প্রজন্ম | |
asia-east2 | হংকং | শুধুমাত্র প্রথম প্রজন্মের জন্য | |
asia-northeast1 | টোকিও | ১ম প্রজন্ম, ২য় প্রজন্ম | |
asia-northeast2 | ওসাকা | ১ম প্রজন্ম, ২য় প্রজন্ম | |
europe-north1 | ফিনল্যান্ড | শুধুমাত্র ২য় প্রজন্মের জন্য | শক্তি_সাশ্রয়ী_পাতা |
europe-southwest1 | মাদ্রিদ | শুধুমাত্র ২য় প্রজন্মের জন্য | |
europe-west1 | বেলজিয়াম | ১ম প্রজন্ম, ২য় প্রজন্ম | শক্তি_সাশ্রয়ী_পাতা |
europe-west4 | নেদারল্যান্ডস | শুধুমাত্র ২য় প্রজন্মের জন্য | |
europe-west8 | মিলান | শুধুমাত্র ২য় প্রজন্মের জন্য | |
europe-west9 | প্যারিস | শুধুমাত্র ২য় প্রজন্মের জন্য | শক্তি_সাশ্রয়ী_পাতা |
me-west1 | তেল আবিব | শুধুমাত্র ২য় প্রজন্মের জন্য | |
europe-west2 | লন্ডন | শুধুমাত্র প্রথম প্রজন্মের জন্য | |
us-central1 | আইওয়া | ১ম প্রজন্ম, ২য় প্রজন্ম | শক্তি_সাশ্রয়ী_পাতা |
us-east1 | দক্ষিণ ক্যারোলিনা | ১ম প্রজন্ম, ২য় প্রজন্ম | |
us-east4 | উত্তর ভার্জিনিয়া | ১ম প্রজন্ম, ২য় প্রজন্ম | |
us-east5 | কলম্বাস | শুধুমাত্র ২য় প্রজন্মের জন্য | |
us-south1 | ডালাস | শুধুমাত্র ২য় প্রজন্মের জন্য | |
us-west1 | ওরেগন | ১ম প্রজন্ম, ২য় প্রজন্ম | শক্তি_সাশ্রয়ী_পাতা |
টায়ার ২ মূল্য নির্ধারণ
Cloud Functions নিম্নলিখিত অঞ্চলগুলিতে টিয়ার ২ মূল্যে উপলব্ধ:
| অঞ্চল | অবস্থান | সমর্থিত পণ্যের সংস্করণ | CO2 নির্গমন |
|---|---|---|---|
asia-east2 | হংকং | শুধুমাত্র ২য় প্রজন্মের জন্য | |
asia-northeast3 | সিউল | ১ম প্রজন্ম, ২য় প্রজন্ম | |
asia-southeast1 | সিঙ্গাপুর | ১ম প্রজন্ম, ২য় প্রজন্ম | |
asia-southeast2 | জাকার্তা | ১ম প্রজন্ম, ২য় প্রজন্ম | |
asia-south1 | মুম্বাই | শুধুমাত্র ২য় প্রজন্মের জন্য | |
asia-south2 | দিল্লি, ভারত | শুধুমাত্র ২য় প্রজন্মের জন্য | |
australia-southeast1 | সিডনি | ১ম প্রজন্ম, ২য় প্রজন্ম | |
australia-southeast2 | মেলবোর্ন | শুধুমাত্র ২য় প্রজন্মের জন্য | |
europe-central2 | ওয়ারশ | ১ম প্রজন্ম, ২য় প্রজন্ম | |
europe-west2 | লন্ডন | শুধুমাত্র ২য় প্রজন্মের জন্য | |
europe-west3 | ফ্রাঙ্কফুর্ট | ১ম প্রজন্ম, ২য় প্রজন্ম | শক্তি_সাশ্রয়ী_পাতা |
europe-west6 | জুরিখ | ১ম প্রজন্ম, ২য় প্রজন্ম | শক্তি_সাশ্রয়ী_পাতা |
europe-west10 | বার্লিন | শুধুমাত্র ২য় প্রজন্মের জন্য | |
europe-west12 | তুরিন | শুধুমাত্র ২য় প্রজন্মের জন্য | |
me-central1 | দোহা | শুধুমাত্র ২য় প্রজন্মের জন্য | |
me-central2 | দাম্মাম | শুধুমাত্র ২য় প্রজন্মের জন্য | |
northamerica-northeast1 | মন্ট্রিয়ল | ১ম প্রজন্ম, ২য় প্রজন্ম | শক্তি_সাশ্রয়ী_পাতা |
northamerica-northeast2 | টরন্টো | শুধুমাত্র ২য় প্রজন্মের জন্য | শক্তি_সাশ্রয়ী_পাতা |
southamerica-east1 | সাও পাওলো | ১ম প্রজন্ম, ২য় প্রজন্ম | শক্তি_সাশ্রয়ী_পাতা |
southamerica-west1 | সান্তিয়াগো, চিলি | শুধুমাত্র ২য় প্রজন্মের জন্য | |
us-west2 | লস অ্যাঞ্জেলেস | ১ম প্রজন্ম, ২য় প্রজন্ম | |
us-west3 | সল্ট লেক সিটি | ১ম প্রজন্ম, ২য় প্রজন্ম | |
us-west4 | লাস ভেগাস | ১ম প্রজন্ম, ২য় প্রজন্ম |
একটি নির্দিষ্ট প্রকল্পের একটি নির্দিষ্ট অঞ্চলের ফাংশনগুলির নাম অবশ্যই অনন্য (কেস-ইনসেনসিটিভ) হতে হবে, কিন্তু বিভিন্ন অঞ্চল বা প্রকল্পের ফাংশনগুলির নাম একই হতে পারে।
একটি অঞ্চল নির্দিষ্ট করার সর্বোত্তম অনুশীলন
ডিফল্টরূপে, ফাংশনগুলো us-central1 অঞ্চলে চলে। মনে রাখবেন যে এটি কোনো ইভেন্ট সোর্সের (যেমন Cloud Storage বাকেট) অঞ্চল থেকে ভিন্ন হতে পারে। যদি কোনো ফাংশন চলার অঞ্চল নির্দিষ্ট করার প্রয়োজন হয়, তবে প্রতিটি ফাংশন ট্রিগার টাইপের জন্য এই বিভাগে দেওয়া সুপারিশগুলো অনুসরণ করুন।
কোনো ফাংশন কোন অঞ্চলে চলবে তা নির্ধারণ করতে, ফাংশন সংজ্ঞায় region প্যারামিটারটি সেট করুন, যেমনটি দেখানো হয়েছে:
নোড.জেএস
exports.firestoreAsia = onDocumentCreated(
{
document: "my-collection/{docId}",
region: "asia-northeast1",
},
(event) => {},
);
পাইথন
# 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 হতে পারে; একটি পাব/সাব ট্রিগারের জন্য এটি topic হবে, ইত্যাদি।
প্রোডাকশন ট্র্যাফিক পরিচালনা করে এমন কোনো ফাংশনের অঞ্চল পরিবর্তন করার বিষয়ে আরও তথ্যের জন্য ‘change a function's region’ দেখুন।
HTTP এবং ক্লায়েন্ট-কলযোগ্য ফাংশন
HTTP এবং কলযোগ্য ফাংশনগুলির জন্য, আমরা সুপারিশ করি যে আপনি প্রথমে আপনার ফাংশনটিকে গন্তব্য অঞ্চলে, অথবা যেখানে সর্বাধিক সম্ভাব্য গ্রাহক অবস্থিত তার নিকটতম অঞ্চলে সেট করুন, এবং তারপরে আপনার মূল ফাংশনটি পরিবর্তন করে এর HTTP অনুরোধটিকে নতুন ফাংশনে পুনঃনির্দেশিত করুন (তাদের নাম একই হতে পারে)। যদি আপনার HTTP ফাংশনের ক্লায়েন্টরা পুনঃনির্দেশ সমর্থন করে, তাহলে আপনি কেবল আপনার মূল ফাংশনটি পরিবর্তন করে আপনার নতুন ফাংশনের URL সহ একটি HTTP পুনঃনির্দেশ স্ট্যাটাস (301) ফেরত দিতে পারেন। যদি আপনার ক্লায়েন্টরা পুনঃনির্দেশ ভালোভাবে পরিচালনা করতে না পারে, তাহলে আপনি মূল ফাংশন থেকে নতুন ফাংশনে একটি নতুন অনুরোধ শুরু করে অনুরোধটিকে প্রক্সি করতে পারেন। চূড়ান্ত ধাপটি হলো নিশ্চিত করা যে সমস্ত ক্লায়েন্ট নতুন ফাংশনটি কল করছে।
কলযোগ্য ফাংশনগুলির জন্য ক্লায়েন্ট-সাইড অবস্থান নির্বাচন
কলযোগ্য ফাংশনের ক্ষেত্রে, ক্লায়েন্ট কলযোগ্য সেটআপগুলোকে HTTP ফাংশনের মতোই একই নির্দেশিকা অনুসরণ করতে হবে। ক্লায়েন্ট একটি অঞ্চলও নির্দিষ্ট করতে পারে, এবং ফাংশনটি us-central1 ছাড়া অন্য কোনো অঞ্চলে চললে তাকে অবশ্যই তা করতে হবে।
ক্লায়েন্টে অঞ্চল সেট করতে, প্রারম্ভিক সময়ে কাঙ্ক্ষিত অঞ্চলটি নির্দিষ্ট করুন:
সুইফট
lazy var functions = Functions.functions(region:"europe-west1")
উদ্দেশ্য-সি
@property(strong, nonatomic) FIRFunctions *functions;
// ...
self.functions = [FIRFunctions functionsWithRegion:@"europe-west1"];
ওয়েব
var functions = firebase.app().functions('europe-west1');
অ্যান্ড্রয়েড
private FirebaseFunctions mFunctions;
// ...
mFunctions = FirebaseFunctions.getInstance("europe-west1");
সি++
firebase::functions::Functions* functions;
// ...
functions = firebase::functions::Functions::GetInstance("europe-west1");
ঐক্য
firebase.Functions.FirebaseFunctions functions;
functions = Firebase.Functions.FirebaseFunctions.GetInstance("europe-west1");
পটভূমি ফাংশন
ব্যাকগ্রাউন্ড ফাংশনগুলো 'অ্যাট-লিস্ট-ওয়ান্স' ইভেন্ট ডেলিভারি নীতি অনুসরণ করে, যার অর্থ হলো কিছু পরিস্থিতিতে তারা ডুপ্লিকেট ইভেন্ট পেতে পারে। তাই, আপনার ফাংশনগুলোকে আইডম্পোটেন্ট হিসেবে ইমপ্লিমেন্ট করা উচিত। যদি আপনার ফাংশনটি ইতিমধ্যেই আইডম্পোটেন্ট হয়ে থাকে, তাহলে আপনি একই ইভেন্ট ট্রিগার ব্যবহার করে নতুন রিজিয়নে ফাংশনটি পুনরায় ডিপ্লয় করতে পারেন এবং নতুন ফাংশনটি সঠিকভাবে ট্র্যাফিক পাচ্ছে কিনা তা যাচাই করার পর পুরানো ফাংশনটি সরিয়ে ফেলতে পারেন। এই পরিবর্তনের সময়, উভয় ফাংশনই ইভেন্ট পাবে। ফাংশনের রিজিয়ন পরিবর্তনের জন্য প্রস্তাবিত কমান্ডের ক্রম জানতে 'change a function's region' অংশটি দেখুন।
যদি আপনার ফাংশনটি বর্তমানে আইডম্পোটেন্ট না হয়, অথবা এর আইডম্পোটেন্সি নির্দিষ্ট অঞ্চলের বাইরে বিস্তৃত না হয়, তাহলে আমরা সুপারিশ করি যে ফাংশনটি সরানোর আগে আপনি প্রথমে আইডম্পোটেন্সি প্রয়োগ করুন।
ইভেন্ট ট্রিগারের প্রকারভেদের ওপর ভিত্তি করে সর্বোত্তম অঞ্চলের সুপারিশ ভিন্ন হয়:
| ট্রিগার টাইপ | অঞ্চল সুপারিশ |
|---|---|
| Cloud Firestore | Cloud Firestore ইনস্ট্যান্সের অবস্থানের নিকটতম অঞ্চল (পরবর্তী বিভাগ দেখুন) |
| Realtime Database | Realtime Database ইনস্ট্যান্সের মতো একই অঞ্চলে |
| Cloud Storage | Cloud Storage বাকেট অবস্থানের নিকটতম অঞ্চল (পরবর্তী বিভাগ দেখুন) |
| অন্যান্য | যদি আপনি ফাংশনের ভিতরে কোনো Realtime Database ইনস্ট্যান্স, Cloud Firestore ইনস্ট্যান্স, বা Cloud Storage বাকেটের সাথে ইন্টারঅ্যাক্ট করেন, তাহলে প্রস্তাবিত অঞ্চলটি হবে ঠিক তেমনই, যেমনটি ওই রিসোর্সগুলোর কোনো একটি দ্বারা ট্রিগার হওয়া ফাংশনের ক্ষেত্রে হয়ে থাকে। অন্যথায়, us-central1 এর ডিফল্ট অঞ্চলটি ব্যবহার করুন। 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 |