Mono-Repo مقابل Multi-Repo: إلقاء الضوء على استراتيجيات مستودع الأكواد

نشرت: 2021-12-22

تعد Mono-repo و Multi-repo استراتيجيتين رئيسيتين لاستضافة التعليمات البرمجية وإدارتها من خلال Git. نناقش كلاً من الاستراتيجيات ومزاياها وعيوبها بالتفصيل.

مقدمة

تتم إدارة واستضافة معظم المشاريع الحديثة على Git. أصبح Git النظام الأساسي القياسي لإدارة كود المصدر الموزع والتحكم في الإصدار والتعاون من أي مكان في العالم. Git سريع وفعال. هناك طريقتان رئيسيتان لاستضافة كود Git وإدارته:

  • أحادي الريبو
  • متعدد الريبو

قبل البحث في هذه الأساليب ، دعونا نفهم كيفية عمل الريبو.

ما هي ريبو؟

يحتوي المستودع (Repo) على جميع المجلدات والملفات الخاصة بمشروعك. يحتوي أيضًا على معلومات حول المستخدمين والأشخاص وأجهزة الكمبيوتر.

يتم التحكم في بيانات المستودع بالإصدار. يمكن أن يمتلك الريبو فرد أو مجموعة من أعضاء الفريق.

Git هو مستودع. يمكن أن تكون عامة أو خاصة أو داخلية. GitHub هي خدمة استضافة لمستودع Git ولها واجهة مستخدم.

يوفر Git ميزات التحكم في الإصدار ومشاركة التعليمات البرمجية ، ومع ذلك ، فإن ما يجعل Git مختلفًا هو أنه إذا أراد المطورون إجراء بعض التغييرات على ملفاتهم ، فيمكنهم نسخ المستودع بأكمله إلى نظامهم المحلي. وبالتالي ، حتى إذا لم يكن لدى المطور حق الوصول للكتابة إلى مشروع معين ، فيمكنه نسخ المحتويات محليًا وتعديلها (يسمى forking).

علاوة على ذلك ، إذا أراد المطور مشاركة التغييرات التي تم إجراؤها محليًا ، فيمكنه إرسال "طلب سحب" إلى مالك المشروع.

يمكن أن يحتوي المشروع على خدمة واحدة. إذا كان مشروعك يحتوي على مهام سير عمل متعددة ، فيمكنك إنشاء خدمات متعددة لكل سير عمل. يفضل معظم المطورين تقسيم المشاريع الكبيرة إلى خدمات مستقلة أصغر ، لها وظيفة واحدة أو أكثر. يمكن لكل خدمة حل مشاكل العمل المختلفة. مع شعبية الأطر التي لا تحتاج إلى خادم ، يمكن للمستخدمين الوصول إلى وظائف كخدمات.

بمجرد إنشاء هذه الوظائف كخدمات ونشرها ، فإن الخطوة التالية هي تنظيمها والتحكم في إصدارها - يمكنك الحصول على جميع خدماتك في مستودع واحد (مستودع أحادي) - أو أن يكون لديك مستودع منفصل لكل خدمة لديك ( متعدد الريبو)!

الريبو الأحادي متعدد الريبو

ما هو مونو ريبو؟

في نهج أحادي الريبو ، يمكنك الاحتفاظ بجميع خدماتك في مستودع واحد (أحادي). لا يزال بإمكانك نشر وإدارة كل خدمة بشكل مستقل. يمكن أن تشترك الخدمات في مكتبات عامة ورموز.

تستخدم شركات مثل Facebook و Google و Dropbox نظام أحادي الريبو.

مزايا مونو ريبو

نهج أحادي الريبو له العديد من المزايا:

  • مكان واحد لتخزين كل كود المشروع ، ويمكن الوصول إليه من قبل كل فرد في الفريق
  • من السهل إعادة استخدام التعليمات البرمجية ومشاركتها ، تعاون مع الفريق
  • من السهل فهم تأثير التغيير على المشروع بأكمله
  • أفضل خيار لإعادة هيكلة الكود وإجراء تغييرات كبيرة على الكود
  • يمكن لأعضاء الفريق الحصول على عرض شامل للمشروع بأكمله
  • من السهل إدارة التبعيات

عيوب مونو ريبو

بالطبع ، لدى mono-repo بعض العيوب ، أهمها الأداء. إذا كان مشروعك ينمو وتتم إضافة المزيد من الملفات كل يومين ، فقد تصبح عمليات السحب والسحب والعمليات الأخرى بطيئة وقد تستغرق عمليات البحث عن الملفات وقتًا أطول.

أيضًا ، إذا قمت بتعيين الكثير من المقاولين المستقلين لمشروعك ، فقد لا يكون منحهم إمكانية الوصول إلى قاعدة التعليمات البرمجية بالكامل آمنًا.

علاوة على ذلك ، من الصعب تنفيذ عمليات النشر المستمر (CD) ، لأن العديد من الأشخاص يمكنهم التحقق من تغييراتهم ، وقد يتعين على نظام التكامل المستمر (CI) إجراء عمليات إعادة بناء متعددة.

