যখন আপনার প্রজেক্টটি স্পার্কের বিনামূল্যের প্রাইসিং প্ল্যানে থাকে, তখন Realtime Database ব্যবহারের জন্য আপনাকে কোনো বিল দেওয়া হয় না। আপনি বিনামূল্যে এই সুবিধা পান, যার মধ্যে অন্তর্ভুক্ত রয়েছে ১ জিবি ডেটা স্টোরেজ এবং প্রতি মাসে ১০ জিবি ডেটা ডাউনলোড।
আপনি যদি পে-অ্যাজ-ইউ-গো ব্লেজ প্রাইসিং প্ল্যানে আপগ্রেড করেন, তাহলে আপনার বিনামূল্যে ব্যবহারের সুবিধা (১ জিবি ডেটা স্টোরেজ এবং প্রতি মাসে ১০ জিবি ডেটা ডাউনলোড) বজায় থাকবে এবং এর অতিরিক্ত ব্যবহারের জন্য আপনাকে বিল করা হবে। আপনার প্রজেক্টটি যখন ব্লেজ প্রাইসিং প্ল্যানের অধীনে থাকবে, তখন আমরা আপনার প্রজেক্টের জন্য বাজেট অ্যালার্ট সেট আপ করার পরামর্শ দিই।
এই পৃষ্ঠার বাকি অংশে বিলিং সম্পর্কে আরও বিস্তারিতভাবে বর্ণনা করা হয়েছে।
Realtime Database কীভাবে বিলিং গণনা করে
ফায়ারবেস আপনার ডাটাবেসে সংরক্ষিত ডেটা এবং OSI মডেলের সেশন লেয়ারে (লেয়ার ৫) সমস্ত বহির্গামী নেটওয়ার্ক ট্র্যাফিকের জন্য বিল করে। স্টোরেজের জন্য প্রতি জিবি/মাসে $৫ হারে বিল করা হয়, যা দৈনিক ভিত্তিতে মূল্যায়ন করা হয়। আপনার ডাটাবেসের অবস্থান দ্বারা বিলিং প্রভাবিত হয় না। বহির্গামী ট্র্যাফিকের মধ্যে সমস্ত ডাটাবেস অপারেশনের সংযোগ এবং এনক্রিপশন ওভারহেড এবং ডাটাবেস রিডের মাধ্যমে ডাউনলোড করা ডেটা অন্তর্ভুক্ত। ডাটাবেস রিড এবং রাইট উভয়ই আপনার বিলে সংযোগ খরচ যোগ করতে পারে। নিরাপত্তা নিয়ম দ্বারা প্রত্যাখ্যাত অপারেশন সহ আপনার ডাটাবেসে আসা-যাওয়ার সমস্ত ট্র্যাফিকের জন্য বিলযোগ্য খরচ হয়।
বিলযোগ্য ট্র্যাফিকের কিছু সাধারণ উদাহরণ হলো:
- ডাউনলোড করা ডেটা: ক্লায়েন্টরা যখন আপনার ডেটাবেস থেকে ডেটা নেয়, তখন ফায়ারবেস সেই ডাউনলোড করা ডেটার জন্য চার্জ করে। সাধারণত, এটি আপনার ব্যান্ডউইথ খরচের সিংহভাগ জুড়ে থাকে, কিন্তু আপনার বিলের ক্ষেত্রে এটিই একমাত্র কারণ নয়।
- প্রোটোকল ওভারহেড: একটি সেশন স্থাপন এবং বজায় রাখার জন্য সার্ভার এবং ক্লায়েন্টদের মধ্যে কিছু অতিরিক্ত ট্র্যাফিকের প্রয়োজন হয়। অন্তর্নিহিত প্রোটোকলের উপর নির্ভর করে, এই ট্র্যাফিকের মধ্যে অন্তর্ভুক্ত থাকতে পারে: ফায়ারবেস রিয়েলটাইম ডেটাবেসের রিয়েলটাইম প্রোটোকল ওভারহেড, ওয়েবসকেট ওভারহেড, এবং HTTP হেডার ওভারহেড। প্রতিবার একটি সংযোগ স্থাপন করার সময়, এই ওভারহেড, যেকোনো SSL এনক্রিপশন ওভারহেডের সাথে মিলিত হয়ে, সংযোগের খরচে অবদান রাখে। যদিও একটি একক অনুরোধের জন্য এটি খুব বেশি ব্যান্ডউইথ নয়, তবে আপনার পেলোডগুলি খুব ছোট হলে বা আপনি ঘন ঘন, স্বল্প সময়ের সংযোগ স্থাপন করলে এটি আপনার বিলের একটি উল্লেখযোগ্য অংশ হতে পারে।
- SSL এনক্রিপশন ওভারহেড: নিরাপদ সংযোগের জন্য প্রয়োজনীয় SSL এনক্রিপশন ওভারহেডের সাথে একটি খরচ জড়িত থাকে। গড়ে, এই খরচ প্রাথমিক হ্যান্ডশেকের জন্য প্রায় ৩.৫ কিলোবাইট এবং প্রতিটি বহির্গামী বার্তায় TLS রেকর্ড হেডারের জন্য প্রায় কয়েক দশ বাইট। বেশিরভাগ অ্যাপের জন্য, এটি আপনার বিলের একটি ছোট অংশ। তবে, আপনার নির্দিষ্ট ক্ষেত্রে যদি অনেক SSL হ্যান্ডশেকের প্রয়োজন হয়, তাহলে এটি একটি বড় অংশ হয়ে যেতে পারে। উদাহরণস্বরূপ, যে ডিভাইসগুলো TLS সেশন টিকিট সমর্থন করে না, সেগুলোতে প্রচুর সংখ্যক SSL সংযোগ হ্যান্ডশেকের প্রয়োজন হতে পারে।
- Firebase কনসোল ডেটা: যদিও এটি সাধারণত Realtime Database খরচের একটি উল্লেখযোগ্য অংশ নয়, Firebase কনসোল থেকে আপনি যে ডেটা পড়েন এবং লেখেন তার জন্য ফায়ারবেস চার্জ করে।
আপনার বিলকৃত ব্যবহারের পরিমাণ অনুমান করুন
আপনার বর্তমান Realtime Database সংযোগ এবং ডেটা ব্যবহার দেখতে, Firebase কনসোলের ইউসেজ (Usage) ট্যাবটি দেখুন। আপনি চলতি বিলিং পিরিয়ড, গত ৩০ দিন বা গত ২৪ ঘণ্টার ব্যবহার দেখতে পারেন।
ফায়ারবেস নিম্নলিখিত মেট্রিকগুলির ব্যবহারের পরিসংখ্যান দেখায়:
- সংযোগ: আপনার ডাটাবেসের সাথে একযোগে চলমান, বর্তমানে খোলা, রিয়েলটাইম সংযোগের সংখ্যা। এর মধ্যে নিম্নলিখিত রিয়েলটাইম সংযোগগুলো অন্তর্ভুক্ত: ওয়েবসকেট, লং পোলিং, এবং এইচটিএমএল সার্ভার-প্রেরিত ইভেন্ট। এতে রেস্টফুল অনুরোধ অন্তর্ভুক্ত নয়।
- স্টোরেজ: আপনার ডেটাবেসে কী পরিমাণ ডেটা সংরক্ষিত থাকে। এর মধ্যে ফায়ারবেস হোস্টিং বা অন্যান্য ফায়ারবেস পণ্যের মাধ্যমে সংরক্ষিত ডেটা অন্তর্ভুক্ত নয়।
- ডাউনলোড: আপনার ডেটাবেস থেকে ডাউনলোড করা সমস্ত বাইট, যার মধ্যে প্রোটোকল এবং এনক্রিপশন ওভারহেড অন্তর্ভুক্ত।
- লোড: এই গ্রাফটি দেখায় যে, একটি নির্দিষ্ট ১-মিনিটের ব্যবধানে আপনার ডাটাবেসের কতটা অংশ অনুরোধ প্রক্রিয়াকরণে ব্যবহৃত হচ্ছে। আপনার ডাটাবেস যখন ১০০%-এর কাছাকাছি পৌঁছায়, তখন আপনি পারফরম্যান্স সংক্রান্ত সমস্যা দেখতে পারেন।
ব্যবহার অপ্টিমাইজ করুন
আপনার ডাটাবেস ব্যবহার এবং ব্যান্ডউইথ খরচ অপ্টিমাইজ করার জন্য কয়েকটি সেরা পদ্ধতি রয়েছে যা আপনি অবলম্বন করতে পারেন।
- নেটিভ SDK ব্যবহার করুন: যখনই সম্ভব, REST API-এর পরিবর্তে আপনার অ্যাপের প্ল্যাটফর্মের সাথে সামঞ্জস্যপূর্ণ SDK ব্যবহার করুন। SDK-গুলো খোলা সংযোগ বজায় রাখে, ফলে SSL এনক্রিপশনের খরচ কমে যায়, যা সাধারণত REST API-এর ক্ষেত্রে যুক্ত হয়।
- বাগ পরীক্ষা করুন: যদি আপনার ব্যান্ডউইথের খরচ অপ্রত্যাশিতভাবে বেশি হয়, তবে যাচাই করে দেখুন যে আপনার অ্যাপটি আপনার মূল উদ্দেশ্যের চেয়ে বেশি ডেটা বা ঘন ঘন সিঙ্ক করছে কিনা। সমস্যাগুলো নির্দিষ্টভাবে চিহ্নিত করতে, আপনার রিড অপারেশনগুলো পরিমাপ করার জন্য প্রোফাইলার টুল ব্যবহার করুন এবং অ্যান্ড্রয়েড , অবজেক্টিভ-সি ও ওয়েব এসডিকে-তে ডিবাগ লগিং চালু করুন। সবকিছু আপনার উদ্দেশ্য অনুযায়ী কাজ করছে কিনা তা নিশ্চিত করতে আপনার অ্যাপের ব্যাকগ্রাউন্ড এবং সিঙ্ক প্রসেসগুলো পরীক্ষা করুন।
- কানেকশন কমান: সম্ভব হলে, আপনার কানেকশনের ব্যান্ডউইথ অপ্টিমাইজ করার চেষ্টা করুন। নেটিভ SDK ব্যবহার করে একটি একক, নিরবচ্ছিন্ন কানেকশনের চেয়ে ঘন ঘন ছোট REST রিকোয়েস্ট বেশি ব্যয়বহুল হতে পারে। আপনি যদি REST API ব্যবহার করেন, তবে HTTP keep-alive বা server-sent events ব্যবহার করার কথা বিবেচনা করতে পারেন, যা SSL হ্যান্ডশেক থেকে খরচ কমাতে পারে।
- TLS সেশন টিকিট ব্যবহার করুন: TLS সেশন টিকিট ইস্যু করার মাধ্যমে পুনরায় চালু হওয়া সংযোগের ক্ষেত্রে SSL এনক্রিপশনের অতিরিক্ত খরচ কমান। আপনার যদি ডাটাবেসে ঘন ঘন ও সুরক্ষিত সংযোগের প্রয়োজন হয়, তবে এটি বিশেষভাবে সহায়ক।
- কোয়েরি ইনডেক্স করা: আপনার ডেটা ইনডেক্স করলে কোয়েরির জন্য ব্যবহৃত মোট ব্যান্ডউইথ কমে যায়, যার ফলে আপনার খরচ কমে এবং ডেটাবেসের পারফরম্যান্স বাড়ে। আপনার ডেটাবেসে ইনডেক্স না করা কোয়েরিগুলো খুঁজে বের করতে প্রোফাইলার টুলটি ব্যবহার করুন।
- আপনার লিসেনারগুলোকে অপ্টিমাইজ করুন: আপনার লিসেন অপারেশনগুলো যে ডেটা রিটার্ন করে তা সীমিত করতে কোয়েরি যোগ করুন এবং এমন লিসেনার ব্যবহার করুন যা শুধুমাত্র ডেটার আপডেট ডাউনলোড করে — উদাহরণস্বরূপ,
once()এর পরিবর্তেon()) ব্যবহার করুন। এছাড়াও, তারা যে পরিমাণ ডেটা সিঙ্ক করে তা সীমিত করতে আপনার লিসেনারগুলোকে পাথের যতটা সম্ভব নিচের দিকে রাখুন। - স্টোরেজ খরচ কমান: নিয়মিত পরিষ্করণ কাজ চালান এবং আপনার ডাটাবেস থেকে যেকোনো ডুপ্লিকেট ডেটা হ্রাস করুন।
- নিয়ম ব্যবহার করুন: আপনার ডাটাবেসে যেকোনো সম্ভাব্য ব্যয়বহুল ও অননুমোদিত কার্যকলাপ প্রতিরোধ করুন। উদাহরণস্বরূপ, Firebase Realtime Database Security Rules ব্যবহার করে এমন পরিস্থিতি এড়ানো যেতে পারে যেখানে কোনো বিদ্বেষী ব্যবহারকারী বারবার আপনার সম্পূর্ণ ডাটাবেস ডাউনলোড করে ফেলে। ফায়ারবেস রিয়েলটাইম ডাটাবেস রুলস ব্যবহার সম্পর্কে আরও জানুন।
আপনার অ্যাপের জন্য সেরা অপ্টিমাইজেশন পরিকল্পনাটি আপনার নির্দিষ্ট ব্যবহারের ধরনের উপর নির্ভর করে। যদিও এটি সেরা অনুশীলনগুলির একটি সম্পূর্ণ তালিকা নয়, আপনি আমাদের স্ল্যাক চ্যানেলে বা স্ট্যাক ওভারফ্লোতে ফায়ারবেস বিশেষজ্ঞদের কাছ থেকে আরও পরামর্শ এবং টিপস পেতে পারেন।