অবিচ্ছিন্ন ইন্টিগ্রেশন সেটআপের দর্শন এবং ডিজাইনের জন্য আমার কিছুটা প্রয়োজন of
আমাদের বর্তমান সিআই সেটআপটি বিল্ডবোট ব্যবহার করে। যখন আমি এটির ডিজাইনিং শুরু করলাম, আমি উত্তরাধিকারসূত্রে পেয়েছি (ভাল, কঠোরভাবে নয়, কারণ আমি এর নকশার সাথে এক বছর আগে জড়িত ছিলাম) একটি স্পোক সিআই বিল্ডার, যা পুরো বিল্ডটি একবারে, রাতারাতি চালানোর জন্য তৈরি হয়েছিল। কিছুক্ষণ পরে, আমরা স্থির করেছিলাম যে এটি অপর্যাপ্ত এবং শেষ পর্যন্ত বিল্ডবোটটি বেছে নিয়ে বিভিন্ন সিআই ফ্রেমওয়ার্কগুলি অনুসন্ধান শুরু করে। বিল্ডবোটে স্থানান্তরিত করার ক্ষেত্রে আমার একটি লক্ষ্য (সমস্ত হুইস-ব্যাং অতিরিক্তগুলি উপভোগ করা ছাড়াও) ছিল আমাদের বিসপোক নাইট বিল্ডারের কিছু অপ্রতুলতা overcome
আমাকে এক মুহুর্তের জন্য হাস্যরস করুন এবং আমাকে উত্তরাধিকার সূত্রে আমি কী বলেছি তা ব্যাখ্যা করতে দিন। আমার সংস্থার কোডবেস প্রায় 150 টি ইউনিক সি ++ উইন্ডোজ অ্যাপ্লিকেশন, যার প্রত্যেকটিরই এক বা একাধিক ডজন অভ্যন্তরীণ লাইব্রেরির উপর নির্ভরশীলতা রয়েছে (এবং তৃতীয় পক্ষের লাইব্রেরিতেও অনেকগুলি)। এর মধ্যে কয়েকটি লাইব্রেরি পরস্পর নির্ভরশীল এবং নির্ভরযোগ্য অ্যাপ্লিকেশনগুলি রয়েছে (যদিও তাদের একে অপরের সাথে কোনও সম্পর্ক নেই) সেই লাইব্রেরির একই বিল্ড দিয়ে তৈরি করতে হবে। এর মধ্যে অর্ধেক অ্যাপ্লিকেশন এবং গ্রন্থাগারগুলিকে "উত্তরাধিকার" এবং অপ্রাপ্তযোগ্য হিসাবে বিবেচনা করা হয়, এবং অবশ্যই আইবিএম সংকলক (যার জন্য আমি অনন্য সাবক্লাস লিখেছি Compile
) এর কয়েকটি স্বতন্ত্র কনফিগারেশন দিয়ে নির্মিত হতে হবে , এবং অন্যান্য অর্ধেক ভিজ্যুয়াল স্টুডিওতে নির্মিত হয়েছে builtShellCommand
গুলি, যেমন ভিএসএসের কোনও সমর্থন নেই)।
আমাদের আসল রাত্রি নির্মাতা প্রতিটি কিছুর জন্য উত্সটি কেবল সরিয়ে নিয়েছিলেন এবং একটি নির্দিষ্ট ক্রমে স্টাফ তৈরি করেছেন। কেবলমাত্র একটি একক অ্যাপ্লিকেশন তৈরি করার, বা একটি সংশোধন বাছাই করার বা কোনও জিনিসকে গ্রুপ করার কোনও উপায় ছিল না। এটি বেশ কয়েকটি অ্যাপ্লিকেশন তৈরি করতে ভার্চুয়াল মেশিনগুলি চালু করবে। এটি খুব শক্ত ছিল না, এটি বিতরণযোগ্য ছিল না। এটি মারাত্মকভাবে এক্সটেনসিবল ছিল না। আমি বিল্ডবোটে এই সমস্ত সীমাবদ্ধতা অতিক্রম করতে সক্ষম হতে চাই।
আমি যেভাবে প্রাথমিকভাবে এটি করেছি তা হ'ল আমরা যে অ্যাপ্লিকেশনগুলি তৈরি করতে চেয়েছিলাম তাদের প্রত্যেকের জন্য এন্ট্রি তৈরি করা (সেগুলির মধ্যে প্রায় 150 জন), তারপরে ট্রিগারযুক্ত শিডিয়ুলার তৈরি করা যেগুলি বিভিন্ন অ্যাপ্লিকেশনগুলিকে গ্রুপ হিসাবে তৈরি করতে পারে এবং তারপরে সামগ্রিক রাতের বিল্ড শিডিয়ুলারের অধীনে সেই গোষ্ঠীগুলিকে গ্রাহক করে। এগুলি উত্সর্গীকৃত দাসগুলিতে চালিত হতে পারে (আর কোনও ভার্চুয়াল মেশিন চিকানারি নেই) এবং আমি চাইলে আমি কেবল নতুন দাস যুক্ত করতে পারি। এখন, যদি আমরা শিডিয়ুলের বাইরে একটি সম্পূর্ণ বিল্ডিং করতে চাই, তবে এটির একটি ক্লিক করুন, তবে আমাদের ইচ্ছা মতো আমরা কেবল একটি অ্যাপ্লিকেশনও তৈরি করতে পারি।
তবে এই পদ্ধতির চারটি দুর্বলতা রয়েছে। একটি হ'ল আমাদের উত্স গাছের নির্ভরতাগুলির জটিল ওয়েব। কনফিগারেশন মেনটেনেস সহজ করার জন্য, সমস্ত বিল্ডার একটি বড় অভিধান থেকে উত্পন্ন হয়। নির্ভরতাগুলি পুনরুদ্ধার করা হয় এবং একটি ভয়াবহ শক্তিশালী ফ্যাশনে নির্মিত হয় (যথা, আমার বিল্ড-টার্গেট ডিকশনারিতে কিছু জিনিসকে সরিয়ে রেখে)। দ্বিতীয়টি হ'ল প্রতিটি বিল্ডের 15 থেকে 21 টির মধ্যে বিল্ড স্টেপ রয়েছে, যা ব্রাউজ করা এবং ওয়েব ইন্টারফেসে দেখা শক্ত, এবং যেহেতু প্রায় 150 টি কলাম রয়েছে, লোড হতে চিরকাল লাগে (30 সেকেন্ড থেকে একাধিক মিনিট পর্যন্ত ভাবেন)। তৃতীয়ত, আমাদের আর নির্মাণের লক্ষ্যমাত্রার অটোডিস্কোভারি নেই (যদিও, আমার এক সহকর্মী এই সম্পর্কে যতটা আমাকে বর্ষণ করেছেন, আমি এটি দেখতে পাচ্ছি না যে এটি আমাদের প্রথম স্থানে কী পেয়েছিল)। অবশেষে,
এখন, নতুন বিকাশে চলে আসছি, আমরা জি ++ এবং সাবভারশন ব্যবহার করতে শুরু করছি (পুরানো সংগ্রহশালাটি পোর্টিং নয়, মনে রাখবেন - কেবলমাত্র নতুন স্টাফের জন্য)। এছাড়াও, আমরা আরো ইউনিট পরীক্ষা করার শুরু করেছে ( "আরো" ভুল ছবি দিতে পারে ... এটা আরো মত কোন ), এবং ইন্টিগ্রেশন (পাইথন ব্যবহার করে) পরীক্ষার। কীভাবে এগুলিকে আমার বিদ্যমান কনফিগারেশনে ফিট করতে হয় তা নির্ধারণ করতে আমার বেশ কষ্ট হচ্ছে।
সুতরাং, আমি এখানে দার্শনিকভাবে কোথায় ভুল হয়ে গেছি? আমি কীভাবে সর্বোত্তমভাবে এগিয়ে যেতে পারি (বিল্ডবোট সহ - এটি ধাঁধার একমাত্র টুকরো যাতে আমার কাজ করার লাইসেন্স আছে) যাতে আমার কনফিগারেশনটি আসলে রক্ষণাবেক্ষণযোগ্য হয়? আমি কীভাবে আমার ডিজাইনের কিছু দুর্বলতা সমাধান করব? বড়, (সম্ভবত অতিরিক্ত) জটিল কোডবাসের জন্য সিআই কৌশলগুলির ক্ষেত্রে আসলে কী কাজ করে?
সম্পাদনা করুন:
আমি ভেবেছিলাম আমি আমার সমস্যাটি ব্যাখ্যা করেছি তবে স্পষ্টতই আমি যথেষ্ট পরিষ্কার ছিলাম না। আমি সিআই প্ল্যাটফর্মগুলি পরিবর্তনের জন্য পরামর্শগুলি খুঁজছি না । এটি হবে না , এবং উত্তরগুলি মেনে নেবে না এমন পরামর্শ দিচ্ছে। আমি যা জানতে চাই তা হল অন্যান্য লোকেরা কীভাবে সিআই ব্যবহার করে জটিল কোডবেস পরিচালনা করে। আমার কাছে এক ডজন স্কোয়ার বিভিন্ন পণ্য রয়েছে এবং আমার নির্ভরতা বাতাসে ছড়িয়ে ছিটিয়ে আছে এবং সেগুলি সমস্ত আলাদা। এটিই আমি কীভাবে মোকাবিলা করতে চাই তা জানতে চাই।