আমি একটি বিশাল সফ্টওয়্যার প্রকল্পে কাজ করছি যা বিশ্বজুড়ে বিভিন্ন গ্রাহকদের জন্য অত্যন্ত স্বনির্ধারিত। এর অর্থ হ'ল আমাদের কাছে সম্ভবত ৮০% কোড রয়েছে যা বিভিন্ন গ্রাহকদের মধ্যে সাধারণ, তবে প্রচুর কোড যা একটি গ্রাহক থেকে অন্য গ্রাহকে পরিবর্তন করতে হবে। অতীতে আমরা পৃথক সংগ্রহস্থলগুলিতে আমাদের উন্নয়ন করেছি (এসভিএন) এবং যখন একটি নতুন প্রকল্প শুরু হয়েছিল (আমাদের কয়েকটি কম, তবে বৃহত গ্রাহকরা) অতীতের যে কোনও প্রকল্পের জন্য আমাদের প্রয়োজনের জন্য সর্বোত্তম কোড ভিত্তি রয়েছে তার উপর ভিত্তি করে আরেকটি সংগ্রহশালা তৈরি করা হয়েছিল। এটি অতীতে কাজ করেছে, তবে আমরা বেশ কয়েকটি সমস্যার মধ্যে পড়েছিলাম:
- একটি সংগ্রহস্থলে স্থির হওয়া বাগগুলি অন্য সংগ্রহস্থলে প্যাচ করা হয় না। এটি সংস্থার সমস্যা হতে পারে তবে 5 টি পৃথক ভান্ডারে একটি বাগ ঠিক করা এবং প্যাচ করা আমার পক্ষে কঠিন মনে হচ্ছে, এই ভঙ্গিতে যে এই সংগ্রহস্থলটি রক্ষণাবেক্ষণকারী দলটি বিশ্বের অন্য কোনও অঞ্চলে থাকতে পারে এবং আমাদের তাদের পরীক্ষার পরিবেশ নেই , তাদের তফসিল বা তাদের প্রয়োজনীয়তাগুলি কী তা জানেন না (এক দেশে "বাগ" অন্য দেশে "বৈশিষ্ট্য" হতে পারে)।
- একটি প্রকল্পের জন্য করা বৈশিষ্ট্য এবং উন্নতি, যা অন্য প্রকল্পের জন্যও কার্যকর হতে পারে তা হারাতে পারে বা অন্য প্রকল্পে ব্যবহার করা হলে প্রায়শই একটি মাথা বেজ থেকে অন্য কোডে মিশে যাওয়া বড় মাথাব্যথার কারণ হয়ে থাকে (যেহেতু উভয় শাখা সম্ভবত এক বছরের জন্য স্বাধীনভাবে বিকাশ করা হতে পারে) )।
- একটি উন্নয়ন শাখায় করা রিফ্যাক্টরিংস এবং কোড উন্নতিগুলি হ'ল হয় বা যদি শাখাগুলির মধ্যে এই সমস্ত পরিবর্তনগুলি মার্জ করতে হয় তবে ভালের চেয়ে আরও বেশি ক্ষতি করে।
আমরা এখন এই সমস্যাগুলি কীভাবে সমাধান করবেন সে সম্পর্কে আলোচনা করছি এবং এখন পর্যন্ত কীভাবে এটি সমাধান করবেন সে সম্পর্কে নীচের ধারণাগুলি নিয়ে এসেছি:
পৃথক শাখায় বিকাশ রাখুন তবে একটি কেন্দ্রীয় সংগ্রহস্থল রাখার মাধ্যমে আরও ভালভাবে সংগঠিত করুন যেখানে সাধারণ বাগ ফিক্সগুলি একত্রীকরণ করা হয় এবং নিয়মিত (উদাহরণস্বরূপ) ভিত্তিতে সমস্ত প্রকল্পগুলি এই কেন্দ্রীয় সংগ্রহশালা থেকে তাদের নিজস্বগুলিতে পরিবর্তিত হয়। এর জন্য শাখাগুলির মধ্যে মার্জ করার জন্য বিশাল শৃঙ্খলা এবং প্রচুর প্রচেষ্টা প্রয়োজন। সুতরাং আমি বিশ্বাস করি না যে এটি কার্যকর হবে এবং আমরা এই শৃঙ্খলাটি রাখতে পারি, বিশেষত সময় চাপ চাপানোর সময়।
পৃথক উন্নয়ন শাখা ত্যাগ করুন এবং একটি কেন্দ্রীয় কোড সংগ্রহস্থল রয়েছে যেখানে আমাদের সমস্ত কোড বাস করে এবং প্লাগেবল মডিউল এবং কনফিগারেশন বিকল্পগুলি রেখে আমাদের কাস্টমাইজেশন করে। আমরা ইতিমধ্যে আমাদের কোডের নির্ভরতাগুলি সমাধান করতে নির্ভরতা ইনজেকশন ধারক ব্যবহার করছি এবং আমরা আমাদের ইউআই থেকে পরিষ্কারভাবে ব্যবসায়ের যুক্তি যুক্ত করতে আমাদের বেশিরভাগ কোডে এমভিভিএম প্যাটার্ন অনুসরণ করছি।
দ্বিতীয় পদ্ধতিরটি আরও মার্জিত বলে মনে হচ্ছে, তবে আমাদের এই পদ্ধতির মধ্যে অনেকগুলি অমীমাংসিত সমস্যা রয়েছে। উদাহরণস্বরূপ: কীভাবে আপনার মডেল / ডাটাবেসে পরিবর্তন / সংযোজনগুলি পরিচালনা করতে পারে। সুনির্দিষ্টভাবে সত্ত্বা টাইপ করার জন্য আমরা এনটিটি ফ্রেমওয়ার্ক সহ। নেট ব্যবহার করছি। আমি দেখতে পাচ্ছি না যে কীভাবে আমরা আমাদের গ্রাহকের জন্য প্রয়োজনীয় এমন একটি বৈশিষ্ট্য পরিচালনা করতে পারি যা আমাদের গ্রাহকের জন্য প্রয়োজনীয় তবে অন্য উপায়ে গ্রাহকদের জন্য আমাদের ডেটা মডেলটিকে নাড়াচাড়া করা ব্যর্থ। আমরা স্যাটেলাইট টেবিলগুলি ব্যবহার করে এটি ডাটাবেসে সমাধান করার কথা ভাবছি (একটি পৃথক টেবিল রয়েছে যেখানে একটি সুনির্দিষ্ট সত্তার জন্য আমাদের অতিরিক্ত কলামগুলি মূল সত্তায় 1: 1 ম্যাপিং দিয়ে থাকে) তবে এটি কেবল ডাটাবেস। আপনি কোড এ কিভাবে পরিচালনা করবেন? আমাদের ডেটা মডেল একটি কেন্দ্রীয় গ্রন্থাগারে বাস করে যা আমরা এই পদ্ধতির ব্যবহার করে প্রতিটি গ্রাহকের জন্য প্রসারিত করতে সক্ষম হব না।
আমি নিশ্চিত যে আমরা এই সমস্যা নিয়ে লড়াই করা একমাত্র দল নই এবং এই বিষয়টিতে এত কম উপাদান খুঁজে পেয়ে আমি হতবাক।
সুতরাং আমার প্রশ্নগুলি নিম্নলিখিত:
- অত্যন্ত স্বনির্ধারিত সফ্টওয়্যার নিয়ে আপনার কী অভিজ্ঞতা রয়েছে, আপনি কোন পদ্ধতিটি বেছে নিয়েছেন এবং এটি আপনার পক্ষে কীভাবে কাজ করে?
- আপনি কোন পদ্ধতির প্রস্তাব দেন এবং কেন? একটি ভাল পদ্ধতির আছে কি?
- আপনি সুপারিশ করতে পারেন যে বিষয়ের উপর কোন ভাল বই বা নিবন্ধ আছে?
- আমাদের প্রযুক্তিগত পরিবেশের (। নেট, সত্তা ফ্রেমওয়ার্ক, ডাব্লুপিএফ, ডিআই) জন্য আপনার কি নির্দিষ্ট প্রস্তাবনা রয়েছে?
সম্পাদনা:
সমস্ত পরামর্শ জন্য ধন্যবাদ। আমাদের দলে ইতিমধ্যে আমাদের ধারণাগুলির সাথে বেশিরভাগ ধারণাগুলি মেলে তবে তাদের সাথে আপনার অভিজ্ঞতা এবং সেগুলি আরও ভালভাবে বাস্তবায়নের জন্য টিপসগুলি পাওয়া সত্যিই সহায়ক।
আমি এখনও নিশ্চিত নই যে আমরা কোন পথে যাব এবং আমি সিদ্ধান্ত নিচ্ছি না (একা), তবে আমি আমার দলের সাথে এটি পাস করব এবং আমি নিশ্চিত যে এটি সহায়ক হবে।
এই মুহূর্তে টেনারটি বিভিন্ন গ্রাহক নির্দিষ্ট মডিউল ব্যবহার করে একটি একক সংগ্রহস্থল বলে মনে হচ্ছে। আমি নিশ্চিত নই যে আমাদের আর্কিটেকচারটি এখানে রয়েছে বা এটি ফিট করার জন্য আমাদের কতটা বিনিয়োগ করতে হবে, তাই কিছু জিনিস কিছু সময়ের জন্য পৃথক সংগ্রহস্থলে থাকতে পারে তবে আমি মনে করি এটি কেবল দীর্ঘমেয়াদী সমাধান যা কাজ করবে।
সুতরাং, সমস্ত প্রতিক্রিয়া জন্য আবার ধন্যবাদ!