Architecture Decision Record

Active theme: Light

← সিদ্ধান্ত রেকর্ডের উদাহরণ

মনোরেপো বনাম মাল্টিরেপো

সূচি:

সারসংক্ষেপ

বিষয়

আমাদের প্রকল্পে তিন প্রধান শ্রেণির সফটওয়্যার উন্নয়ন জড়িত:

  • ফ্রন্ট-এন্ড GUI
  • মিডলওয়্যার সার্ভিস
  • ব্যাক-এন্ড সার্ভার

আমরা যখন উন্নয়ন করি, তখন আমাদের সোর্স কোড ম্যানেজমেন্ট (SCM) ভার্সন কন্ট্রোল সিস্টেম (VCS) হলো git।

আমাদের কোড সাজাতে আমরা git কীভাবে ব্যবহার করব, তা বেছে নিতে হবে।

শীর্ষ-স্তরের পছন্দ হলো “মনোরেপো” বা “পলিরেপো” বা “হাইব্রিড” হিসেবে সাজানো:

  • মনোরেপো মানে আমরা সব অংশ একটি বড় রিপোতে রাখি
  • পলিরেপো মানে আমরা প্রতিটি অংশ তার নিজস্ব রিপোতে রাখি
  • হাইব্রিড মানে মনোরেপো ও পলিরেপোর কিছু মিশ্রণ

আরও জানতে দেখুন https://github.com/joelparkerhenderson/monorepo-vs-polyrepo

সিদ্ধান্ত

মনোরেপো, যখন কোনো সংগঠন/দল/প্রকল্প তুলনামূলকভাবে ছোট, এবং স্থিতিশীলতা বজায় রাখার চেয়ে দ্রুত পুনরাবৃত্তি অগ্রাধিকার পায়।

পলিরেপো, যখন কোনো সংগঠন/দল/প্রকল্প তুলনামূলকভাবে বড়, এবং দ্রুত পুনরাবৃত্তির চেয়ে স্থিতিশীলতা বজায় রাখা অগ্রাধিকার পায়।

অবস্থা

সিদ্ধান্ত হয়েছে। মনোরেপো এবং/অথবা পলিরেপো পরিচালনার জন্য নতুন টুলিং পাওয়া গেলে পুনর্বিবেচনায় উন্মুক্ত।

বিস্তারিত

অনুমান

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

সীমাবদ্ধতা

সীমাবদ্ধতাগুলো https://github.com/joelparkerhenderson/monorepo-vs-polyrepo-তে ভালোভাবে নথিভুক্ত

অবস্থানসমূহ

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

আমরা সাধারণ Git ওপেন সোর্স প্রকল্পের ধাঁচের পলিরেপো বিবেচনা করেছি, যেমন Google Android, Facebook React ইত্যাদি। আমরা মনে করি সাধারণ জনগণের অংশগ্রহণ (যেমন বিশ্বের যে কেউ কোডে কাজ করতে পারে) এবং স্বতন্ত্র প্রাপ্যতার (যেমন প্রকল্পটি অন্য কোনো অংশ ছাড়া নিজেই ব্যবহৃত হয়) জন্য এগুলোই সেরা পছন্দ।

যুক্তি

কোনো সংগঠন/দল/প্রকল্প তুলনামূলকভাবে ছোট হলে আমরা মনোরেপো বেছে নিই, কারণ স্থিতিশীলতা বজায় রাখার চেয়ে দ্রুত পুনরাবৃত্তি উল্লেখযোগ্যভাবে বেশি অগ্রাধিকারপ্রাপ্ত

কোনো সংগঠন/দল/প্রকল্প তুলনামূলকভাবে বড় হলে আমরা পলিরেপো বেছে নিই, কারণ দ্রুত পুনরাবৃত্তির চেয়ে স্থিতিশীলতা বজায় রাখা উল্লেখযোগ্যভাবে বেশি অগ্রাধিকারপ্রাপ্ত।

প্রভাব

CI+CD-র জন্য বিদ্যমান পাইপলাইন থাকলে, একটি রিপোর মধ্যে একাধিক প্রকল্প পরীক্ষা করতে আমাদের তা সমন্বয় করতে হতে পারে।

মনোরেপোর পূর্ণ বিল্ডে CI+CD-র বেশি সময় লাগতে পারে, কারণ CI+CD মনোরেপোর সব প্রকল্প বিল্ড করতে পারে।

কোনো সংগঠন/দল/প্রকল্প বড় হলে মনোরেপোতে সম্প্রসারণ-সমস্যা দেখা দেবে।

মনোরেপোর সম্প্রসারণ-সমস্যা পলিরেপোতে রূপান্তরকে ক্রমশ মূল্যবান করে তুলতে পারে।

মনোরেপো থেকে পলিরেপোতে রূপান্তর একটি উল্লেখযোগ্য devops কাজ, এবং এটি পরিকল্পনা, পরিচালনা ও প্রোগ্রাম করতে হবে।

সম্পর্কিত

সম্পর্কিত সিদ্ধান্ত

আমরা মনোরেপো (যেমন Google Bazel) ও পলিরেপো (যেমন Lyft Refactorator) পরিচালনার সম্পর্কিত টুলিংয়ের জন্য সিদ্ধান্ত তৈরি করব।

সম্পর্কিত প্রয়োজনীয়তা

আমাদের CI+CD পাইপলাইন এমনভাবে উন্নয়ন করতে হবে যাতে তা git-এর সঙ্গে ভালোভাবে কাজ করে।

সম্পর্কিত উপকরণ

আমরা প্রত্যাশা করি রিপো সংগঠনের প্রস্তুতকরণ, কনফিগারেশন ব্যবস্থাপনা, পরীক্ষা এবং অনুরূপ devops ক্ষেত্রের জন্য সম্পর্কিত উপকরণ থাকবে।

সম্পর্কিত নীতি

সহজে ফেরানো যায়। মনোরেপো বাস্তবে কাজ না করলে, বা নেতৃত্ব না চাইলে, পলিরেপোতে বদলানো সহজ।

গ্রাহক-আচ্ছন্নতা। আমরা প্রকল্পটি গ্রাহকদের হাতে পৌঁছে দেওয়াকে মূল্য দিই, এবং বিশ্বাস করি মনোরেপো আমাদের পলিরেপোর চেয়ে দ্রুত সেখানে পৌঁছে দিতে পারে, এবং দ্রুত পুনরাবৃত্তিতেও সাহায্য করে।

বড় ভাবুন। Google ও Facebook পলিরেপোর চেয়ে মনোরেপোর অত্যন্ত দৃঢ় সমর্থক, কারণ সব মূল সেবা একসঙ্গে উন্নয়ন/পরীক্ষা/ডিপ্লয় করা যায়।

টীকা

এখানে যেকোনো টীকা যোগ করুন।