In Développement Dernière mise à jourated:
Partager sur:
Logiciel Jira est l'outil de gestion de projet n°1 utilisé par les équipes agiles pour planifier, suivre, publier et prendre en charge d'excellents logiciels.

Mono-repo et Multi-repo sont deux strategies pour l'hébergement et la gestion du code via Git. Nous discutons à la fois du strategies et leurs avantages et inconvénients en détail.

Introduction

La plupart des projets modernes sont gérés et hébergés sur Git. Git est devenu la norme platformulaire de gestion distribuée du code source, contrôle de version, et la collaboration de n'importe où dans le monde. Git est rapide et efficace. Il existe deux approches principales pour héberger et gérer votre code Git :

  • Mono-repo
  • Multi-dépôt

Avant de creuser dans ces approches, comprenons comment fonctionne le repo.

Que sont les dépôts ?

Un référentiel (Repo) contient tous les dossiers et fichiers de votre projet. Il contient également des informations sur les utilisateurs, les personnes et les ordinateurs.

Les données du référentiel sont contrôlées par version. Un dépôt peut appartenir à un individu ou à un groupe de membres de l'équipe.

Git est un référentiel. Cela peut être public, privéateou internal. GitHub est un service d'hébergement du référentiel Git et dispose d'une interface utilisateur.

Git fournit des fonctionnalités de contrôle de version et de partage de code. Cependant, ce qui différencie Git, c'est que si les développeurs souhaitent apporter des modifications à leurs fichiers, ils peuvent copier l'intégralité du référentiel sur leur système local. Ainsi, même si un développeur n'a pas d'accès en écriture à un projet particulier, il peut copier le contenu à l'emplacementally et les modifier (appelé forking).

De plus, si le développeur souhaite partager la localisationally apporté des modifications, ils peuvent envoyer une « pull request » au propriétaire du projet.

Un projet peut avoir un seul service. Si votre projet a plusieurs workflows, vous pouvez créerate plusieurs services pour chaque flux de travail. La plupart des développeurs préfèrent diviser les projets plus importants en services indépendants plus petits, dotés d'une ou plusieurs fonctions. Chaque service peut résoudre divers problèmes commerciaux. Avec la popularité de frameworks sans serveur, les utilisateurs peuvent accéder aux fonctions en tant que services.

Une fois que vous avez crééate ces fonctions en tant que services et les déployer, l'étape suivante consiste à les structurer et à les contrôler de version – vous pouvez avoir tous vos services dans un seul référentiel (mono-repo) – ou avoir un référentiel séparé.ate référentiel pour chaque service dont vous disposez (multi-repo) !

mono pension multi pension

Qu'est-ce qu'un Mono-repo ?

Dans une approche mono-repo, vous pouvez conserver tous vos services dans un seul (mono) référentiel. Vous pouvez toujours déployer et gérer chaque service indépendamment. Les services peuvent partager des bibliothèques et du code communs.

Des entreprises comme Facebook, Google et Dropbox utilisé mono-dépôt.

Avantages du mono-repo

L'approche mono-repo présente de nombreux avantages :

  • Un seul endroit pour stocker tout le code du projet et accessible à tous les membres de l'équipe
  • Code facile à réutiliser et à partager, collaborezate avec l'équipe
  • Facile à comprendre le impact de votre changement sur l'ensemble du projet
  • Meilleure option pour la refactorisation de code et les modifications importantes apportées au code
  • Les membres de l'équipe peuvent avoir une vue globale de l'ensemble du projet
  • Dépendances faciles à gérer

Inconvénients du Mono-repo

Bien entendu, le mono-repo présente certains inconvénients, le principal étant la performance. Si votre projet growSi des fichiers et d'autres sont ajoutés tous les deux jours, les opérations d'extraction, d'extraction et autres peuvent devenir lentes et les recherches de fichiers peuvent prendre plus de temps.

De plus, si vous embauchez beaucoup de entrepreneurs indépendants pour votre projet, leur donner accès à l'intégralité de la base de code peut ne pas être aussi sécurisé.

De plus, il est difficile de mettre en œuvre des déploiements continus (CD), car de nombreuses personnes peuvent enregistrer leurs modifications et votre système d'intégration continue (CI) peut avoir à effectuer plusieurs reconstructions.

Les grandes entreprises qui utilisent des mono-repos disposent d'outils personnalisés pour gérer les problèmes de mise à l'échelle. Par exemple, Facebook utilise un système de fichiers personnalisé et un contrôle de source.

Qu'est-ce qu'un multi-repo ?

Dans une approche multi-dépôt, il existe plusieurs référentiels qui hébergent plusieurs bibliothèques et services d'un projet. Si un service change, les développeurs doivent reconstruire uniquement ce service et non l'intégralité du projet. Les individus et les équipes peuvent travailler sur leurs services spécifiques et n'ont accès qu'aux services requis.

