পটভূমি
ভবিষ্যতে দল বাড়ানোর সুস্পষ্ট সম্ভাবনা নিয়ে আমি প্রায় 4 প্রোগ্রামার এবং 4 ডিজাইনারের একটি ছোট ওয়েব দলের জন্য একটি নতুন উন্নয়ন প্রক্রিয়া তৈরির জন্য কাজ করছি। আমাদের পণ্যটি এমন একটি কেন্দ্রীয় অ্যাপ্লিকেশন যা ক্লায়েন্ট ওয়েবসাইটগুলিকে ক্ষমতা দেয় যা আমরা এছাড়াও ডিজাইন করে এবং হোস্ট করি।
পূর্বে, আমরা সবাই এফটিপি-র মাধ্যমে একটি সার্ভারে সিঙ্গল ডেটাবেস সহ কাজ করেছিলাম। এটি হবে "কাজ" * কিছুদিনের জন্য, কিন্তু আমরা একটি নতুন দিক এ আসছেন হয়, তাই এটি আমাদের প্রক্রিয়ার পরিপক্ক করার সময়।
আমরা পারকোনা সার্ভার 5.5 ব্যবহার করি তবে ব্যয় কম রাখার ধারণার সাথে এটি ডাটাবেস অজ্ঞাবলিক হওয়া উচিত।
লক্ষ্যসমূহ :
আমি নিম্নলিখিতটি মাথায় রেখে ডাটাবেস বিকাশের জন্য একটি অবিচ্ছিন্ন ইন্টিগ্রেশন (সিআই) প্রক্রিয়া তৈরির দিকে তাকাচ্ছি
- বিকাশকারীদের কাছে ডেভেলপমেন্ট কোড চালানোর জন্য ডেটার স্থানীয় কপি থাকে
- পূর্ববর্তী চেঞ্জসেটে ডাটাবেস কাঠামো রোলব্যাক করতে সক্ষম
- নতুন বৈশিষ্ট্য স্কিমা পরিবর্তন বনাম স্কিমা ডিজাইন ফিক্স পরিবর্তনগুলি পৃথক করতে সক্ষম
- পরীক্ষার জন্য স্থানীয়ভাবে ডাটাবেস কাঠামো পরিবর্তন করতে সক্ষম
প্রাথমিক ধারণা
আমি এসভিএন এবং লিকুইবেস ব্যবহার করে নীচে একটি প্রক্রিয়া স্কেচ করেছি, যদিও এটি সম্পূর্ণরূপে সরিয়ে ফেলে #4
।
- ট্রাঙ্ক থেকে একটি 'উন্নয়ন' শাখা তৈরি করুন
- কেন্দ্রীয় 'উন্নয়ন' ডিবি সার্ভারটি 'উন্নয়ন' শাখাটি বন্ধ করে দেয়
- স্থানীয় বিকাশকারীদের উন্নয়ন শাখার দাস হিসাবে সেট আপ করা হয়েছে (
#1
উপরের সরবরাহগুলি)- তরলবীজ পরিবর্তনগুলি নিয়মিত বিকাশ শাখায় প্রতিশ্রুতিবদ্ধ হয়, যা কেন্দ্রীয় বিকাশের ডেটাবেস আপডেট করার জন্য একটি পোস্ট-কমিট হুক চালায় (যা এই বিকাশের সার্ভারের দাস হিসাবে চালিত স্থানীয় মেশিনগুলিকে চালিত করবে) (তরলবাইজ
#2
উপরে সরবরাহ করে)- যখন বৈশিষ্ট্য বা স্কিমা ফিক্সগুলি কিউএ যেতে প্রস্তুত থাকে, ডিবিএ (আমি) বিকাশ শাখা থেকে যথাযথ পরিবর্তনগুলি ট্রাঙ্কে একীভূত করবে। এই আইনটি একটি মঞ্চের ডেটাবেস সার্ভারে প্রয়োগ করতে একটি স্কয়ার স্ক্রিপ্ট তৈরি করবে।
- স্টেজিং সার্ভারের ট্রাঙ্ক প্রতিবিম্বিত করা উচিত, যার উত্পাদনের মতো একই কাঠামো থাকতে হবে, এবং কিউএতে থাকা পরিবর্তনগুলি
- স্টেজিং সার্ভারে স্কেল স্ক্রিপ্টটি সম্পাদন করার পরে, পরিবর্তনগুলি সম্পর্কে কিছু QA করুন।
- যদি সমস্ত ভাল দেখাচ্ছে, কাঠামোটি ট্যাগ করুন। এটি ডিবিএ দ্বারা ম্যানুয়ালি উত্পাদনে চালিত .sql স্ক্রিপ্ট তৈরি করবে (প্রয়োজনে অফ-পিক আওয়ারের জন্য)
এই প্রক্রিয়াটির জন্য সমস্ত বিকাশকারী একই 'বিকাশ' শাখাটি চালিত করে, অর্থাত যে কোনও সময়ে ডাটাবেস স্কিমার একমাত্র সংস্করণ রয়েছে (আমি নিশ্চিত এটি নিশ্চিত নই)।
এর অর্থ হ'ল স্কিমায় যে কোনও পরিবর্তন স্থানীয়ভাবে পরীক্ষা করা যায় না এবং সঠিকভাবে না করা হলে অন্যান্য বিকাশকারীকে প্রভাবিত করতে পারে। আমাদের পরিবেশে, বিকাশকারীরা নতুন টেবিল যুক্ত করতে পারে তবে খুব কমই বিদ্যমান কাঠামোটি সংশোধন করে। ডিবিএ হিসাবে, ডিজাইন ফিক্সগুলি আমার দ্বারা সম্পন্ন হয়। তবে স্থানীয়ভাবে ফিক্সগুলি পরীক্ষা করতে অক্ষমতা হ'ল প্রক্রিয়াটির আমার বৃহত্তম হ্যাঙ্গআপ।
স্থানীয় উন্নয়নের অনুমতি দেওয়ার জন্য উপরের প্রক্রিয়াটিকে কীভাবে সামঞ্জস্য করা যেতে পারে, তথাপি তথ্যের তুলনামূলকভাবে আপ-টু-ডেট কপি বজায় রাখা (যেমনটি আমার প্রস্তাবিত প্রক্রিয়াটির প্রতিলিপি দ্বারা সরবরাহ করা হয়েছে)? এমনকি শেষ সপ্তাহ পর্যন্ত আমার কাছে ডেটা বর্তমান হওয়ার দরকার নেই।
* 'কাজ' করার অর্থ, এটি যথেষ্ট হয়েছে তবে পিটা ছিল was