মাল্টি-টেন্যান্সি আইসোলেশন (Multi-Tenancy Isolation)
Ultimate Multisite: Multi-Tenancy 1.2.0 সার্বভৌম টেন্যান্টদের জন্য প্রতি-সাবসাইট ডেটাবেস এবং ফাইল সিস্টেম আইসোলেশন সমর্থন করে। এটি নেটওয়ার্ক-স্তরের প্রোভিশনিং, বিলিং এবং অ্যাডমিনিস্ট্রেশন বজায় রেখে টেন্যান্ট ডেটাকে আলাদা রাখে।
আইসোলেশন কৌশল (Isolation strategy)
যেসব গ্রাহকের জন্য শক্তিশালী ডেটা বিভাজন, ডেডিকেটেড ফাইল সিস্টেম স্টোরেজ বা আলাদা হোস্ট সীমানার প্রয়োজন, তাদের জন্য সার্বভৌম আইসোলেশন ব্যবহার করুন।
প্রতিটি সার্বভৌম টেন্যান্টের নি ম্নলিখিত বিষয়গুলি থাকা উচিত:
- হোস্ট দ্বারা অনুমোদিত একটি ডেডিকেটেড টেন্যান্ট ডেটাবেস বা ডেটাবেস প্রিফিক্স কৌশল।
- একটি ডেডিকেটেড টেন্যান্ট ফাইল সিস্টেম রুট।
- একটি টেন্যান্ট রেজিস্ট্রি এন্ট্রি যা সাইটটিকে এর ডেটাবেস, রুট পাথ, হোস্টনেম এবং আইসোলেশন মডেলের সাথে ম্যাপ করে।
- টেন্যান্ট লাইভ হিসাবে বিবেচিত হওয়ার আগে একটি মাইগ্রেশন ভেরিফিকেশন ফলাফল।
ডেটাবেস হোস্ট বাইন্ডিং (Database host binding)
সংস্করণ 1.2.0 সার্বভৌম ইনস্টলগুলির জন্য ডিফল্ট একই মেশিনে হোস্ট বাইন্ডিং আচরণ পরিবর্তন করে। localhost এর মতো একই মেশিনের মানগুলিকে স্বাভা বিক করা হয়েছে যাতে Bedrock, FrankenPHP এবং কন্টেইনারাইজড ওয়ার্ডপ্রেস ইনস্টলগুলি MySQL আসলে যে হোস্ট স্ট্রিংটি দেখে তা পরীক্ষা করতে পারে এবং অনুমতি দিতে পারে।
একটি সার্বভৌম টেন্যান্ট কনফিগার করার সময়:
১. ডেটাবেস হোস্টকে টেন্যান্ট রানটাইমের প্রয়োজনীয় মান সেট করুন।
২. স্থানীয় সংযোগ প্রত্যাশা করলে লোকাল সকেট ইনস্টলগুলির জন্য localhost ব্যবহার করুন।
৩. শুধুমাত্র তখনই 127.0.0.1 বা একটি সার্ভিস হোস্টনেম ব্যবহার করুন যখন ডেটাবেস সার্ভার সেই হোস্টে সুবিধা প্রদান করে।
৪. হোস্ট বাইন্ডিং পরিবর্তন করার পরে মাইগ্রেশন ভেরিফিকেশন চালান।
যদি ভেরিফিকেশন রিপোর্টে অনুমোদনের ব্যর্থতা রিপোর্ট আসে, তবে টেন্যান্টের ডিবি ইউজার গ্রান্টগুলির সাথে কনফিগার করা হোস্ট বাইন্ডিং তুলনা করুন। user@localhost-এর জন্য অনুমোদিত ব্যবহারকারী [email protected] বা user@%-এর থেকে আলাদা।
ফাইল সিস্টেম রুট (Filesystem root)
টেম্পলেট রুটটি রিস্টার্ট এবং ডিপ্লয়মেন্টের পরেও স্থিতিশীল থাকা উচিত। অস্থায়ী মাউন্ট পাথ এড়িয়ে চলুন। Bedrock-স্টাইলের ইনস্টলেশনের জন্য, নিশ্চিত করুন যে টেন্যান্ট রুটটি শুধুমাত্র প্রজেক্ট রুট নয়, বরং টেন্যান্ট বুটস্ট্র্যাপ দ্বারা প্রত্যাশিত ওয়ার্ডপ্রেস ওয়েব রুটে নির্দেশ করছে।
প্রোভিশনিং ক্রম
নতুন সার্বভৌম টেন্যান্টের জন্য এই ক্রমটি ব্যবহার করুন:
১. টেন্যান্ট রেজিস্ট্রেশন এন্ট্রি তৈরি করুন। ২. টেন্যান্ট ডেটাবে স এবং ডেটাবেস ইউজার তৈরি করুন। ৩. টেন্যান্ট স্কিমা বুটস্ট্র্যাপ করুন। ৪. টেন্যান্ট ব্যবহারকারীদের প্রোভিশন করুন। ৫. টেন্যান্ট ফাইল সিস্টেম পাথ কনফিগার করুন। ৬. মাইগ্রেশন ভেরিফিকেশন চালান। ৭. ভেরিফিকেশন পাস করার পরে রাউটিং বা ডিএনএস পরিবর্তন করুন।
এই ক্রমটি ডেটাবেস রাইটার, ইউজার এবং ফাইল সিস্টেম প্রস্তুত হওয়ার আগে আংশিকভাবে বিচ্ছিন্ন টেন্যান্টের ট্র্যাফিক গ্রহণ করা প্রতিরোধ করে।
সার্বভৌম গ্রাহক ব্যবস্থাপনা প্রবাহ
Ultimate Multisite v2.13.0-এ সার্বভৌম মোড চালু থাকলে গ্রাহক পরিচালনার কাজগুলি প্রধান সাইটে রাখা হয়। একটি টেন্যান্ট এখনও একটি বিচ্ছিন্ন ওয়ার্ডপ্রেস ইনস্টলেশন হিসাবে চলতে পারে, তবে নেটওয়ার্ক বিলিং, সদস্যপদ বা শেয়ার্ড অ্যাকাউন্ট ডেটার উপর নির্ভর করে যে গ্রাহক-মুখী কাজগুলি করা প্রয়োজন, সেগুলি টেন্যান্ট রানটাইমের ভিতরে সম্পন্ন করার চেষ্টা না করে গ্রাহককে প্রধান সাইটে ফেরত পাঠাবে।
প্রধান সাইটের প্রবাহের ক্ষেত্রে নিম্নলিখিত বিষয়গুলি প্রযোজ্য:
- চেকআউট এবং পরিকল্পনা পরিবর্তন।
- অ্যাকাউন্ট ওভারভিউ এবং কাস্টমার প্রোফাইল অ্যাকশন।
- বিলিং অ্যাড্রেস আপডেট এবং পেমেন্ট ম্যানেজমেন্ট স্ক্রিন।
- ইনভয়েস এবং পেমেন্ট হিস্ট্রি ভিউ।
- সাইট যোগ করা বা সাইট মুছে ফেলা সহ সাইট ব্যবস্থাপনা অ্যাকশন।
- টেমপ্লেট পরিবর্তন।
- ডোমেইন ম্যাপিং এবং প্রাইমারি-ডোমেইন পরিবর্তন।
যখন কোনো কাস্টমার একটি সার্বভৌম টেন্যান্ট (sovereign tenant) থেকে এই কাজগুলোর মধ্যে যেকোনো একটি শুরু করেন, তখন Ultimate Multisite সেই মূল সাইটের URL তৈরি করে এবং নিরাপদ মনে হলে উৎস টেন্যান্টটিকে রিটার্ন টার্গেট হিসেবে সংরক্ষণ করে। এর ফলে কাস্টমাররা নেটওয়ার্ক রেকর্ডগুলির বিপরীতে পরিচালিত কাজটি সম্পন্ন করতে পারে এবং বিলিং বা মেম্বারশিপ অবস্থার কোনো নকল ছাড়াই টেন্যান্টের প্রেক্ষাপটে ফিরে যেতে পারে।
অপারেটরদের জন্য, বাস্তব নিয়মটি হলো: সার্বভৌম নেটওয়ার্কগুলোর জন্য মূল সাইটে বিলিং, অ্যাকাউন্ট, চেকআউট, ইনভয়েস, টেমপ্লেট এবং ডোমেইন-ম্যানেজমেন্ট পেজগুলো উপলব্ধ রাখতে হবে। টেন্যান্ট ড্যাশবোর্ডগুলো সেই পেজগুলোতে লিঙ্ক করতে পারে, কিন্তু কাজটি করার ক্ষেত্রে মূল সাইটটিই তথ্যের আসল উৎস (source of truth) হিসেবে থাকবে।