আমাদের একটি ইকমার্স অ্যাপ্লিকেশন রয়েছে যা আমরা আমাদের সংস্থায় বিকাশ করি। এটি একটি যুক্তিসঙ্গতভাবে স্ট্যান্ডার্ড এলএএমপি অ্যাপ্লিকেশন যা আমরা প্রায় 3 বছর ধরে চালু এবং বন্ধ করে চলেছি। আমরা পরীক্ষার ডোমেনে অ্যাপ্লিকেশনটি বিকাশ করি, এখানে আমরা নতুন বৈশিষ্ট্য যুক্ত করি এবং বাগগুলি সংশোধন করি etc. বাগগুলি প্রতিবেদন করার সাথে সাথে আমরা টেস্টিং ডোমেনে এই সংশোধন করি এবং তারপরে বাগটি ঠিক হয়ে যাওয়ার পরে আমরা খুশী হয়ে এসএনএন-তে পরিবর্তন করে দেব। আমরা নতুন বৈশিষ্ট্য সংযোজন সঙ্গে এই একই পদ্ধতি অনুসরণ।
এটি সেখানে আমাদের সিস্টেমের সাধারণ আর্কিটেকচার এবং আমাদের সার্ভারগুলিতে প্রয়োগের জন্য উল্লেখযোগ্য। প্রতিবার কোনও নতুন বৈশিষ্ট্য বিকাশ হওয়ার পরে আমরা আমাদের অ্যাপ্লিকেশন (সর্বদা আমরা নিয়ন্ত্রণ করি এমন একটি সার্ভার) ব্যবহার করে সমস্ত সাইটগুলিতে এই আপডেটটি রোল করি। আমাদের সিস্টেম ব্যবহার করে প্রতিটি সাইট মূলত কোডবেসের 95% এর জন্য একই ফাইলগুলি ব্যবহার করে। প্রতিটি সাইটের মধ্যে আমাদের কয়েকটি ফোল্ডার থাকে যা সেই সাইটের কাছে ফাইলগুলি থাকে - CSS ফাইল / চিত্র ইত্যাদি etc. প্রতিটি সাইটের মধ্যে পার্থক্য প্রতিটি সাইটের ডাটাবেসের মধ্যে বিভিন্ন কনফিগারেশন সেটিংস দ্বারা সংজ্ঞায়িত করা হয়।
এটি প্রকৃত স্থাপনার নিজেই চলে যায়। এবং যখন আমরা কোনও ধরণের আপডেট আপডেট করতে প্রস্তুত করি তখন আমরা সার্ভারে একটি কমান্ড চালাই যে পরীক্ষার সাইটটি চালু রয়েছে। এটি একটি অনুলিপি আদেশ (সিপি -ফ্রু / টেস্টসাইট / / অন্যসাইট /) সম্পাদন করে এবং পরিবর্তিত তারিখের ভিত্তিতে ফাইলগুলি আপডেট করার জন্য প্রতিটি ভোস্ট ফোর্সের মধ্য দিয়ে যায়। আমরা যে অতিরিক্ত অতিরিক্ত সার্ভারটি হোস্ট করি তার একটি ভোস্ট থাকে যা আমরা প্রযোজনা কোডবেসে আরএসএনসি করি এবং তারপরে আমরা সেই সার্ভারের সমস্ত সাইটে অনুলিপি পদ্ধতিটি পুনরাবৃত্তি করি। এই প্রক্রিয়া চলাকালীন আমরা যে ফাইলগুলিকে ওভাররাইট করতে চাই না সেগুলি সরিয়ে নিয়ে যাই, অনুলিপিটি শেষ হয়ে গেলে সেগুলি আবার সরিয়ে নিয়ে যায়। আমাদের রোলআউট স্ক্রিপ্টটি বেশ কয়েকটি অন্যান্য ফাংশন সম্পাদন করে যেমন প্রতিটি ডাটাবেস পরিবর্তনের জন্য এসকিউএল কমান্ড প্রয়োগ করা, ক্ষেত্র / নতুন সারণী যুক্ত করা ইত্যাদি per
আমরা ক্রমশ উদ্বিগ্ন হয়ে পড়েছি যে আমাদের প্রক্রিয়া পর্যাপ্ত স্থিতিশীল নয়, দোষ-সহনশীল নয় এবং এটি হিংস্র শক্তি প্রয়োগের পদ্ধতিও bit আমরা এও সচেতন যে আমরা সাবভারশনটির সর্বোত্তম ব্যবহার করছি না কারণ আমাদের এমন একটি অবস্থান রয়েছে যেখানে কোনও নতুন বৈশিষ্ট্য নিয়ে কাজ করা আমাদের একটি গুরুত্বপূর্ণ বাগ ফিক্স আউট করা থেকে বিরত রাখতে পারে কারণ আমরা শাখা বা ট্যাগ ব্যবহার করছি না। এটিও ভুল বলে মনে হচ্ছে যে আমাদের সার্ভারগুলিতে ফাইলগুলির এত বেশি প্রতিলিপি রয়েছে। আমরা সবেমাত্র রোল আউট করেছি তার উপর সহজেই রোলব্যাক করতে সক্ষম হই না। আমরা প্রতিটি রোলআউটের আগে একটি পার্থক্য করি যাতে আমরা ফাইলগুলির একটি তালিকা পেতে পারি যা পরিবর্তিত হবে যাতে আমরা জানি যে পরে কী পরিবর্তন হয়েছে তবে রোলব্যাকে প্রক্রিয়াটি এখনও সমস্যাযুক্ত হবে। ডাটাবেসের ক্ষেত্রে আমি একটি সম্ভাব্য সমাধান হিসাবে dbdeploy সন্ধান শুরু করেছি। আমরা আসলে যা চাই তা হ'ল আমরা কীভাবে আমাদের ফাইল পরিচালনা এবং স্থাপনার উন্নতি করতে পারি সে সম্পর্কে কিছু সাধারণ দিকনির্দেশ is আদর্শভাবে আমরা চাই ফাইল ম্যানেজমেন্টটি আরও বেশি ঘনিষ্ঠভাবে আমাদের সংগ্রহস্থলের সাথে সংযুক্ত হোক যাতে কোনও রোলআউট / রোলব্যাক আরও বেশি সংযুক্ত হয়ে যায় এসএনএন-এর সাথে। সাইটের ফাইলগুলি রেপো ফাইলগুলির মতো কিনা তা নিশ্চিত করতে এক্সপোর্ট কমান্ডটি ব্যবহার করার মতো কিছু। এটিও ভাল হবে যদিও সমাধানটি যদি আমাদের সার্ভারগুলির চারপাশে ফাইলের প্রতিলিপি বন্ধ করে দেয়।
আমাদের বর্তমান পদ্ধতিগুলি উপেক্ষা করে অন্যান্য লোকেরা কীভাবে একই সমস্যার দিকে এগিয়ে যায় তা শুনতে খুব ভাল লাগবে।
সংক্ষেপ ...
- একাধিক সার্ভার জুড়ে ফাইলগুলি তৈরি করার সর্বোত্তম উপায়টি কী কী?
- আমাদের ফাইল প্রতিলিপি কীভাবে প্রতিরোধ করা উচিত? সিমলিঙ্কস / অন্য কিছু?
- কীভাবে আমাদের রেপো গঠন করা উচিত যাতে আমরা নতুন বৈশিষ্ট্যগুলি তৈরি করতে পারি এবং পুরানোগুলি ঠিক করতে পারি?
- আমাদের কীভাবে রোলআউট / রোলব্যাকগুলি ট্রিগার করা উচিত?
আগাম ধন্যবাদ
সম্পাদনা করুন:
এই ধরণের কাজের জন্য Phing এবং Capistrano ব্যবহার করার জন্য আমি সম্প্রতি প্রচুর ভাল জিনিস পড়েছি । যে কেউ তাদের সম্পর্কে আরও কোনও তথ্য দিতে পারে এবং তারা এই ধরণের কাজের জন্য কতটা ভাল হবে?