ওয়ার্ডপ্রেস

মনোরেপো বনাম মাল্টি-রেপো: কোড রিপোজিটরি কৌশলের সুবিধা এবং অসুবিধা

গিট-এর মাধ্যমে কোড হোস্টিং এবং পরিচালনার জন্য দুটি প্রধান কৌশল রয়েছে: মনোরেপো বনাম মাল্টি-রেপো। উভয় পদ্ধতির তাদের সুবিধা এবং অসুবিধা আছে।

আমরা যেকোনো ভাষায় যেকোনো কোডবেসের জন্য উভয় পদ্ধতি ব্যবহার করতে পারি। কয়েক হাজার লাইব্রেরি আছে এমন প্রকল্পের জন্য আপনি এই কৌশলগুলির যেকোনো একটি ব্যবহার করতে পারেন। এমনকি যদি এতে কয়েকজন দলের সদস্য বা শত শত জড়িত থাকে, অথবা আপনি ব্যক্তিগত বা ওপেন-সোর্স কোড হোস্ট করতে চান, তবুও আপনি বিভিন্ন কারণের উপর ভিত্তি করে মনোরেপো বা মাল্টি-রেপোর সাথে যেতে পারেন।

প্রতিটি পদ্ধতির সুবিধা এবং অসুবিধাগুলি কী কী? যখন আমরা এক বা অন্য ব্যবহার করা উচিত? খুঁজে বের কর!

Repos কি?

একটি রেপো (ভান্ডারের জন্য সংক্ষিপ্ত) হল একটি প্রকল্পের সমস্ত পরিবর্তন এবং ফাইলগুলির জন্য একটি সঞ্চয়স্থান, যা ডেভেলপারদের তার বিকাশের পর্যায়ে প্রকল্পের সম্পদগুলিকে "সংস্করণ নিয়ন্ত্রণ" করতে সক্ষম করে।

আমরা সাধারণত গিট রিপোজিটরিগুলিকে উল্লেখ করি (যেমন গিটহাব, গিটল্যাব বা বিটবাকেট দ্বারা সরবরাহ করা হয়েছে), তবে ধারণাটি অন্যান্য সংস্করণ নিয়ন্ত্রণ ব্যবস্থার ক্ষেত্রেও প্রযোজ্য (যেমন মার্কুরিয়াল)।

গিট এর মাধ্যমে আমাদের কোডবেস হোস্টিং এবং পরিচালনার জন্য দুটি প্রধান কৌশল রয়েছে: মনোরেপো পদ্ধতি এবং মাল্টি রেপো পদ্ধতি। 🚀 এই নির্দেশিকায় প্রতিটি অন্বেষণ করুন ⬇️টুইট করতে ক্লিক করুন

মনোরেপো কি?

মনোরেপো পদ্ধতিটি একটি কোম্পানির প্রকল্পগুলি রচনা করে একাধিক লাইব্রেরি বা পরিষেবাগুলির জন্য সমস্ত কোড হোস্ট করতে একটি একক সংগ্রহস্থল ব্যবহার করে। এর চরম পর্যায়ে, একটি কোম্পানির পুরো কোডবেস - বিভিন্ন প্রকল্পে বিস্তৃত এবং বিভিন্ন ভাষায় কোডেড - একটি একক সংগ্রহস্থলে হোস্ট করা হয়।

মনোরেপোর সুবিধা

একটি একক সংগ্রহস্থলে পুরো কোডবেস হোস্ট করা নিম্নলিখিত সুবিধা প্রদান করে।

প্রবেশের বাধা কমায়

যখন নতুন স্টাফ সদস্যরা একটি কোম্পানির জন্য কাজ শুরু করে, তখন তাদের কোডটি ডাউনলোড করতে হবে এবং তাদের কাজগুলিতে কাজ শুরু করার জন্য প্রয়োজনীয় সরঞ্জামগুলি ইনস্টল করতে হবে। ধরুন প্রজেক্টটি অনেক রিপোজিটরি জুড়ে ছড়িয়ে ছিটিয়ে আছে, প্রতিটিতে এর ইনস্টলেশন নির্দেশাবলী এবং টুলিং প্রয়োজন। সেই ক্ষেত্রে, প্রাথমিক সেটআপ জটিল হবে, এবং প্রায়শই, ডকুমেন্টেশন সম্পূর্ণ হবে না, এই নতুন দলের সদস্যদের সাহায্যের জন্য সহকর্মীদের কাছে পৌঁছাতে হবে।

