আমরা একটি স্ট্যান্ডার্ড এলএএমপি কনফিগারেশনে একটি সামাজিক ওয়েবসাইট চালাতাম। আমাদের একটি লাইভ সার্ভার, টেস্ট সার্ভার এবং বিকাশ সার্ভার, পাশাপাশি স্থানীয় বিকাশকারী মেশিন ছিল। সমস্ত জিআইটি ব্যবহার করে পরিচালিত হয়েছিল।
প্রতিটি মেশিনে, আমাদের পিএইচপি ফাইল ছিল, তবে মাইএসকিউএল পরিষেবা, এবং চিত্রগুলির একটি ফোল্ডার যা ব্যবহারকারীরা আপলোড করতে পারে। লাইভ সার্ভারে প্রায় ১০০ কে (!) বার বার ব্যবহারকারী এসেছে, ডাম্প ছিল প্রায় 2 জিবি (!), চিত্র ফোল্ডারটি ছিল 50 জিবি (!)। আমি চলে যাওয়ার সময়, আমাদের সার্ভারটি তার সিপিইউ, রাম এবং সর্বোপরি একযোগে নেট সংযোগের সীমাতে পৌঁছেছিল (এমনকি সার্ভারটি 'লোল' সর্বাধিক করার জন্য আমরা নেটওয়ার্ক কার্ড ড্রাইভারের নিজস্ব সংস্করণটি সংকলিত করেছি)। আমরা জিআইটিতে 2GB ডেটা এবং 50 জিবি চিত্র রাখতে পারি না ( বা আপনার ওয়েবসাইটটি ধরে নেওয়া উচিত নয় )।
এই সমস্ত সহজে জিআইটির অধীনে পরিচালনা করার জন্য, আমরা বাইনারি ফোল্ডারগুলিকে (চিত্রগুলিযুক্ত ফোল্ডারগুলি) .gitignore এ এই ফোল্ডারগুলি সন্নিবেশ করে উপেক্ষা করব। অ্যাপাচি ডকুমেন্টরোট পথের বাইরেও আমাদের এসকিউএল নামে একটি ফোল্ডার ছিল। সেই এসকিউএল ফোল্ডারে আমরা বিকাশকারীদের থেকে আমাদের এসকিউএল ফাইলগুলি ইনক্রিমেন্টাল নাম্বারে (001.florianm.sql, 001.johns.sql, 002.florianm.sQL, ইত্যাদি) রেখে দিতাম। এই এসকিউএল ফাইলগুলিও জিআইটি দ্বারা পরিচালিত হয়েছিল। প্রথম স্কয়ার ফাইলটিতে ডিবি স্কিমার একটি বিশাল সেট থাকবে। আমরা জিআইটি-তে ব্যবহারকারী-ডেটা যুক্ত করি না (উদাহরণস্বরূপ ব্যবহারকারী সারণীর রেকর্ড, বা মন্তব্য সারণী), তবে কনফিগারেশন বা টপোলজি বা অন্যান্য সাইটের নির্দিষ্ট ডেটার মতো ডেটা স্কিল ফাইলগুলিতে রক্ষণ করা হয় (এবং তাই জিআইটি দ্বারা)। বেশিরভাগ ক্ষেত্রে এটির বিকাশকারীরা (যারা কোডটি সেরা জানেন) যা এসকিউএল স্কিমা এবং ডেটা সম্পর্কিত জিআইটি দ্বারা কী এবং কোনটি বজায় রাখে না তা নির্ধারণ করে।
এটি যখন প্রকাশিত হয়, প্রশাসকটি ডেভ সার্ভারে লগ ইন করে, ডেভ মেশিনে সমস্ত বিকাশকারী এবং প্রয়োজনীয় শাখাগুলির সাথে একটি আপডেট শাখায় লাইভ ব্রাঞ্চ একীভূত করে এবং এটি পরীক্ষার সার্ভারে ঠেলা দেয়। পরীক্ষার সার্ভারে, তিনি যাচাই করেন যে লাইভ সার্ভারের আপডেট করার প্রক্রিয়াটি এখনও বৈধ কিনা এবং দ্রুত ধারাবাহিকতায়, অ্যাপাচে সমস্ত ট্র্যাফিক একটি স্থানধারক সাইটের দিকে নির্দেশ করে, একটি ডিবি ডাম্প তৈরি করে, 'লাইভ' থেকে 'আপডেট' কার্যকারী ডিরেক্টরিকে নির্দেশ করে ', সমস্ত নতুন এসকিএল ফাইলগুলি মাইএসকিএলে চালিত করে এবং ট্র্যাফিকটিকে সঠিক সাইটে ফিরিয়ে দেয়। যখন সমস্ত স্টেকহোল্ডারগণ পরীক্ষার সার্ভারটি পর্যালোচনা করার পরে সম্মত হন, প্রশাসক টেস্ট সার্ভার থেকে লাইভ সার্ভারে একই কাজ করেছিলেন। এরপরে, তিনি প্রোডাকশন সার্ভারে লাইভ ব্রাঞ্চকে সমস্ত সার্ভার জুড়ে মাস্টার শাখায় একীভূত করে এবং সমস্ত লাইভ ব্রাঞ্চকে রিবাসেড করেন।
পরীক্ষার সার্ভারে সমস্যা থাকলে, যেমন। সংশ্লেষগুলির অনেকগুলি দ্বন্দ্ব ছিল, তারপরে কোডটি উল্টে দেওয়া হয়েছিল (কর্মজীবী শাখাটিকে 'লাইভ'-এ ফিরিয়ে দেখিয়েছে) এবং এসকিএল ফাইলগুলি কখনই কার্যকর হয় নি। যে মুহুর্তে স্ক্যালি ফাইলগুলি কার্যকর করা হয়েছিল, এটি সেই সময়টিকে একটি অবিবর্তনীয় ক্রিয়া হিসাবে বিবেচনা করা হয়েছিল। যদি এসকিউএল ফাইলগুলি সঠিকভাবে কাজ না করে, তবে ডাম্প ব্যবহার করে ডিবি পুনরুদ্ধার করা হয়েছিল (এবং বিকাশকারীরা অসম্পূর্ণ পরীক্ষিত এসকিউএল ফাইল সরবরাহের জন্য বলেছিলেন)।
আজ, আমরা সমতুল্য ফাইলের নাম সহ স্কেল-আপ এবং স্কেল-ডাউন ফোল্ডার উভয়ই বজায় রাখি, যেখানে বিকাশকারীদের পরীক্ষা করতে হবে যে আপগ্রেডিং স্কয়ার ফাইল দুটিই সমানভাবে ডাউনগ্রেড করা যায়। এটি শেষ পর্যন্ত কোনও ব্যাশ স্ক্রিপ্টের মাধ্যমে কার্যকর করা যেতে পারে তবে মানব চোখ যদি আপগ্রেড প্রক্রিয়া পর্যবেক্ষণ করে রাখে তবে এটি একটি ভাল ধারণা।
এটি দুর্দান্ত নয়, তবে এটি পরিচালনাযোগ্য। আশা করি এটি বাস্তব জীবনের, ব্যবহারিক, তুলনামূলকভাবে উচ্চ-প্রাপ্যতা সাইটের একটি অন্তর্দৃষ্টি দেয়। এটি কিছুটা পুরানো হোক, তবে এখনও অনুসরণ করুন followed