{"id":48049,"date":"2021-08-25T17:21:11","date_gmt":"2021-08-25T15:21:11","guid":{"rendered":"https:\/\/kinsta.com\/?p=100242"},"modified":"2023-09-12T15:51:50","modified_gmt":"2023-09-12T14:51:50","slug":"mono-repo-vs-multi-repo","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/","title":{"rendered":"Mono-repo vs Multi-repo : Avantages et inconv\u00e9nients des strat\u00e9gies de d\u00e9p\u00f4t de code"},"content":{"rendered":"<p>Il existe deux strat\u00e9gies principales pour l&rsquo; <a href=\"https:\/\/kinsta.com\/fr\/tarifs\/\">h\u00e9bergement<\/a> et la gestion du code via Git : mono-repo vs multi-repo. Les deux approches ont leurs avantages et leurs inconv\u00e9nients.<\/p>\n<p>Nous pouvons utiliser l&rsquo;une ou l&rsquo;autre approche pour n&rsquo;importe quelle base de code dans n&rsquo;importe quelle langue. Vous pouvez utiliser n&rsquo;importe laquelle de ces strat\u00e9gies pour des projets contenant une poign\u00e9e de <a href=\"https:\/\/kinsta.com\/fr\/blog\/bibliotheques-javascript\/\">biblioth\u00e8ques<\/a> \u00e0 des milliers d&rsquo;entre elles. M\u00eame si cela implique quelques membres de l&rsquo;\u00e9quipe ou des centaines, ou si vous souhaitez h\u00e9berger du code priv\u00e9 ou open source, vous pouvez toujours opter pour le mono-repo ou le multi-repo en fonction de divers facteurs.<\/p>\n<p>Quels sont les avantages et les inconv\u00e9nients de chaque approche ? Quand doit-on utiliser l&rsquo;une ou l&rsquo;autre ? D\u00e9couvrons-le !<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Que sont les d\u00e9p\u00f4ts ?<\/h2>\n<p>Un d\u00e9p\u00f4t (repository ou repo) est un stockage pour toutes les modifications et tous les fichiers d&rsquo;un projet, permettant aux d\u00e9veloppeurs de \u00ab contr\u00f4ler la version \u00bb des ressources du projet tout au long de sa phase de d\u00e9veloppement.<\/p>\n<p>Nous nous r\u00e9f\u00e9rons g\u00e9n\u00e9ralement aux r\u00e9f\u00e9rentiels <a href=\"https:\/\/kinsta.com\/fr\/docs\/hebergement-wordpress\/gestion-site\/git\/\">Git<\/a> (tels que fournis par <a href=\"https:\/\/kinsta.com\/fr\/blog\/git-vs-github\/\">GitHub<\/a> , <a href=\"https:\/\/kinsta.com\/fr\/blog\/gitlab-vs-github\/\">GitLab<\/a> ou <a href=\"https:\/\/kinsta.com\/fr\/blog\/bitbucket-vs-github\/\">Bitbucket<\/a> ), mais le concept s&rsquo;applique \u00e9galement \u00e0 d&rsquo;autres syst\u00e8mes de contr\u00f4le de version (tels que Mercurial).<\/p>\n\n<h2>Qu&rsquo;est-ce qu&rsquo;un mono-repo ?<\/h2>\n<p>L&rsquo;approche mon-orepo utilise un <a href=\"https:\/\/kinsta.com\/fr\/blog\/bitbucket-vs-github\/\">d\u00e9p\u00f4t<\/a> unique pour h\u00e9berger tout le code des multiples biblioth\u00e8ques ou services composant les projets d&rsquo;une entreprise. \u00c0 l&rsquo;extr\u00eame, l&rsquo;ensemble de la base de code d&rsquo;une entreprise &#8211; couvrant divers projets et cod\u00e9 dans diff\u00e9rentes langues &#8211; est h\u00e9berg\u00e9 dans un seul r\u00e9f\u00e9rentiel.<\/p>\n<h2>Avantages de mono-repo<\/h2>\n<p>L&rsquo;h\u00e9bergement de l&rsquo;ensemble de la base de code sur un seul d\u00e9p\u00f4t offre les avantages suivants.<\/p>\n<h3>Abaisse les barri\u00e8res \u00e0 l&rsquo;entr\u00e9e<\/h3>\n<p>Lorsque de nouveaux membres du personnel commencent \u00e0 travailler pour une entreprise, ils doivent t\u00e9l\u00e9charger le code et installer les outils n\u00e9cessaires pour commencer \u00e0 travailler sur leurs t\u00e2ches. Supposons que le projet soit dispers\u00e9 dans de nombreux r\u00e9f\u00e9rentiels, chacun ayant ses instructions d&rsquo;installation et l&rsquo;outillage requis. Dans ce cas, la configuration initiale sera complexe et, le plus souvent, la documentation ne sera pas compl\u00e8te, obligeant ces nouveaux membres de l&rsquo;\u00e9quipe \u00e0 demander de l&rsquo;aide \u00e0 leurs coll\u00e8gues.<\/p>\n<p>Un mono-repo simplifie les choses. Comme il existe un seul emplacement contenant tout le code et la <a href=\"https:\/\/kinsta.com\/fr\/docs\/devkinsta\/\">documentation<\/a>, vous pouvez rationaliser la configuration initiale.<\/p>\n<h3>Gestion de code centralis\u00e9e<\/h3>\n<p>Avoir un d\u00e9p\u00f4t unique donne une visibilit\u00e9 de tout le code \u00e0 tous les d\u00e9veloppeurs. Cela simplifie la gestion du code car nous pouvons utiliser un seul outil de suivi des probl\u00e8mes pour surveiller tous les probl\u00e8mes tout au long du cycle de vie de l&rsquo;application.<\/p>\n<p>Par exemple, ces caract\u00e9ristiques sont pr\u00e9cieuses lorsqu&rsquo;un probl\u00e8me s&rsquo;\u00e9tend sur deux (ou plus) biblioth\u00e8ques enfants avec le bogue existant sur la biblioth\u00e8que d\u00e9pendante. Avec plusieurs d\u00e9p\u00f4ts, il peut \u00eatre difficile de <a href=\"https:\/\/kinsta.com\/fr\/blog\/inspecter-elements\/\">trouver le morceau de code<\/a> o\u00f9 le probl\u00e8me se produit.<\/p>\n<p>En plus de cela, nous aurions besoin de d\u00e9terminer quel r\u00e9f\u00e9rentiel utiliser pour cr\u00e9er le probl\u00e8me, puis d&rsquo;inviter et de signaler les membres d&rsquo;autres \u00e9quipes pour aider \u00e0 r\u00e9soudre le probl\u00e8me.<\/p>\n<p>Avec un mono-repo, cependant, la localisation des probl\u00e8mes de code et la collaboration pour le d\u00e9pannage deviennent plus simples \u00e0 r\u00e9aliser.<\/p>\n<h3>Refactorisations indolore \u00e0 l&rsquo;\u00e9chelle de l&rsquo;application<\/h3>\n<p>Lors de la cr\u00e9ation d&rsquo;une refactorisation du code \u00e0 l&rsquo;\u00e9chelle de l&rsquo;application, plusieurs biblioth\u00e8ques seront affect\u00e9es. Si vous les h\u00e9bergez via plusieurs d\u00e9p\u00f4ts, la gestion de toutes les diff\u00e9rentes demandes d&rsquo;extraction (pull request) pour les maintenir synchronis\u00e9es les unes avec les autres peut s&rsquo;av\u00e9rer \u00eatre un d\u00e9fi.<\/p>\n<p>Un mono-repo permet d&rsquo;effectuer facilement toutes les modifications de tout le code pour toutes les biblioth\u00e8ques et de le soumettre sous une seule pull request.<\/p>\n<h3>Plus difficile de casser la fonctionnalit\u00e9 adjacente<\/h3>\n<p>Avec le mono-repo, nous pouvons configurer tous les tests pour toutes les biblioth\u00e8ques \u00e0 ex\u00e9cuter chaque fois qu&rsquo;une seule biblioth\u00e8que est modifi\u00e9e. En cons\u00e9quence, la probabilit\u00e9 de faire un changement dans certaines biblioth\u00e8ques a minimis\u00e9 les effets n\u00e9gatifs sur d&rsquo;autres biblioth\u00e8ques.<\/p>\n<h3>Les \u00e9quipes partagent une culture de d\u00e9veloppement<\/h3>\n<p>M\u00eame si cela n&rsquo;est pas impossible, avec une approche mono-repo, il devient difficile d&rsquo;inspirer des sous-cultures uniques parmi diff\u00e9rentes \u00e9quipes. Puisqu&rsquo;ils partageront le m\u00eame d\u00e9p\u00f4t, ils partageront tr\u00e8s probablement les m\u00eames m\u00e9thodologies de <a href=\"https:\/\/kinsta.com\/fr\/blog\/meilleur-langage-programmation-apprendre\/\">programmation<\/a> et de gestion et utiliseront les m\u00eames <a href=\"https:\/\/kinsta.com\/fr\/blog\/outils-apm\/\">outils de d\u00e9veloppement<\/a>.<\/p>\n<h2>Probl\u00e8mes avec l&rsquo;approche mono-repo<\/h2>\n<p>L&rsquo;utilisation d&rsquo;un d\u00e9p\u00f4t unique pour tout notre code pr\u00e9sente plusieurs inconv\u00e9nients.<\/p>\n<h3>Cycles de d\u00e9veloppement plus lents<\/h3>\n<p>Lorsque le code d&rsquo;une biblioth\u00e8que contient des modifications avec rupture, qui font \u00e9chouer les tests des biblioth\u00e8ques d\u00e9pendantes, le code doit \u00e9galement \u00eatre corrig\u00e9 avant de fusionner les modifications.<\/p>\n<p>Si ces biblioth\u00e8ques d\u00e9pendent d&rsquo;autres \u00e9quipes, qui sont occup\u00e9es \u00e0 travailler sur une autre t\u00e2che et ne sont pas en mesure (ou ne veulent pas) d&rsquo;adapter leur code pour \u00e9viter les changements de rupture et r\u00e9ussir les tests, le d\u00e9veloppement de la nouvelle fonctionnalit\u00e9 peut s&rsquo;arr\u00eater.<\/p>\n<p>De plus, le projet pourrait bien ne commencer \u00e0 avancer qu&rsquo;\u00e0 la vitesse de l&rsquo;\u00e9quipe la plus lente de l&rsquo;entreprise. Ce r\u00e9sultat pourrait frustrer les membres des \u00e9quipes les plus rapides, cr\u00e9ant des conditions pour qu&rsquo;ils veuillent quitter l&rsquo;entreprise.<\/p>\n<p>De plus, une biblioth\u00e8que devra \u00e9galement ex\u00e9cuter les tests pour toutes les autres biblioth\u00e8ques. Les <a href=\"https:\/\/kinsta.com\/fr\/blog\/test-vitesse-site-web\/\">autres tests \u00e0 ex\u00e9cuter<\/a>, plus le temps qu&rsquo;il faut pour les faire fonctionner, ce qui ralentit la fa\u00e7on dont nous pouvons rapidement it\u00e9rer sur notre code.<\/p>\n<h3>N\u00e9cessite le t\u00e9l\u00e9chargement de la base de code enti\u00e8re<\/h3>\n<p>Lorsque le mono-repo contient tout le code d&rsquo;une entreprise, il peut \u00eatre \u00e9norme, contenant des gigaoctets de donn\u00e9es. Pour contribuer \u00e0 n&rsquo;importe quelle biblioth\u00e8que h\u00e9berg\u00e9e \u00e0 l&rsquo;int\u00e9rieur, n&rsquo;importe qui aurait besoin d&rsquo;un t\u00e9l\u00e9chargement de l&rsquo;ensemble du r\u00e9f\u00e9rentiel.<\/p>\n<p>Traiter avec une vaste base de code implique une mauvaise utilisation de l&rsquo;espace sur nos disques durs et des interactions plus lentes avec celui-ci. Par exemple, les actions quotidiennes telles que l&rsquo;ex\u00e9cution <code>git status<\/code> ou la recherche dans la base de code avec une expression r\u00e9guli\u00e8re peuvent prendre plusieurs secondes voire plusieurs minutes de plus qu&rsquo;avec plusieurs d\u00e9p\u00f4ts.<\/p>\n<h3>Les biblioth\u00e8ques non modifi\u00e9es peuvent avoir une nouvelle version<\/h3>\n<p>Lorsque nous <a href=\"https:\/\/kinsta.com\/fr\/blog\/etiquettes-wordpress\/\">balisons<\/a> le mono-repo, tout le code est attribu\u00e9 au sein de la nouvelle balise. Si cette action d\u00e9clenche une nouvelle version, alors toutes les biblioth\u00e8ques h\u00e9berg\u00e9es dans le d\u00e9p\u00f4t seront nouvellement publi\u00e9es avec le num\u00e9ro de version de la balise, m\u00eame si nombre de ces biblioth\u00e8ques n&rsquo;ont subi aucun changement.<\/p>\n<h3>Le fork est plus difficile<\/h3>\n<p>Les projets open source doivent faciliter au maximum l&rsquo;implication des contributeurs. Avec plusieurs d\u00e9p\u00f4ts, les contributeurs peuvent se diriger directement vers le d\u00e9p\u00f4t sp\u00e9cifique du projet auquel ils souhaitent contribuer. Avec un mono-repo h\u00e9bergeant divers projets, cependant, les contributeurs doivent d&rsquo;abord se frayer un chemin dans le bon projet et devront comprendre comment leur contribution peut affecter tous les autres projets.<\/p>\n<h2>Qu&rsquo;est-ce que le multi-repo ?<\/h2>\n<p>L&rsquo;approche multi-repo utilise plusieurs d\u00e9p\u00f4t pour h\u00e9berger les multiples biblioth\u00e8ques ou services d&rsquo;un projet d\u00e9velopp\u00e9 par une entreprise. \u00c0 son extr\u00eame, il h\u00e9bergera chaque ensemble minimum de code r\u00e9utilisable ou de fonctionnalit\u00e9 autonome (telle qu&rsquo;un micro-service) sous son d\u00e9p\u00f4t.<\/p>\n<h2>Avantages du multi-repo<\/h2>\n<p>H\u00e9berger chaque biblioth\u00e8que ind\u00e9pendamment de toutes les autres offre une pl\u00e9thore d&rsquo;avantages.<\/p>\n<h3>Gestion des versions de biblioth\u00e8que ind\u00e9pendante<\/h3>\n<p>Lors du balisage d&rsquo;un d\u00e9p\u00f4t, l&rsquo;ensemble de sa base de code se voit attribuer la \u00ab nouvelle \u00bb balise. \u00c9tant donn\u00e9 que seul le code d&rsquo;une biblioth\u00e8que sp\u00e9cifique se trouve dans le d\u00e9p\u00f4t, la biblioth\u00e8que peut \u00eatre balis\u00e9e et versionn\u00e9e ind\u00e9pendamment de toutes les autres biblioth\u00e8ques h\u00e9berg\u00e9es ailleurs.<\/p>\n<p>Avoir une version ind\u00e9pendante pour chaque biblioth\u00e8que aide \u00e0 d\u00e9finir l&rsquo;arbre de d\u00e9pendances de l&rsquo;application, nous permettant de configurer la version de chaque biblioth\u00e8que \u00e0 utiliser.<\/p>\n<h3>Versions de service ind\u00e9pendantes<\/h3>\n<p>\u00c9tant donn\u00e9 que le d\u00e9p\u00f4t ne contient que le code d&rsquo;un service et rien d&rsquo;autre, il peut avoir son propre cycle de d\u00e9ploiement, ind\u00e9pendamment de tout progr\u00e8s r\u00e9alis\u00e9 sur les applications qui y acc\u00e8dent.<\/p>\n<p>Le service peut utiliser un cycle de publication rapide tel que la livraison continue (o\u00f9 le nouveau code est d\u00e9ploy\u00e9 apr\u00e8s avoir r\u00e9ussi tous les tests). Certaines biblioth\u00e8ques acc\u00e9dant au service peuvent utiliser un cycle de publication plus lent, comme celles qui ne produisent une nouvelle version qu&rsquo;une fois par semaine.<\/p>\n<h3>Aide \u00e0 d\u00e9finir le contr\u00f4le d&rsquo;acc\u00e8s dans toute l&rsquo;organisation<\/h3>\n<p>Seuls les membres de l&rsquo;\u00e9quipe impliqu\u00e9s dans le d\u00e9veloppement d&rsquo;une biblioth\u00e8que doivent \u00eatre ajout\u00e9s au d\u00e9p\u00f4t correspondant et t\u00e9l\u00e9charger son code. Par cons\u00e9quent, il existe une strat\u00e9gie de contr\u00f4le d&rsquo;acc\u00e8s implicite pour chaque couche de l&rsquo;<a href=\"https:\/\/kinsta.com\/fr\/blog\/application-surveillance-performance\/\">application<\/a> . Les personnes impliqu\u00e9es dans la biblioth\u00e8que se verront accorder des droits d&rsquo;\u00e9dition, et tout le monde n&rsquo;aura peut-\u00eatre pas acc\u00e8s au d\u00e9p\u00f4t. Ou ils peuvent recevoir des droits de lecture mais pas d&rsquo;\u00e9dition.<\/p>\n<h3>Permet aux \u00e9quipes de travailler de mani\u00e8re autonome<\/h3>\n<p>Les membres de l&rsquo;\u00e9quipe peuvent concevoir l&rsquo;architecture de la biblioth\u00e8que et impl\u00e9menter son code en travaillant ind\u00e9pendamment de toutes les autres \u00e9quipes. Ils peuvent prendre des d\u00e9cisions en fonction de ce que fait la biblioth\u00e8que dans le contexte g\u00e9n\u00e9ral sans \u00eatre affect\u00e9s par les exigences sp\u00e9cifiques d&rsquo;une \u00e9quipe ou d&rsquo;une application externe.<\/p>\n<h2>Probl\u00e8mes avec l&rsquo;approche multi-repo<\/h2>\n<p>L&rsquo;utilisation de plusieurs d\u00e9p\u00f4t peut entra\u00eener plusieurs probl\u00e8mes.<\/p>\n<h3>Les biblioth\u00e8ques doivent \u00eatre constamment resynchronis\u00e9es<\/h3>\n<p>Lorsqu&rsquo;une nouvelle version d&rsquo;une biblioth\u00e8que contenant des modifications de rupture est publi\u00e9e, les biblioth\u00e8ques d\u00e9pendant de cette biblioth\u00e8que devront \u00eatre adapt\u00e9es pour commencer \u00e0 utiliser la derni\u00e8re version. Si le cycle de publication de la biblioth\u00e8que est plus rapide que celui de ses biblioth\u00e8ques d\u00e9pendantes, elles pourraient rapidement se d\u00e9synchroniser les unes avec les autres.<\/p>\n<p>Les \u00e9quipes devront constamment se mettre \u00e0 jour pour utiliser les derni\u00e8res versions des autres \u00e9quipes. \u00c9tant donn\u00e9 que diff\u00e9rentes \u00e9quipes ont des priorit\u00e9s diff\u00e9rentes, cela peut parfois s&rsquo;av\u00e9rer difficile \u00e0 r\u00e9aliser.<\/p>\n<p>Par cons\u00e9quent, une \u00e9quipe incapable de rattraper son retard peut finir par s&rsquo;en tenir \u00e0 la version obsol\u00e8te de la biblioth\u00e8que dont elle d\u00e9pend. Ce r\u00e9sultat aura des implications sur l&rsquo;application (en termes de s\u00e9curit\u00e9, de vitesse et d&rsquo;autres consid\u00e9rations), et l&rsquo;\u00e9cart de d\u00e9veloppement entre les biblioth\u00e8ques pourrait ne faire que s&rsquo;\u00e9largir.<\/p>\n<h3>Peut fragmenter les \u00e9quipes<\/h3>\n<p>Lorsque diff\u00e9rentes \u00e9quipes n&rsquo;ont pas besoin d&rsquo;interagir, elles peuvent travailler dans leurs propres silos. \u00c0 long terme, cela pourrait amener les \u00e9quipes \u00e0 produire leurs sous-cultures au sein de l&rsquo;entreprise, par exemple en utilisant diff\u00e9rentes m\u00e9thodologies de programmation ou de gestion ou en utilisant diff\u00e9rents ensembles d&rsquo;outils de d\u00e9veloppement.<\/p>\n<p>Si un membre de l&rsquo;\u00e9quipe doit \u00e9ventuellement travailler dans une autre \u00e9quipe, il peut subir un choc culturel et apprendre une nouvelle fa\u00e7on de faire son travail.<\/p>\n<h2>Mono-repo vs multi-Repo : principales diff\u00e9rences<\/h2>\n<p>Les deux approches traitent finalement du m\u00eame objectif : la gestion de la base de code. Par cons\u00e9quent, ils doivent tous les deux r\u00e9soudre les m\u00eames d\u00e9fis, notamment la gestion des versions, la promotion de la <a href=\"https:\/\/kinsta.com\/fr\/blog\/microsoft-teams-vs-slack\/\">collaboration entre les membres de l&rsquo;\u00e9quipe<\/a>, la gestion des probl\u00e8mes, l&rsquo;ex\u00e9cution de tests, etc.<\/p>\n<p>Leur principale diff\u00e9rence concerne le timing des membres de l&rsquo;\u00e9quipe pour prendre des d\u00e9cisions : soit en amont pour le mono-repo, soit en aval pour le multi-repo.<\/p>\n<p>Analysons cette id\u00e9e plus en d\u00e9tail.<\/p>\n<p>\u00c9tant donn\u00e9 que toutes les biblioth\u00e8ques sont versionn\u00e9es ind\u00e9pendamment dans le multi-repo, une \u00e9quipe qui publie une biblioth\u00e8que avec des modifications importantes peut le faire en toute s\u00e9curit\u00e9 en attribuant un nouveau num\u00e9ro de version majeure \u00e0 la derni\u00e8re version. D&rsquo;autres groupes peuvent faire en sorte que leurs biblioth\u00e8ques d\u00e9pendantes s&rsquo;en tiennent \u00e0 l&rsquo;ancienne version et passent \u00e0 la nouvelle une fois leur code adapt\u00e9.<\/p>\n<p>Cette approche laisse la d\u00e9cision d&rsquo;adapter toutes les autres biblioth\u00e8ques \u00e0 chaque \u00e9quipe responsable, qui peut le faire \u00e0 tout moment. Si elles le font trop tard et que de nouvelles versions de biblioth\u00e8ques sont publi\u00e9es, il deviendra de plus en plus difficile de combler le foss\u00e9 entre les biblioth\u00e8ques.<\/p>\n<p>Par cons\u00e9quent, alors qu&rsquo;une \u00e9quipe peut it\u00e9rer rapidement et souvent sur son code, d&rsquo;autres \u00e9quipes peuvent s&rsquo;av\u00e9rer incapables de rattraper leur retard, produisant finalement des biblioth\u00e8ques qui divergent.<\/p>\n<p>D&rsquo;un autre c\u00f4t\u00e9, dans un environnement mono-repo, nous ne pouvons pas publier une nouvelle version d&rsquo;une biblioth\u00e8que qui casse une autre biblioth\u00e8que car leurs tests \u00e9choueront. Dans ce cas, la premi\u00e8re \u00e9quipe doit communiquer avec la deuxi\u00e8me \u00e9quipe pour int\u00e9grer les changements.<\/p>\n<p>Cette approche oblige les \u00e9quipes \u00e0 adapter compl\u00e8tement <a href=\"https:\/\/kinsta.com\/fr\/blog\/bibliotheques-javascript\/\">toutes les biblioth\u00e8ques<\/a> chaque fois qu&rsquo;un changement doit se produire pour une seule biblioth\u00e8que. Toutes les \u00e9quipes sont oblig\u00e9es de se parler et de trouver une solution ensemble.<\/p>\n<p>En cons\u00e9quence, la premi\u00e8re \u00e9quipe ne pourra pas it\u00e9rer aussi vite qu&rsquo;elle le souhaite, mais le code entre les diff\u00e9rentes biblioth\u00e8ques ne commencera \u00e0 aucun moment \u00e0 diverger.<\/p>\n<p>En r\u00e9sum\u00e9, l&rsquo;approche multi-repo peut aider \u00e0 cr\u00e9er une culture de \u00ab aller vite et de casser les choses \u00bb parmi les \u00e9quipes, o\u00f9 des \u00e9quipes ind\u00e9pendantes agiles peuvent produire leur sortie \u00e0 leur vitesse. Au lieu de cela, l&rsquo;approche mono-repo favorise une culture de sensibilisation et d&rsquo;attention, o\u00f9 les \u00e9quipes ne doivent pas \u00eatre laiss\u00e9es pour compte pour faire face \u00e0 un probl\u00e8me toutes seules.<\/p>\n<h2>Approche hybride poly-as-mono<\/h2>\n<p>Si nous ne pouvons pas d\u00e9cider s&rsquo;il faut utiliser les approches multi-repo ou mono-repo, il y a aussi l&rsquo;approche interm\u00e9diaire : utiliser plusieurs d\u00e9p\u00f4ts et employer un outil pour les maintenir synchronis\u00e9s, le faisant ressembler \u00e0 un mono-repo mais avec plus de flexibilit\u00e9.<\/p>\n<p><a href=\"https:\/\/github.com\/mateodelnorte\/meta\">Meta<\/a> est l&rsquo;un de ces outils. Il organise plusieurs d\u00e9p\u00f4ts sous des sous-r\u00e9pertoires et fournit une <a href=\"https:\/\/kinsta.com\/fr\/blog\/comment-utiliser-ssh\/\">interface de ligne de commande<\/a> qui ex\u00e9cute la m\u00eame commande sur tous simultan\u00e9ment.<\/p>\n<p>Un m\u00e9ta-repo contient les informations sur les d\u00e9p\u00f4ts qui composent un projet. Le clonage de ce d\u00e9p\u00f4t via m\u00e9ta clonera ensuite de mani\u00e8re r\u00e9cursive tous les d\u00e9p\u00f4ts n\u00e9cessaires, ce qui permettra aux nouveaux membres de l&rsquo;\u00e9quipe de commencer plus facilement \u00e0 travailler sur leurs projets imm\u00e9diatement.<\/p>\n<p>Pour cloner un m\u00e9ta-repo et tous ses d\u00e9p\u00f4ts multiples d\u00e9finis, nous devons ex\u00e9cuter les op\u00e9rations suivantes :<\/p>\n<pre><code class=\"language-bash\">meta git clone [meta repo url]\n<\/code><\/pre>\n<p>Meta ex\u00e9cutera un <code>git clone<\/code> pour chaque d\u00e9p\u00f4t et le placera dans un sous-r\u00e9pertoire :<\/p>\n<figure id=\"attachment_100243\" aria-describedby=\"caption-attachment-100243\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/07\/meta-cloning.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-100243 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/07\/meta-cloning-1024x755.png\" alt=\"Clonage d'un m\u00e9ta-projet. \" width=\"1024\" height=\"755\"><\/a><figcaption id=\"caption-attachment-100243\" class=\"wp-caption-text\">Clonage d&rsquo;un m\u00e9ta-projet. (Source de l&rsquo;image : <a href=\"https:\/\/github.com\/mateodelnorte\/meta\" target=\"_blank\" rel=\"noopener noreferrer\">github.com\/mateodelnorte\/meta<\/a>)<\/figcaption><\/figure>\n<p>A partir de l\u00e0, l&rsquo;ex\u00e9cution de la <code>meta exec<\/code> commande ex\u00e9cutera la commande sur chaque sous-r\u00e9pertoire. Par exemple, l&rsquo;ex\u00e9cution de<code>git checkout master<\/code> sur chaque d\u00e9p\u00f4t se fait comme ceci :<\/p>\n<pre><code class=\"language-bash\">meta exec \"git checkout master\"\n<\/code><\/pre>\n<h2>Approche hybride mono-as-poly<\/h2>\n<p>Une autre approche consiste \u00e0 g\u00e9rer le code via un mono-repo pour le d\u00e9veloppement, mais en copiant le code de chaque biblioth\u00e8que dans son d\u00e9p\u00f4t ind\u00e9pendant pour le d\u00e9ploiement.<\/p>\n<p>Cette strat\u00e9gie est r\u00e9pandue dans l&rsquo;\u00e9cosyst\u00e8me PHP car <a href=\"https:\/\/packagist.org\/\">Packagist<\/a> (le d\u00e9p\u00f4t principal de <a href=\"https:\/\/getcomposer.org\/\">Composer<\/a> ) n\u00e9cessite une <a href=\"https:\/\/kinsta.com\/fr\/blog\/description-url\/\">URL<\/a> de d\u00e9p\u00f4t public pour publier un package, et il n&rsquo;est pas possible d&rsquo;indiquer que le package se trouve dans un sous-r\u00e9pertoire du d\u00e9p\u00f4t.<\/p>\n<p>Compte tenu de la limitation de Packagist, les <a href=\"https:\/\/graphql-api.com\/blog\/extending-the-monorepo-builder\/\">projets PHP peuvent toujours utiliser un mono-repo pour le d\u00e9veloppement<\/a>, mais ils doivent utiliser l&rsquo;approche multi-repo pour le d\u00e9ploiement.<\/p>\n<p>Pour r\u00e9aliser cette conversion, nous pouvons <a href=\"https:\/\/stackoverflow.com\/questions\/359424\/detach-move-subdirectory-into-separate-git-repository\/17864475#17864475\">ex\u00e9cuter un script avec <\/a><code><a href=\"https:\/\/stackoverflow.com\/questions\/359424\/detach-move-subdirectory-into-separate-git-repository\/17864475#17864475\">git subtree split<\/a><\/code> Ou utiliser l&rsquo;un des outils disponibles qui ex\u00e9cutent la m\u00eame logique :<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/splitsh\/lite\">Git Subtree Splitter<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/dflydev\/git-subsplit\">Git Subsplit<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/symplify\/monorepo-split-github-action\">GitHub Action for Monorepo Split<\/a><\/li>\n<\/ul>\n<h2>Qui utilise mono-repo vs multi-repo<\/h2>\n<p>Plusieurs grandes entreprises technologiques privil\u00e9gient l&rsquo;approche mono-repo, tandis que d&rsquo;autres ont d\u00e9cid\u00e9 d&rsquo;utiliser la m\u00e9thode multi-repo.<\/p>\n<p><a href=\"https:\/\/cacm.acm.org\/magazines\/2016\/7\/204032-why-google-stores-billions-of-lines-of-code-in-a-single-repository\/fulltext\">Google<\/a>, <a href=\"https:\/\/www.facebook.com\/atscaleevents\/videos\/systems-scale-2019-monorepos-moving-fast-in-a-huge-repository\/457153524992062\/\">Facebook<\/a>, <a href=\"https:\/\/blog.twitter.com\/engineering\/en_us\/a\/2016\/the-release-of-pants-10\">Twitter<\/a> et <a href=\"https:\/\/www.youtube.com\/watch?v=lV8-1S28ycM\">Uber se<\/a> sont tous publiquement port\u00e9s garants de l&rsquo;approche mono-repo. Microsoft <a href=\"https:\/\/devblogs.microsoft.com\/bharry\/the-largest-git-repo-on-the-planet\/\">ex\u00e9cute le plus grand mono-repo Git de la plan\u00e8te<\/a>\u00a0 pour h\u00e9berger le code source du syst\u00e8me d&rsquo;exploitation Windows.<\/p>\n<p>De l&rsquo;autre c\u00f4t\u00e9, <a href=\"https:\/\/netflixtechblog.com\/towards-true-continuous-integration-distributed-repositories-and-dependencies-2a2e3108c051\">Netflix<\/a>, <a href=\"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3328433.3328435\">Amazon et Lyft<\/a> sont des soci\u00e9t\u00e9s c\u00e9l\u00e8bres utilisant l&rsquo;approche multi-repo.<\/p>\n<p>Du c\u00f4t\u00e9 hybride poly-as-mono, <a href=\"https:\/\/source.android.com\/setup\/create\/coding-tasks\">Android<\/a> met \u00e0 jour plusieurs d\u00e9p\u00f4ts, qui sont g\u00e9r\u00e9s comme un mono-repo.<\/p>\n<p>Du c\u00f4t\u00e9 hybride mono-as-poly, <a href=\"https:\/\/kinsta.com\/fr\/blog\/frameworks-php\/#symfony\">Symfony<\/a> conserve le code de tous ses composants dans un mono-repo. Ils le divisent en d\u00e9p\u00f4ts ind\u00e9pendants pour le d\u00e9ploiement (tels que <a href=\"https:\/\/github.com\/symfony\/dependency-injection\"><code>symfony\/dependency-injection<\/code><\/a> et <a href=\"https:\/\/github.com\/symfony\/event-dispatcher\"><code>symfony\/event-dispatcher<\/code><\/a>.)<\/p>\n<h2>Exemples de mono-repo et multi-repo<\/h2>\n<p>Le <a href=\"https:\/\/github.com\/WordPress\/WordPress\">compte WordPress sur GitHub<\/a> h\u00e9berge des exemples des approches mono-repo et multi-repo.<\/p>\n<p><a href=\"https:\/\/kinsta.com\/fr\/blog\/editeur-wordpress-gutenberg\/\">Gutenberg<\/a> , l&rsquo;\u00e9diteur de blocs WordPress, est compos\u00e9 de plusieurs dizaines de packages <a href=\"https:\/\/kinsta.com\/fr\/blog\/qu-est-javascript\/\">JavaScript<\/a>. Ces packages sont tous h\u00e9berg\u00e9s sur le <a href=\"https:\/\/github.com\/WordPress\/gutenberg\" target=\"_blank\" rel=\"noopener noreferrer\">mono-repo<\/a> <a href=\"https:\/\/github.com\/WordPress\/gutenberg\" target=\"_blank\" rel=\"noopener noreferrer\"><code>WordPress\/gutenberg<\/code><\/a> et g\u00e9r\u00e9s via <a href=\"https:\/\/github.com\/lerna\/lerna\">Lerna<\/a> pour faciliter leur publication dans le d\u00e9p\u00f4t <a href=\"https:\/\/kinsta.com\/fr\/blog\/qu-est-ce-que-node-js\/#what-is-npm\">npm<\/a>.<\/p>\n<p><a href=\"https:\/\/wordpress.org\/news\/2021\/05\/welcome-to-openverse\/\">Openverse<\/a>, le moteur de recherche de m\u00e9dias sous licence ouverte, <a href=\"https:\/\/github.com\/WordPress\/openverse\/blob\/918b7cf1b6323291ab16c1ad5a27f3733709ec17\/README.md#openverse\">h\u00e9berge ses principales parties<\/a> dans des d\u00e9p\u00f4ts ind\u00e9pendants : <a href=\"https:\/\/github.com\/wordpress\/openverse-frontend\">Front-end<\/a>, <a href=\"https:\/\/github.com\/wordpress\/openverse-catalog\">Catalog<\/a> et <a href=\"https:\/\/github.com\/wordpress\/openverse-api\">API<\/a>.<\/p>\n<h2>Mono-repo vs multi-repo : comment choisir ?<\/h2>\n<p>Comme pour de nombreux probl\u00e8mes de d\u00e9veloppement, il n&rsquo;y a pas de r\u00e9ponse pr\u00e9d\u00e9finie sur l&rsquo;approche \u00e0 utiliser. Diff\u00e9rentes entreprises et projets b\u00e9n\u00e9ficieront d&rsquo;une strat\u00e9gie ou d&rsquo;une autre en fonction de leurs conditions uniques, telles que :<\/p>\n<ul>\n<li>Quelle est la taille de la base de code ? Contient-il des gigaoctets de donn\u00e9es ?<\/li>\n<li>Combien de personnes travailleront sur la base de code ? Est-ce environ 10, 100 ou 1 000 ?<\/li>\n<li>Combien y aura-t-il de paquets ? Est-ce environ 10, 100 ou 1 000 ?<\/li>\n<li>Sur combien de paquets l&rsquo;\u00e9quipe doit-elle travailler \u00e0 un moment donn\u00e9 ?<\/li>\n<li>Dans quelle mesure les paquets sont-ils \u00e9troitement li\u00e9s ?<\/li>\n<li>Diff\u00e9rents langages de programmation sont-ils impliqu\u00e9s ? N\u00e9cessitent-ils l&rsquo; installation d&rsquo; un <a href=\"https:\/\/kinsta.com\/fr\/blog\/logiciel-cms\/\">logiciel<\/a> particulier ou d&rsquo;un mat\u00e9riel sp\u00e9cial pour fonctionner ?<\/li>\n<li>Combien d&rsquo;outils de d\u00e9ploiement sont n\u00e9cessaires et quelle est leur complexit\u00e9 \u00e0 mettre en place ?<\/li>\n<li>Quelle est la culture dans l&rsquo;entreprise ? Les \u00e9quipes sont-elles encourag\u00e9es \u00e0 collaborer ?<\/li>\n<li>Quels <a href=\"https:\/\/kinsta.com\/fr\/blog\/outils-developpement-web\/\">outils et technologies<\/a> les \u00e9quipes savent-elles utiliser ?<\/li>\n<\/ul>\n\n<h2><strong>Sommaire<\/strong><\/h2>\n<p>Il existe deux strat\u00e9gies principales pour l&rsquo;h\u00e9bergement et la gestion du code : mono-repo ou multi-repo. L&rsquo;approche mono-repo consiste \u00e0 stocker le code de diff\u00e9rentes biblioth\u00e8ques ou projets &#8211; et m\u00eame tout le code d&rsquo;une entreprise &#8211; dans un seul d\u00e9p\u00f4t. Et le syst\u00e8me multi-repo divise le code en unit\u00e9s, telles que des biblioth\u00e8ques ou des services, et conserve leur code h\u00e9berg\u00e9 dans des d\u00e9p\u00f4t ind\u00e9pendants.<\/p>\n<p><em>Vous avez des questions sur mono-repo ou multi-repo ? Faites le nous savoir dans la section des commentaires !<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il existe deux strat\u00e9gies principales pour l&rsquo; h\u00e9bergement et la gestion du code via Git : mono-repo vs multi-repo. Les deux approches ont leurs avantages et &#8230;<\/p>\n","protected":false},"author":196,"featured_media":48052,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[290,476],"topic":[1012],"class_list":["post-48049","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-git","tag-github","topic-conseils-techniques"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Mono-repo vs Multi-Repo : avantages et inconv\u00e9nients des strat\u00e9gies de r\u00e9f\u00e9rentiel de code<\/title>\n<meta name=\"description\" content=\"Mono-repo ou multi-repo - lequel est le meilleur ? Il y a des avantages et des inconv\u00e9nients \u00e0 chacune de ces approches. D\u00e9couvrez ici les avantages et les inconv\u00e9nients de chaque approche.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mono-repo vs Multi-repo : Avantages et inconv\u00e9nients des strat\u00e9gies de d\u00e9p\u00f4t de code\" \/>\n<meta property=\"og:description\" content=\"Mono-repo ou multi-repo - lequel est le meilleur ? Il y a des avantages et des inconv\u00e9nients \u00e0 chacune de ces approches. D\u00e9couvrez ici les avantages et les inconv\u00e9nients de chaque approche.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstafrance\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-08-25T15:21:11+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-12T14:51:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/08\/monorepo-vs-multi-repo.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Leonardo Losoviz\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Mono-repo ou multi-repo - lequel est le meilleur ? Il y a des avantages et des inconv\u00e9nients \u00e0 chacune de ces approches. D\u00e9couvrez ici les avantages et les inconv\u00e9nients de chaque approche.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/08\/monorepo-vs-multi-repo.jpeg\" \/>\n<meta name=\"twitter:creator\" content=\"@losoviz\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Leonardo Losoviz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/\"},\"author\":{\"name\":\"Leonardo Losoviz\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/c382de1885cc21b079ec1e71d7faf238\"},\"headline\":\"Mono-repo vs Multi-repo : Avantages et inconv\u00e9nients des strat\u00e9gies de d\u00e9p\u00f4t de code\",\"datePublished\":\"2021-08-25T15:21:11+00:00\",\"dateModified\":\"2023-09-12T14:51:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/\"},\"wordCount\":3469,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/08\/monorepo-vs-multi-repo.jpeg\",\"keywords\":[\"git\",\"GitHub\"],\"articleSection\":[\"D\u00e9veloppement web\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/\",\"name\":\"Mono-repo vs Multi-Repo : avantages et inconv\u00e9nients des strat\u00e9gies de r\u00e9f\u00e9rentiel de code\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/08\/monorepo-vs-multi-repo.jpeg\",\"datePublished\":\"2021-08-25T15:21:11+00:00\",\"dateModified\":\"2023-09-12T14:51:50+00:00\",\"description\":\"Mono-repo ou multi-repo - lequel est le meilleur ? Il y a des avantages et des inconv\u00e9nients \u00e0 chacune de ces approches. D\u00e9couvrez ici les avantages et les inconv\u00e9nients de chaque approche.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/08\/monorepo-vs-multi-repo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/08\/monorepo-vs-multi-repo.jpeg\",\"width\":1460,\"height\":730,\"caption\":\"monorepo-vs-multi-repo\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Conseils techniques\",\"item\":\"https:\/\/kinsta.com\/fr\/sujets\/conseils-techniques\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Mono-repo vs Multi-repo : Avantages et inconv\u00e9nients des strat\u00e9gies de d\u00e9p\u00f4t de code\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/fr\/#website\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/c382de1885cc21b079ec1e71d7faf238\",\"name\":\"Leonardo Losoviz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b28085726ee66e49f08be16ad668efd5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b28085726ee66e49f08be16ad668efd5?s=96&d=mm&r=g\",\"caption\":\"Leonardo Losoviz\"},\"description\":\"Leo writes about innovative web development trends, mostly concerning PHP, WordPress and GraphQL. You can find him at leoloso.com and twitter.com\/losoviz.\",\"sameAs\":[\"https:\/\/leoloso.com\",\"https:\/\/x.com\/losoviz\",\"https:\/\/www.youtube.com\/@GatoGraphQL\"],\"url\":\"https:\/\/kinsta.com\/fr\/blog\/author\/leonardolosoviz\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Mono-repo vs Multi-Repo : avantages et inconv\u00e9nients des strat\u00e9gies de r\u00e9f\u00e9rentiel de code","description":"Mono-repo ou multi-repo - lequel est le meilleur ? Il y a des avantages et des inconv\u00e9nients \u00e0 chacune de ces approches. D\u00e9couvrez ici les avantages et les inconv\u00e9nients de chaque approche.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/","og_locale":"fr_FR","og_type":"article","og_title":"Mono-repo vs Multi-repo : Avantages et inconv\u00e9nients des strat\u00e9gies de d\u00e9p\u00f4t de code","og_description":"Mono-repo ou multi-repo - lequel est le meilleur ? Il y a des avantages et des inconv\u00e9nients \u00e0 chacune de ces approches. D\u00e9couvrez ici les avantages et les inconv\u00e9nients de chaque approche.","og_url":"https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2021-08-25T15:21:11+00:00","article_modified_time":"2023-09-12T14:51:50+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/08\/monorepo-vs-multi-repo.jpeg","type":"image\/jpeg"}],"author":"Leonardo Losoviz","twitter_card":"summary_large_image","twitter_description":"Mono-repo ou multi-repo - lequel est le meilleur ? Il y a des avantages et des inconv\u00e9nients \u00e0 chacune de ces approches. D\u00e9couvrez ici les avantages et les inconv\u00e9nients de chaque approche.","twitter_image":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/08\/monorepo-vs-multi-repo.jpeg","twitter_creator":"@losoviz","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Leonardo Losoviz","Dur\u00e9e de lecture estim\u00e9e":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/"},"author":{"name":"Leonardo Losoviz","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/c382de1885cc21b079ec1e71d7faf238"},"headline":"Mono-repo vs Multi-repo : Avantages et inconv\u00e9nients des strat\u00e9gies de d\u00e9p\u00f4t de code","datePublished":"2021-08-25T15:21:11+00:00","dateModified":"2023-09-12T14:51:50+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/"},"wordCount":3469,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/08\/monorepo-vs-multi-repo.jpeg","keywords":["git","GitHub"],"articleSection":["D\u00e9veloppement web"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/","url":"https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/","name":"Mono-repo vs Multi-Repo : avantages et inconv\u00e9nients des strat\u00e9gies de r\u00e9f\u00e9rentiel de code","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/08\/monorepo-vs-multi-repo.jpeg","datePublished":"2021-08-25T15:21:11+00:00","dateModified":"2023-09-12T14:51:50+00:00","description":"Mono-repo ou multi-repo - lequel est le meilleur ? Il y a des avantages et des inconv\u00e9nients \u00e0 chacune de ces approches. D\u00e9couvrez ici les avantages et les inconv\u00e9nients de chaque approche.","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/08\/monorepo-vs-multi-repo.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/08\/monorepo-vs-multi-repo.jpeg","width":1460,"height":730,"caption":"monorepo-vs-multi-repo"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/fr\/blog\/mono-repo-vs-multi-repo\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Conseils techniques","item":"https:\/\/kinsta.com\/fr\/sujets\/conseils-techniques\/"},{"@type":"ListItem","position":3,"name":"Mono-repo vs Multi-repo : Avantages et inconv\u00e9nients des strat\u00e9gies de d\u00e9p\u00f4t de code"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/fr\/#website","url":"https:\/\/kinsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/c382de1885cc21b079ec1e71d7faf238","name":"Leonardo Losoviz","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/b28085726ee66e49f08be16ad668efd5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b28085726ee66e49f08be16ad668efd5?s=96&d=mm&r=g","caption":"Leonardo Losoviz"},"description":"Leo writes about innovative web development trends, mostly concerning PHP, WordPress and GraphQL. You can find him at leoloso.com and twitter.com\/losoviz.","sameAs":["https:\/\/leoloso.com","https:\/\/x.com\/losoviz","https:\/\/www.youtube.com\/@GatoGraphQL"],"url":"https:\/\/kinsta.com\/fr\/blog\/author\/leonardolosoviz\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/48049","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/users\/196"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/comments?post=48049"}],"version-history":[{"count":9,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/48049\/revisions"}],"predecessor-version":[{"id":72736,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/48049\/revisions\/72736"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48049\/translations\/en"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48049\/translations\/de"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48049\/translations\/fr"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48049\/translations\/it"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48049\/translations\/es"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48049\/translations\/pt"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48049\/translations\/nl"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48049\/translations\/se"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48049\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/48052"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=48049"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=48049"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=48049"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}