একটি মনোরেপো বিষয়গুলিকে সরল করে। যেহেতু সমস্ত কোড এবং ডকুমেন্টেশন সমন্বিত একটি একক অবস্থান রয়েছে, আপনি প্রাথমিক সেটআপটিকে স্ট্রীমলাইন করতে পারেন।

কেন্দ্রীয়ভাবে অবস্থিত কোড ব্যবস্থাপনা

একটি একক সংগ্রহস্থল থাকা সমস্ত বিকাশকারীদের সমস্ত কোডের দৃশ্যমানতা দেয়। এটি কোড ম্যানেজমেন্টকে সহজ করে কারণ আমরা অ্যাপ্লিকেশনের জীবনচক্র জুড়ে সমস্ত সমস্যা দেখতে একটি একক ইস্যু ট্র্যাকার ব্যবহার করতে পারি।

উদাহরণস্বরূপ, এই বৈশিষ্ট্যগুলি মূল্যবান যখন একটি সমস্যা দুটি (বা ততোধিক) চাইল্ড লাইব্রেরিকে বিস্তৃত করে যেখানে নির্ভরশীল লাইব্রেরিতে বিদ্যমান বাগ রয়েছে। একাধিক সংগ্রহস্থলের সাথে, যেখানে সমস্যাটি ঘটে সেখানে কোডের অংশ খুঁজে পাওয়া চ্যালেঞ্জিং হতে পারে।

এর উপরে, সমস্যাটি তৈরি করতে কোন রিপোজিটরি ব্যবহার করতে হবে তা আমাদের বের করতে হবে এবং তারপর সমস্যা সমাধানে সাহায্য করার জন্য অন্যান্য দলের সদস্যদের আমন্ত্রণ ও ক্রস-ট্যাগ করতে হবে।

একটি মনোরেপোর সাথে, যদিও, কোডের সমস্যাগুলি সনাক্ত করা এবং সমস্যা সমাধানের জন্য সহযোগিতা উভয়ই অর্জন করা সহজ হয়ে ওঠে।

ব্যথাহীন অ্যাপ্লিকেশন-ওয়াইড রিফ্যাক্টরিং

কোডের একটি অ্যাপ্লিকেশন-ব্যাপী রিফ্যাক্টরিং তৈরি করার সময়, একাধিক লাইব্রেরি প্রভাবিত হবে। আপনি যদি একাধিক রিপোজিটরির মাধ্যমে সেগুলি হোস্ট করে থাকেন, তবে একে অপরের সাথে সিঙ্ক্রোনাইজ রাখার জন্য সমস্ত আলাদা পুল অনুরোধগুলি পরিচালনা করা একটি চ্যালেঞ্জ হিসাবে প্রমাণিত হতে পারে।

একটি মনোরেপো সমস্ত লাইব্রেরির জন্য সমস্ত কোডে সমস্ত পরিবর্তন করা এবং এটি একটি একক পুল অনুরোধের অধীনে জমা দেওয়া সহজ করে তোলে।

সংলগ্ন কার্যকারিতা ভাঙ্গা আরও কঠিন

মনোরেপোর সাথে, যখনই কোনো একক লাইব্রেরি পরিবর্তন করা হয় তখনই আমরা সমস্ত লাইব্রেরি চালানোর জন্য সমস্ত পরীক্ষা সেট আপ করতে পারি। ফলস্বরূপ, কিছু লাইব্রেরিতে পরিবর্তন করার সম্ভাবনা অন্যান্য গ্রন্থাগারের উপর বিরূপ প্রভাব কমিয়ে দিয়েছে।

দল উন্নয়ন সংস্কৃতি শেয়ার করে

অসম্ভব না হলেও, মনোরেপো পদ্ধতির সাথে, বিভিন্ন দলের মধ্যে অনন্য উপসংস্কৃতিকে অনুপ্রাণিত করা চ্যালেঞ্জিং হয়ে ওঠে। যেহেতু তারা একই সংগ্রহস্থল ভাগ করবে, তারা সম্ভবত একই প্রোগ্রামিং এবং পরিচালনা পদ্ধতিগুলি ভাগ করবে এবং একই বিকাশের সরঞ্জামগুলি ব্যবহার করবে।

মনোরেপো পদ্ধতির সাথে সমস্যা

আমাদের সমস্ত কোডের জন্য একটি একক সংগ্রহস্থল ব্যবহার করার বিভিন্ন ত্রুটি রয়েছে।

ধীর উন্নয়ন চক্র