Des entreprises comme Netflix et Amazon utilisent multi-dépôts.

Avantages du multi-repo

Le nombre d'entreprises qui adoptent le multi-repo est bien plus élevé que celui qui opte pour le mono-repo, pour les raisons suivantes :

  • Chaque service et bibliothèque a son propre versioning
  • Les extractions et les extractions de code sont petites et séparéesate, il n'y a donc aucun problème de performances même si la taille du projet grows
  • Les équipes peuvent travailler de manière indépendante et n'ont pas besoin d'avoir accès à l'intégralité de la base de code
  • Développement plus rapide et flexibilité
  • Chaque service peut être publié séparémentately et avoir son propre cycle de déploiement, rendant ainsi CI et CD plus faciles à mettre en œuvre
  • Meilleur contrôle d'accès - toutes les équipes n'ont pas besoin d'avoir un accès complet à toutes les bibliothèques - mais peuvent obtenir un accès en lecture si elles en ont besoin

Inconvénients du multi-repo

  • Les dépendances et les bibliothèques utilisées dans les services et les projets doivent être régulièrement synced pour obtenir le lateère version
  • Encourage une culture cloisonnée à un moment donné, conduisant à une duplicationate code et équipes individuelles essayant de resolve le même problème
  • Chaque équipe peut suivre un ensemble différent de meilleures pratiques pour son code, ce qui entraîne des difficultés à suivre les meilleures pratiques communes

Différences entre Mono et Multi Repo

Récapitulonsate les différences entre mono-repo et multi-repo :

Mono-repo Multi-dépôt
Tout le code de tous les projets d'une organisation réside dans un référentiel central Chaque service et projet a une séparationate  dépôt
Les équipes peuvent collaborerate et travailler ensemble ; ils peuvent voir les changements de chacun Les équipes peuvent travailler de manière autonome; les modifications individuelles n'affectent pas les modifications apportées par d'autres équipes ou projets
Chaque personne a accès à toute la structure du projet Les administrateurs peuvent limiter le contrôle d'accès au projet ou au service auquel le développeur a besoin d'accéder
Des problèmes de mise à l’échelle peuvent survenir si la taille du projet reste growing Bonnes performances, en raison du code limité et des unités de service plus petites
Difficile à mettre en œuvre Déploiement Continu (CD) et Intégration Continue (CI) Les développeurs peuvent facilement réaliser des CD et des CI car ils peuvent créer des services indépendamment
Les développeurs peuvent facilement partager des bibliothèques, des API et d'autres codes courants au fur et à mesure de leur mise à jour.ated dans le référentiel central Toute modification apportée aux bibliothèques et à tout autre code commun doit être périodiqueally synced pour éviter les problèmes later

Conclusion

Le mono-repo et le multi-repo sont équivalentsally populaire et lequel est le meilleur dépend de la taille de votre projet, des exigences du projet et du niveau de gestion des versions et de contrôle d'accès dont vous avez besoin.

Le mono-repo favorise la cohérence, tandis que le multi-repo se concentre sur le découplage. Dans un mono-repo, toute l'équipe peut voir les modifications effectuées par une seule personne, dans un multi-repoatesa séparationate repo pour chaque équipe, qui a accès uniquement aux services requis. Si vous souhaitez utiliser une combinaison de mono-repo et multi-repo pour vos projets, vous pouvez opter pour objectif, un outil pour gérer plusieurs projets et bibliothèques.

Vous pouvez également être intéressé par Ressources gratuites pour apprendre Git.

Partager sur:
  • Ramya Shankar
    Auteur
    De l'enfance à aujourd'hui, mon amour de l'écriture ne s'est jamais arrêté, il s'est plutôt amélioré de jour en jour, grâce aux opportunités qui se sont présentées sur mon chemin ! J'ai commencé avec de simples entrées de blog que j'ai écrites simplement en observant mon environnement, puis accroché…

Merci à nos commanditaires

Plus de bonnes lectures sur le développement

Alimentez votre entreprise

Certains des outils et services pour aider votre entreprise grow.
  • L'outil de synthèse vocale qui utilise l'IA pour générerate des voix humaines réalistes.

    Essayez Murf AI
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, moteur de recherche et tout ce dont vous avez besoin pour collecter des données Web.

    Essayez Brightdata
  • Monday.com est un système d'exploitation de travail tout-en-un pour vous aider à gérer les projets, les tâches, le travail, les ventes, le CRM, les opérations, workflowset plus encore.

    Essayez Monday
  • Intruder est un scanner de vulnérabilités en ligne qui détecte les failles de cybersécurité de votre infrastructure, afin d'éviter des violations de données coûteuses.

    Essayez Intruder