জিরো ডাউনটাইম ডিপ্লোয়মেন্ট অর্জন একই সমস্যাটি স্পর্শ করেছে তবে আমি যে কৌশলটি বিবেচনা করছি তাতে আমার কিছু পরামর্শের প্রয়োজন।
প্রসঙ্গ
সার্ভার-সাইড প্রসেসিংয়ের জন্য অ্যাপাচি / পিএইচপি এবং অধ্যবসায়ের জন্য মাইএসকিউএল ডিবি / ফাইল সিস্টেমের সাথে একটি ওয়েব-ভিত্তিক অ্যাপ্লিকেশন।
আমরা বর্তমানে অবকাঠামো নির্মাণ করছি। সমস্ত নেটওয়ার্কিং হার্ডওয়ারের রিডানডেন্সি থাকবে এবং দোষ-সহনশীলতার জন্য সমস্ত প্রধান নেটওয়ার্ক কেবলগুলি বন্ডেড জোড়গুলিতে ব্যবহৃত হবে। সার্ভারগুলিকে হার্ডওয়্যার ত্রুটি-সহনশীলতার জন্য উচ্চ-প্রাপ্যতা জোড়া হিসাবে কনফিগার করা হচ্ছে এবং ভার্চুয়াল-মেশিন ত্রুটি-সহনশীলতা এবং সাধারণ কর্মক্ষমতা উভয়ের জন্যই ভারসাম্যপূর্ণ হবে।
এটি আমার উদ্দেশ্য যে আমরা কোনও ডাউন-টাইম ছাড়াই অ্যাপ্লিকেশনটিতে আপডেটগুলি প্রয়োগ করতে সক্ষম। আমি 100% আপ-টাইম সরবরাহ করতে পারি তা নিশ্চিত করার জন্য অবকাঠামোগত নকশা করার সময় আমি প্রচণ্ড ব্যথা পেয়েছি; এটি ততবার হতাশ হবে যে প্রতিবার আপডেট প্রয়োগের সময় 10-15 মিনিট ডাউনটাইম থাকবে। এটি খুব তাড়াতাড়ি তাত্পর্যপূর্ণ কারণ আমরা খুব দ্রুত প্রকাশের চক্র রাখার ইচ্ছা করি (কখনও কখনও এটি প্রতিদিন এক বা একাধিক প্রকাশে পৌঁছতে পারে)।
নেটওয়ার্ক টপোলজি
এটি নেটওয়ার্কের সংক্ষিপ্তসার:
Load Balancer
|----------------------------|
/ / \ \
/ / \ \
| Web Server | DB Server | Web Server | DB Server |
|-------------------------|-------------------------|
| Host-1 | Host-2 | Host-1 | Host-2 |
|-------------------------|-------------------------|
Node A \ / Node B
| / |
| / \ |
|---------------------| |---------------------|
Switch 1 Switch 2
And onward to VRRP enabled routers and the internet
দ্রষ্টব্য: ডিবি সার্ভারগুলি মাস্টার-মাস্টার প্রতিলিপি ব্যবহার করে
প্রস্তাবিত কৌশল
এটি অর্জনের জন্য, আমি বর্তমানে ডিবি স্কিমা আপগ্রেড স্ক্রিপ্টগুলি দুটি ভাগে ভাঙ্গার কথা ভাবছি। আপগ্রেডটি দেখতে এটির মতো হবে:
- নোড এ ওয়েব-সার্ভারটি অফ-লাইন নেওয়া হয়েছে; নোড বি-তে ওয়েব-সার্ভার দ্বারা ট্রাফিক প্রক্রিয়াজাতকরণ অব্যাহত রয়েছে B.
- ট্রানজিশনাল স্কিমা পরিবর্তনগুলি ডিবি সার্ভারগুলিতে প্রয়োগ করা হয়
- ওয়েব-সার্ভার একটি কোড-বেস আপডেট হয়েছে, ক্যাশে সাফ হয়ে গেছে এবং অন্য কোনও আপগ্রেড পদক্ষেপ নেওয়া হয়েছে।
- ওয়েব-সার্ভার এ অনলাইনে আনা হয় এবং ওয়েব-সার্ভার বি অফলাইনে নেওয়া হয়।
- ওয়েব-সার্ভার বি কোড-বেস আপডেট হয়েছে, ক্যাশে সাফ করা হয়েছে এবং অন্য কোনও আপগ্রেড পদক্ষেপ নেওয়া হয়েছে।
- ওয়েব সার্ভার বি অনলাইন আনা হয়।
- চূড়ান্ত স্কিমা পরিবর্তনগুলি ডিবিতে প্রয়োগ করা হয়
'ট্রানজিশনাল স্কিমা' ক্রস সংস্করণে সামঞ্জস্যপূর্ণ ডিবি তৈরির জন্য ডিজাইন করা হবে। এটি বেশিরভাগ টেবিলের মতামত ব্যবহার করবে যা পুরানো সংস্করণ স্কিমা অনুকরণ করে টেবিলটি নিজেই নতুন স্কিমাতে পরিবর্তিত হবে। এটি পুরানো সংস্করণটিকে ডিবি হিসাবে স্বাভাবিক হিসাবে ইন্টারঅ্যাক্ট করতে দেয়। টেবিলের নামগুলিতে স্কিমা সংস্করণ নম্বর অন্তর্ভুক্ত থাকবে তা নিশ্চিত করার জন্য কোন টেবিলটি লিখতে হবে তাতে কোনও বিভ্রান্তি সৃষ্টি হবে না।
'ফাইনাল স্কিমা' পিছনের সামঞ্জস্যতা সরিয়ে স্কিমাকে পরিপাটি করে।
প্রশ্ন
সংক্ষেপে, এই কাজ করবে?
আরো নির্দিষ্টভাবে:
ট্রানজিশনাল স্কিমা পরিবর্তনের নির্দিষ্ট পয়েন্টে সমবর্তী লেখার সম্ভাবনার কারণে কি সমস্যা হবে? টেবিলটি সংশোধন করে এবং পিছনের দিকে সামঞ্জস্যপূর্ণ দৃষ্টিভঙ্গি তৈরি করা প্রশ্নের গোষ্ঠীটি ধারাবাহিকভাবে কার্যকর করা হয়েছে কি না তা নিশ্চিত করার কোনও উপায় আছে? অর্থাত্ স্কিমা পরিবর্তনগুলি সম্পূর্ণ না হওয়া পর্যন্ত বাফারে রাখা অন্য কোনও প্রশ্নের সাথে, যা সাধারণত মিলি সেকেন্ড হবে।
এমন কি সহজ পদ্ধতি আছে যা এই ডিগ্রি স্থিতিশীলতা সরবরাহ করে যখন ডাউন-টাইম ছাড়াই আপডেটগুলিও অনুমতি দেয়? আমি 'বিবর্তনীয়' স্কিমা কৌশল এড়াতেও পছন্দ করি কারণ আমি পিছনে স্কিমা সামঞ্জস্যের মধ্যে আবদ্ধ হতে চাই না।