যখন একটি লাইব্রেরির কোডে ব্রেকিং পরিবর্তন থাকে, যা নির্ভরশীল লাইব্রেরির পরীক্ষাগুলিকে ব্যর্থ করে দেয়, তখন পরিবর্তনগুলি মার্জ করার আগে কোডটিও ঠিক করা আবশ্যক৷

যদি এই লাইব্রেরিগুলি অন্যান্য দলের উপর নির্ভর করে, যারা অন্য কোনও কাজে ব্যস্ত থাকে এবং ব্রেকিং পরিবর্তনগুলি এড়াতে এবং পরীক্ষায় উত্তীর্ণ হওয়ার জন্য তাদের কোড মানিয়ে নিতে সক্ষম (বা ইচ্ছুক) না হয়, নতুন বৈশিষ্ট্যের বিকাশ স্থবির হতে পারে।

আরও কি, প্রকল্পটি শুধুমাত্র কোম্পানির সবচেয়ে ধীর দলের গতিতে অগ্রসর হতে পারে। এই ফলাফল দ্রুততম দলের সদস্যদের হতাশ করতে পারে, তাদের জন্য কোম্পানি ছেড়ে যেতে চায় এমন শর্ত তৈরি করতে পারে।

উপরন্তু, একটি লাইব্রেরি অন্য সব লাইব্রেরির জন্যও পরীক্ষা চালাতে হবে। যত বেশি পরীক্ষা চালাতে হবে, সেগুলি চালানোর জন্য তত বেশি সময় লাগে, আমরা আমাদের কোডে কত দ্রুত পুনরাবৃত্তি করতে পারি তা ধীর করে দেয়।

সম্পূর্ণ কোডবেস ডাউনলোডের প্রয়োজন

যখন মনোরেপো একটি কোম্পানির জন্য সমস্ত কোড ধারণ করে, তখন এটি বিশাল হতে পারে, এতে গিগাবাইট ডেটা থাকতে পারে। এর মধ্যে হোস্ট করা যেকোন লাইব্রেরিতে অবদান রাখতে, যেকোনও ব্যক্তির পুরো সংগ্রহস্থলের ডাউনলোড প্রয়োজন হবে।

একটি বিশাল কোডবেসের সাথে ডিল করা আমাদের হার্ড ড্রাইভে স্থানের দুর্বল ব্যবহার এবং এর সাথে ধীর মিথস্ক্রিয়া বোঝায়। উদাহরণস্বরূপ, দৈনন্দিন কাজ যেমন নির্বাহ করা git status অথবা কোডবেসে regex-এর সাহায্যে অনুসন্ধান করতে অনেক সেকেন্ড বা এমনকি মিনিটও বেশি সময় লাগতে পারে যতটা তারা একাধিক রেপোর সাথে করবে।

অপরিবর্তিত গ্রন্থাগারগুলি নতুন সংস্করণ হতে পারে

যখন আমরা মনোরেপো ট্যাগ করি, তখন সমস্ত কোডের মধ্যে নতুন ট্যাগ বরাদ্দ করা হয়। যদি এই ক্রিয়াটি একটি নতুন রিলিজকে ট্রিগার করে, তাহলে রিপোজিটরিতে হোস্ট করা সমস্ত লাইব্রেরি ট্যাগ থেকে সংস্করণ নম্বর সহ নতুনভাবে প্রকাশ করা হবে, যদিও সেই লাইব্রেরির অনেকেরই কোনো পরিবর্তন নাও হতে পারে।

কাঁটা কাটা আরও কঠিন

ওপেন সোর্স প্রকল্পগুলি অবশ্যই অবদানকারীদের জড়িত হওয়া যতটা সম্ভব সহজ করে তুলতে হবে। একাধিক সংগ্রহস্থলের সাহায্যে, অবদানকারীরা যে প্রকল্পে অবদান রাখতে চান তার জন্য সরাসরি নির্দিষ্ট সংগ্রহস্থলে যেতে পারেন। একটি মনোরেপো বিভিন্ন প্রকল্প হোস্ট করে, যদিও, অবদানকারীদের প্রথমে সঠিক প্রকল্পে তাদের পথ নেভিগেট করতে হবে এবং তাদের অবদান অন্যান্য সমস্ত প্রকল্পকে কীভাবে প্রভাবিত করতে পারে তা বুঝতে হবে।

মাল্টি-রেপো কি?