الشركات الكبيرة التي تستخدم mono-repos لديها أدوات مخصصة للتعامل مع مشكلات التوسع. على سبيل المثال ، يستخدم Facebook نظام ملفات مخصصًا والتحكم في المصدر.

ما هو متعدد الريبو؟

في نهج متعدد الريبو ، هناك مستودعات متعددة تستضيف العديد من المكتبات والخدمات للمشروع. إذا تغيرت إحدى الخدمات ، فسيحتاج المطورون إلى إعادة بناء تلك الخدمة فقط وليس المشروع بأكمله. يمكن للأفراد والفرق العمل على خدماتهم المحددة ويحصلون فقط على الخدمات المطلوبة.

تستخدم شركات مثل Netflix و Amazon وحدات إعادة شراء متعددة.

مزايا Multi-repo

عدد الشركات التي تتبنى الريبو المتعدد أكثر بكثير من تلك التي تستخدم الريبو الأحادي ، وذلك للأسباب التالية:

  • كل خدمة ومكتبة لها إصداراتها الخاصة
  • عمليات سحب وسحب الكود صغيرة ومنفصلة ، وبالتالي لا توجد مشكلات في الأداء حتى إذا كان حجم المشروع ينمو
  • يمكن للفرق العمل بشكل مستقل ولا تحتاج إلى الوصول إلى قاعدة التعليمات البرمجية بالكامل
  • سرعة التطور والمرونة
  • يمكن إصدار كل خدمة بشكل منفصل ولها دورة نشر خاصة بها ، مما يجعل CI و CD أسهل في التنفيذ
  • تحكم أفضل في الوصول - لا تحتاج جميع الفرق إلى الوصول الكامل إلى جميع المكتبات - ولكن يمكنها الحصول على حق الوصول للقراءة إذا احتاجوا إلى ذلك

عيوب Multi-repo

  • يجب مزامنة التبعيات والمكتبات المستخدمة عبر الخدمات والمشاريع بانتظام للحصول على أحدث إصدار
  • يشجع ثقافة منعزلة في مرحلة ما ، مما يؤدي إلى تكرار التعليمات البرمجية والفرق الفردية التي تحاول حل نفس المشكلة
  • قد يتبع كل فريق مجموعة مختلفة من أفضل الممارسات لشفراتهم مما يتسبب في صعوبات في اتباع أفضل الممارسات الشائعة

الاختلافات بين Mono و Multi Repo

دعونا نلخص الاختلافات بين الريبو الأحادي ومتعدد الريبو:

أحادي الريبو متعدد الريبو
جميع الكود الخاص بجميع مشاريع المنظمة موجود في مستودع مركزي لكل خدمة ومشروع مستودع منفصل
يمكن للفرق التعاون والعمل معًا ؛ يمكنهم رؤية تغييرات بعضهم البعض يمكن للفرق العمل بشكل مستقل ؛ لا تؤثر التغييرات الفردية على التغييرات التي تجريها الفرق أو المشاريع الأخرى
يحصل كل شخص على حق الوصول إلى هيكل المشروع بأكمله يمكن للمسؤولين تقييد التحكم في الوصول إلى المشروع أو الخدمة التي يحتاج المطور إلى الوصول إليها
يمكن أن تحدث مشكلات التوسع إذا استمر حجم المشروع في النمو أداء جيد ، بسبب الكود المحدود ووحدات الخدمة الأصغر
من الصعب تنفيذ النشر المستمر (CD) والتكامل المستمر (CI) يمكن للمطورين بسهولة إنشاء CD و CI لأنهم يستطيعون إنشاء الخدمات بشكل مستقل
يمكن للمطورين مشاركة المكتبات وواجهات برمجة التطبيقات والرموز الشائعة الأخرى بسهولة أثناء تحديثها في المستودع المركزي يجب مزامنة أي تغييرات في المكتبات وغيرها من التعليمات البرمجية بشكل دوري لتجنب حدوث مشكلات لاحقًا

استنتاج

يتمتع كل من الريبو الأحادي والريبو المتعدد بشعبية متساوية ويعتمد أيهما أفضل على حجم مشروعك ومتطلبات المشروع ومستوى الإصدار والتحكم في الوصول الذي تحتاجه.

تفضل Mono-repo الاتساق ، بينما تركز الريبو المتعدد على الفصل. أثناء وجوده في mono-repo ، يمكن للفريق بأكمله رؤية التغييرات التي تم إجراؤها بواسطة شخص واحد ، يقوم multi-repo بإنشاء ريبو منفصل لكل فريق ، الذين لديهم حق الوصول إلى الخدمات المطلوبة فقط. إذا كنت ترغب في استخدام مزيج من الريبو الأحادي ومتعدد الريبو لمشاريعك ، فيمكنك الذهاب إلى meta ، وهي أداة لإدارة مشاريع ومكتبات متعددة.

قد تكون مهتمًا أيضًا بـ Free Resources to Learn Git.