মাল্টি-রেপো পদ্ধতিটি একটি কোম্পানির দ্বারা তৈরি করা একটি প্রকল্পের একাধিক লাইব্রেরি বা পরিষেবাগুলি হোস্ট করতে বিভিন্ন সংগ্রহস্থল ব্যবহার করে। এর চরম পর্যায়ে, এটি পুনঃব্যবহারযোগ্য কোডের প্রতিটি ন্যূনতম সেট বা স্বতন্ত্র কার্যকারিতা (যেমন একটি মাইক্রোসার্ভিস) এর সংগ্রহস্থলের অধীনে হোস্ট করবে।

মাল্টি-রেপোর সুবিধা

অন্য সকলের থেকে স্বাধীনভাবে প্রতিটি লাইব্রেরি হোস্ট করা অনেক সুবিধা প্রদান করে।

স্বাধীন লাইব্রেরি সংস্করণ

একটি সংগ্রহস্থল ট্যাগ করার সময়, এর পুরো কোডবেসকে "নতুন" ট্যাগ বরাদ্দ করা হয়। যেহেতু শুধুমাত্র একটি নির্দিষ্ট লাইব্রেরির কোড রিপোজিটরিতে থাকে, তাই লাইব্রেরিটিকে অন্য কোথাও হোস্ট করা অন্য সব লাইব্রেরির থেকে স্বাধীনভাবে ট্যাগ এবং সংস্করণ করা যেতে পারে।

প্রতিটি লাইব্রেরির জন্য একটি স্বাধীন সংস্করণ থাকা অ্যাপ্লিকেশনটির জন্য নির্ভরশীলতা ট্রিকে সংজ্ঞায়িত করতে সাহায্য করে, যা আমাদের প্রতিটি লাইব্রেরির কোন সংস্করণ ব্যবহার করতে হবে তা কনফিগার করতে দেয়।

স্বাধীন পরিষেবা রিলিজ

যেহেতু রিপোজিটরিতে শুধুমাত্র কিছু পরিষেবার কোড থাকে এবং অন্য কিছু নেই, তাই এটির নিজস্ব স্থাপনার চক্র থাকতে পারে, এটি অ্যাক্সেস করার অ্যাপ্লিকেশনগুলিতে করা কোনো অগ্রগতি থেকে স্বাধীনভাবে।

পরিষেবাটি একটি দ্রুত রিলিজ চক্র ব্যবহার করতে পারে যেমন ক্রমাগত বিতরণ (যেখানে নতুন কোডটি সমস্ত পরীক্ষায় উত্তীর্ণ হওয়ার পরে স্থাপন করা হয়)। পরিষেবাটি অ্যাক্সেস করা কিছু লাইব্রেরি একটি ধীর রিলিজ চক্র ব্যবহার করতে পারে, যেমন যেগুলি সপ্তাহে একবার একটি নতুন প্রকাশ তৈরি করে।

সংস্থা জুড়ে অ্যাক্সেস নিয়ন্ত্রণ সংজ্ঞায়িত করতে সাহায্য করে

শুধুমাত্র একটি লাইব্রেরি তৈরির সাথে জড়িত দলের সদস্যদের সংশ্লিষ্ট সংগ্রহস্থলে যোগ করতে হবে এবং এর কোড ডাউনলোড করতে হবে। ফলস্বরূপ, অ্যাপ্লিকেশনের প্রতিটি স্তরের জন্য একটি অন্তর্নিহিত অ্যাক্সেস নিয়ন্ত্রণ কৌশল রয়েছে। যারা লাইব্রেরির সাথে জড়িত তাদের সম্পাদনার অধিকার দেওয়া হবে, এবং অন্য সবাই সংগ্রহস্থলে অ্যাক্সেস পেতে পারে না। অথবা তাদের পড়ার অধিকার দেওয়া হতে পারে কিন্তু সম্পাদনা করার অধিকার নয়।

দলগুলিকে স্বায়ত্তশাসিতভাবে কাজ করার অনুমতি দেয়

দলের সদস্যরা লাইব্রেরির আর্কিটেকচার ডিজাইন করতে পারে এবং অন্য সব দল থেকে বিচ্ছিন্নভাবে কাজ করার কোডটি বাস্তবায়ন করতে পারে। তারা কিছু বহিরাগত দল বা অ্যাপ্লিকেশনের নির্দিষ্ট প্রয়োজনীয়তা দ্বারা প্রভাবিত না হয়ে সাধারণ প্রেক্ষাপটে লাইব্রেরি কী করে তার উপর ভিত্তি করে সিদ্ধান্ত নিতে পারে।

মাল্টি-রেপো পদ্ধতির সমস্যা

একাধিক সংগ্রহস্থল ব্যবহার করা বিভিন্ন সমস্যার জন্ম দিতে পারে।

লাইব্রেরিগুলোকে ক্রমাগত রিসিঙ্ক করতে হবে

যখন ব্রেকিং পরিবর্তন সম্বলিত একটি লাইব্রেরির একটি নতুন সংস্করণ প্রকাশিত হয়, তখন এই লাইব্রেরির উপর নির্ভর করে লাইব্রেরিগুলিকে সর্বশেষ সংস্করণ ব্যবহার শুরু করার জন্য অভিযোজিত করতে হবে। যদি লাইব্রেরির রিলিজ চক্র তার নির্ভরশীল লাইব্রেরির তুলনায় দ্রুত হয়, তবে তারা দ্রুত একে অপরের সাথে সিঙ্কের বাইরে চলে যেতে পারে।

অন্যান্য দলের সর্বশেষ রিলিজগুলি ব্যবহার করার জন্য দলগুলিকে ক্রমাগত ধরতে হবে। প্রদত্ত যে বিভিন্ন দলের বিভিন্ন অগ্রাধিকার রয়েছে, এটি কখনও কখনও অর্জন করা কঠিন প্রমাণিত হতে পারে।

ফলস্বরূপ, একটি দল যা ধরতে পারে না তারা নির্ভরশীল লাইব্রেরির পুরানো সংস্করণে আটকে যেতে পারে। এই ফলাফলটি প্রয়োগের উপর প্রভাব ফেলবে (নিরাপত্তা, গতি এবং অন্যান্য বিবেচনার পরিপ্রেক্ষিতে), এবং লাইব্রেরি জুড়ে বিকাশের ব্যবধান আরও বিস্তৃত হতে পারে।

মে টুকরো দল

যখন বিভিন্ন দলকে যোগাযোগ করার প্রয়োজন হয় না, তখন তারা তাদের নিজস্ব সাইলোতে কাজ করতে পারে। দীর্ঘমেয়াদে, এর ফলে দলগুলি কোম্পানির মধ্যে তাদের উপসংস্কৃতি তৈরি করতে পারে, যেমন প্রোগ্রামিং বা ব্যবস্থাপনার বিভিন্ন পদ্ধতি ব্যবহার করা বা বিভিন্ন সেট ডেভেলপমেন্ট টুল ব্যবহার করা।

যদি কিছু দলের সদস্যদের শেষ পর্যন্ত একটি ভিন্ন দলে কাজ করার প্রয়োজন হয়, তাহলে তারা কিছুটা সাংস্কৃতিক শক ভোগ করতে পারে এবং তাদের কাজ করার একটি নতুন উপায় শিখতে পারে।

মনোরেপো বনাম মাল্টি-রেপো: প্রাথমিক পার্থক্য

উভয় পদ্ধতিই শেষ পর্যন্ত একই উদ্দেশ্য নিয়ে কাজ করে: কোডবেস পরিচালনা। তাই, তাদের উভয়কেই একই চ্যালেঞ্জের সমাধান করতে হবে, যার মধ্যে রিলিজ ব্যবস্থাপনা, দলের সদস্যদের মধ্যে সহযোগিতা বৃদ্ধি, সমস্যাগুলি পরিচালনা, পরীক্ষা চালানো এবং অন্যান্য।

তাদের প্রধান পার্থক্য টিম সদস্যদের সিদ্ধান্ত নেওয়ার সময় নিয়ে উদ্বিগ্ন: হয় মনোরেপোর জন্য অগ্রিম বা মাল্টি-রেপোর জন্য লাইনের নিচে।

আসুন আরো বিস্তারিতভাবে এই ধারণা বিশ্লেষণ করা যাক।

যেহেতু সমস্ত লাইব্রেরি মাল্টি-রেপোতে স্বাধীনভাবে সংস্করণ করা হয়, একটি দল ব্রেকিং পরিবর্তন সহ একটি লাইব্রেরি প্রকাশ করে তা সর্বশেষ রিলিজে একটি নতুন প্রধান সংস্করণ নম্বর বরাদ্দ করে নিরাপদে করতে পারে। অন্যান্য গোষ্ঠীগুলি তাদের নির্ভরশীল লাইব্রেরিগুলিকে পুরানো সংস্করণে আটকে রাখতে পারে এবং তাদের কোড অভিযোজিত হয়ে গেলে নতুনটিতে স্যুইচ করতে পারে।

এই পদ্ধতিটি অন্যান্য সমস্ত লাইব্রেরি কখন খাপ খাইয়ে নেবে তার সিদ্ধান্ত প্রতিটি দায়িত্বশীল দলকে ছেড়ে দেয়, যারা যে কোনও সময় এটি করতে পারে। যদি তারা এটি খুব দেরিতে করে এবং নতুন লাইব্রেরি সংস্করণ প্রকাশ করা হয়, তাহলে লাইব্রেরি জুড়ে ফাঁক বন্ধ করা ক্রমশ কঠিন হয়ে যাবে।

ফলস্বরূপ, যখন একটি দল দ্রুত এবং প্রায়শই তাদের কোডে পুনরাবৃত্তি করতে পারে, অন্য দলগুলি ধরতে অক্ষম প্রমাণিত হতে পারে, শেষ পর্যন্ত লাইব্রেরিগুলি তৈরি করে যা ভিন্ন হয়ে যায়।

অন্যদিকে, মনোরেপো পরিবেশে, আমরা একটি লাইব্রেরির একটি নতুন সংস্করণ প্রকাশ করতে পারি না যা অন্য কিছু লাইব্রেরি ভেঙে দেয় কারণ তাদের পরীক্ষা ব্যর্থ হবে। এই ক্ষেত্রে, প্রথম দলটিকে অবশ্যই পরিবর্তনগুলি অন্তর্ভুক্ত করার জন্য দ্বিতীয় দলের সাথে যোগাযোগ করতে হবে।

উত্তর ছাড়া সাবপার লেভেল 1 ওয়ার্ডপ্রেস হোস্টিং সমর্থনে ক্লান্ত? আমাদের বিশ্বমানের সমর্থন দল চেষ্টা করুন! আমাদের পরিকল্পনা দেখুন

যখনই একটি একক লাইব্রেরির জন্য পরিবর্তন ঘটতে হবে তখন এই পদ্ধতিটি দলগুলিকে সমস্ত লাইব্রেরিগুলিকে সম্পূর্ণরূপে মানিয়ে নিতে বাধ্য করে৷ সমস্ত দল একে অপরের সাথে কথা বলতে এবং একসাথে একটি সমাধানে পৌঁছাতে বাধ্য হয়।

ফলস্বরূপ, প্রথম দলটি তাদের ইচ্ছামত দ্রুত পুনরাবৃত্তি করতে সক্ষম হবে না, তবে বিভিন্ন লাইব্রেরি জুড়ে কোডটি কোনও সময়েই বিচ্যুত হতে শুরু করবে না।

সংক্ষেপে, মাল্টি-রেপো পদ্ধতি দলগুলির মধ্যে "দ্রুত চলুন এবং জিনিসগুলি ভাঙুন" এর সংস্কৃতি তৈরি করতে সহায়তা করতে পারে, যেখানে চতুর স্বাধীন দলগুলি তাদের গতিতে তাদের আউটপুট তৈরি করতে পারে। পরিবর্তে, মনোরেপো পদ্ধতি সচেতনতা এবং যত্নের সংস্কৃতির পক্ষে, যেখানে দলগুলিকে নিজেরাই একটি সমস্যা মোকাবেলা করার জন্য পিছিয়ে রাখা উচিত নয়।

হাইব্রিড পলি-অ্যাস-মনো অ্যাপ্রোচ

যদি আমরা মাল্টি-রেপো বা মনোরেপো পদ্ধতি ব্যবহার করার সিদ্ধান্ত নিতে না পারি, তবে এর মধ্যে-এর পদ্ধতিও রয়েছে: একাধিক রিপোজিটরি ব্যবহার করা এবং সেগুলিকে সিঙ্ক্রোনাইজ রাখার জন্য কিছু সরঞ্জাম নিয়োগ করা, এটি একটি মনোরেপোর মতো কিন্তু আরও নমনীয়তার সাথে।

মেটা এমনই একটি টুল। এটি সাবডিরেক্টরির অধীনে একাধিক সংগ্রহস্থল সংগঠিত করে এবং একটি কমান্ড-লাইন ইন্টারফেস প্রদান করে যা একই সাথে একই কমান্ড কার্যকর করে।

একটি মেটা-রিপোজিটরিতে তথ্য থাকে যে কোন রিপোজিটরিগুলি একটি প্রকল্প তৈরি করে। মেটার মাধ্যমে এই সংগ্রহস্থলটি ক্লোন করার ফলে সমস্ত প্রয়োজনীয় সংগ্রহস্থলগুলি পুনরাবৃত্তভাবে ক্লোন করা হবে, নতুন দলের সদস্যদের জন্য তাদের প্রকল্পগুলিতে অবিলম্বে কাজ শুরু করা সহজ করে তুলবে।

একটি মেটা-রিপোজিটরি এবং এর সমস্ত সংজ্ঞায়িত একাধিক রিপোজ ক্লোন করতে, আমাদের অবশ্যই নিম্নলিখিতগুলি সম্পাদন করতে হবে:

meta git clone [meta repo url]

মেটা নির্বাহ করবে a git clone প্রতিটি সংগ্রহস্থলের জন্য এবং এটি একটি সাবফোল্ডারে রাখুন:

একটি মেটা প্রকল্প ক্লোনিং
একটি মেটা-প্রকল্প ক্লোনিং। (চিত্রের উত্স: github.com/mateodelnorte/meta)

তারপর থেকে, মৃত্যুদন্ড কার্যকর করা meta exec কমান্ড প্রতিটি সাবফোল্ডারে কমান্ড চালাবে। উদাহরণস্বরূপ, নির্বাহ করা git checkout master প্রতিটি সংগ্রহস্থলে এইভাবে করা হয়:

meta exec "git checkout master"

হাইব্রিড মনো-অ্যাস-পলি অ্যাপ্রোচ

আরেকটি পদ্ধতি হল উন্নয়নের জন্য একটি মনোরেপোর মাধ্যমে কোড পরিচালনা করা, কিন্তু স্থাপনার জন্য প্রতিটি লাইব্রেরির কোডকে তার স্বাধীন সংগ্রহস্থলে অনুলিপি করা।

এই কৌশলটি PHP ইকোসিস্টেমের মধ্যে প্রচলিত কারণ প্যাকেজিস্ট (প্রধান কম্পোজার রিপোজিটরি) একটি প্যাকেজ প্রকাশ করার জন্য একটি পাবলিক রিপোজিটরি URL প্রয়োজন, এবং এটি বোঝানো সম্ভব নয় যে প্যাকেজটি সংগ্রহস্থলের একটি সাবডিরেক্টরির মধ্যে অবস্থিত।

প্যাকেজিস্ট সীমাবদ্ধতার প্রেক্ষিতে, পিএইচপি প্রকল্পগুলি এখনও বিকাশের জন্য মনোরেপো ব্যবহার করতে পারে, তবে তাদের অবশ্যই স্থাপনার জন্য মাল্টি-রেপো পদ্ধতি ব্যবহার করতে হবে।

এই রূপান্তরটি অর্জন করতে, আমরা একটি স্ক্রিপ্ট চালাতে পারি git subtree split অথবা উপলব্ধ সরঞ্জামগুলির মধ্যে একটি ব্যবহার করুন যা একই যুক্তি সম্পাদন করে:

  • গিট সাবট্রি স্প্লিটার
  • গিট সাবস্প্লিট
  • মনোরেপো স্প্লিটের জন্য গিটহাব অ্যাকশন

কে ব্যবহার করছে মনোরেপো বনাম মাল্টি-রেপো

বেশ কয়েকটি বড় প্রযুক্তি কোম্পানি মনোরেপো পদ্ধতির পক্ষে, অন্যরা মাল্টি-রেপো পদ্ধতি ব্যবহার করার সিদ্ধান্ত নিয়েছে।

গুগল, ফেসবুক, টুইটার এবং উবার সকলেই প্রকাশ্যে মনোরেপো পদ্ধতির পক্ষে সমর্থন দিয়েছে। উইন্ডোজ অপারেটিং সিস্টেমের সোর্স কোড হোস্ট করার জন্য মাইক্রোসফ্ট গ্রহের বৃহত্তম গিট মনোরেপো চালায়।

বিপরীত দিকে, Netflix, Amazon এবং Lyft হল মাল্টি-রেপো পদ্ধতি ব্যবহার করে বিখ্যাত কোম্পানি।

হাইব্রিড পলি-অ্যাস-মনো সাইডে, অ্যান্ড্রয়েড একাধিক রিপোজিটরি আপডেট করে, যেগুলো একটি মনোরেপোর মতো পরিচালিত হয়।

হাইব্রিড মনো-অ্যাস-পলি সাইডে, সিমফনি একটি মনোরেপোতে তার সমস্ত উপাদানের জন্য কোড রাখে। তারা স্থাপনার জন্য এটিকে স্বাধীন সংগ্রহস্থলে বিভক্ত করেছে (যেমন symfony/dependency-injection এবং symfony/event-dispatcher.)

মনোরেপো এবং মাল্টি-রেপোর উদাহরণ

গিটহাবের ওয়ার্ডপ্রেস অ্যাকাউন্ট মনোরেপো এবং মাল্টি-রেপো উভয় পদ্ধতির উদাহরণ হোস্ট করে।

গুটেনবার্গ, ওয়ার্ডপ্রেস ব্লক সম্পাদক, কয়েক ডজন জাভাস্ক্রিপ্ট প্যাকেজ নিয়ে গঠিত। এই প্যাকেজ সব হোস্ট করা হয় WordPress/gutenberg monorepo এবং Lerna এর মাধ্যমে এনপিএম রিপোজিটরিতে প্রকাশ করতে সাহায্য করে।

ওপেনভার্স, খোলাখুলি লাইসেন্সপ্রাপ্ত মিডিয়ার সার্চ ইঞ্জিন, এর প্রধান অংশগুলি স্বাধীন সংগ্রহস্থলগুলিতে হোস্ট করে: ফ্রন্ট-এন্ড, ক্যাটালগ এবং API।

মনোরেপো বনাম মাল্টি-রেপো: কীভাবে চয়ন করবেন?

অনেক উন্নয়ন সমস্যার মতো, কোন পদ্ধতি ব্যবহার করা উচিত তার পূর্বনির্ধারিত উত্তর নেই। বিভিন্ন কোম্পানি এবং প্রকল্পগুলি তাদের অনন্য অবস্থার উপর ভিত্তি করে এক বা অন্য কৌশল থেকে উপকৃত হবে, যেমন:

  • কোডবেস কত বড়? এতে কি গিগাবাইট ডেটা আছে?
  • কোডবেসে কতজন কাজ করবে? এটা কি প্রায় 10, 100, বা 1,000?
  • কয়টি প্যাকেজ থাকবে? এটা কি প্রায় 10, 100, বা 1,000?
  • একটি নির্দিষ্ট সময়ে দলটির কতগুলি প্যাকেজ কাজ করতে হবে?
  • প্যাকেজগুলো কতটা শক্তভাবে সংযুক্ত?
  • বিভিন্ন প্রোগ্রামিং ভাষা জড়িত? তাদের কি চালানোর জন্য একটি নির্দিষ্ট সফ্টওয়্যার ইনস্টল বা বিশেষ হার্ডওয়্যার প্রয়োজন?
  • কতগুলি স্থাপনার সরঞ্জাম প্রয়োজন এবং সেগুলি সেট আপ করা কতটা জটিল?
  • কোম্পানির সংস্কৃতি কি? দলগুলি কি সহযোগিতা করতে উত্সাহিত হয়?
  • দলগুলি কী কী সরঞ্জাম এবং প্রযুক্তি ব্যবহার করতে জানে?

আপনার কোডবেসের জন্য আপনি কোন পদ্ধতি গ্রহণ করা উচিত? 🤔 এখানে আরও জানুন 👇টুইট করতে ক্লিক করুন

সারাংশ

হোস্টিং এবং কোড পরিচালনার জন্য দুটি প্রধান কৌশল রয়েছে: মনোরেপো বনাম মাল্টি-রেপো। মনোরেপো পদ্ধতির মধ্যে রয়েছে বিভিন্ন লাইব্রেরি বা প্রকল্পের কোড - এমনকি একটি কোম্পানির সমস্ত কোড - একটি একক সংগ্রহস্থলে সংরক্ষণ করা। এবং মাল্টি-রেপো সিস্টেম কোডটিকে ইউনিটে বিভক্ত করে, যেমন লাইব্রেরি বা পরিষেবা, এবং তাদের কোডকে স্বাধীন সংগ্রহস্থলে হোস্ট করে রাখে।

কোন পদ্ধতি ব্যবহার করতে হবে তা অনেক শর্তের উপর নির্ভর করে। উভয় কৌশলেরই বেশ কিছু সুবিধা এবং অসুবিধা রয়েছে এবং আমরা এই নিবন্ধে সেগুলিকে বিস্তারিতভাবে কভার করেছি।

মনোরেপোস বা মাল্টি-রেপোস সম্পর্কে আপনার কি কোনো প্রশ্ন বাকি আছে? আমাদের মন্তব্য বিভাগে জানতে দিন!

সম্পরকিত প্রবন্ধ

답글 남기기

이메일 주소는 공개되지 않습니다.

শীর্ষ বোতামে ফিরে যান