{"id":43210,"date":"2021-08-25T10:58:33","date_gmt":"2021-08-25T08:58:33","guid":{"rendered":"https:\/\/kinsta.com\/?p=100242"},"modified":"2023-09-19T07:50:24","modified_gmt":"2023-09-19T06:50:24","slug":"monorepo-vs-multi-repo","status":"publish","type":"post","link":"https:\/\/kinsta.com\/de\/blog\/monorepo-vs-multi-repo\/","title":{"rendered":"Monorepo vs. Multi-Repo: Vor- und Nachteile von Code-Repository-Strategien"},"content":{"rendered":"<p>Es gibt zwei Hauptstrategien f\u00fcr das <a href=\"https:\/\/kinsta.com\/de\/preise\/\">Hosten<\/a> und Verwalten von Code \u00fcber Git: Monorepo vs. Multi-Repo. Beide Ans\u00e4tze haben ihre Vor- und Nachteile.<\/p>\n<p>Wir k\u00f6nnen beide Ans\u00e4tze f\u00fcr jede Codebasis in jeder Sprache verwenden. Du kannst jede dieser Strategien f\u00fcr Projekte verwenden, die eine Handvoll bis tausende von <a href=\"https:\/\/kinsta.com\/de\/blog\/javascript-bibliotheken\/\">Bibliotheken<\/a> enthalten. Auch wenn es sich um ein paar Teammitglieder oder Hunderte handelt, oder du privaten oder Open Source Code hosten willst, kannst du dich f\u00fcr Monorepo oder Multi-Repo entscheiden, abh\u00e4ngig von verschiedenen Faktoren.<\/p>\n<p>Was sind die Vor- und Nachteile der beiden Ans\u00e4tze? Wann sollte man das eine oder das andere verwenden? Lass es uns herausfinden!<\/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>Was sind Repos?<\/h2>\n<p>Ein Repo (kurz f\u00fcr Repository) ist ein Speicher f\u00fcr alle \u00c4nderungen und Dateien eines Projekts, der es Entwicklern erm\u00f6glicht, die Assets des Projekts w\u00e4hrend der gesamten Entwicklungsphase zu &#8222;versionskontrollieren&#8220;.<\/p>\n<p>Wir beziehen uns in der Regel auf <a href=\"https:\/\/kinsta.com\/de\/docs\/wordpress-hosting\/seiten-verwaltung\/git\/\">Git<\/a> Repositories (wie sie von <a href=\"https:\/\/kinsta.com\/de\/blog\/git-vs-github\/\">GitHub<\/a>, <a href=\"https:\/\/kinsta.com\/de\/blog\/gitlab-vs-github\/\">GitLab<\/a> oder <a href=\"https:\/\/kinsta.com\/de\/blog\/bitbucket-vs-github\/\">Bitbucket<\/a> bereitgestellt werden), aber das Konzept gilt auch f\u00fcr andere Versionskontrollsysteme (wie Mercurial).<\/p>\n\n<h2>Was ist ein Monorepo?<\/h2>\n<p>Der Monorepo-Ansatz verwendet ein einziges <a href=\"https:\/\/kinsta.com\/de\/blog\/bitbucket-vs-github\/\">Repository<\/a>, um den gesamten Code f\u00fcr die verschiedenen Bibliotheken oder Dienste zu hosten, aus denen die Projekte eines Unternehmens bestehen. Im Extremfall wird die gesamte Codebasis eines Unternehmens &#8211; die sich \u00fcber verschiedene Projekte erstreckt und in unterschiedlichen Sprachen kodiert ist &#8211; in einem einzigen Repository gehostet.<\/p>\n<h2>Vorteile von Monorepo<\/h2>\n<p>Das Hosten der gesamten Codebase in einem einzigen Repository bietet folgende Vorteile.<\/p>\n<h3>Senkt die Einstiegsh\u00fcrden<\/h3>\n<p>Wenn neue Mitarbeiter in einem Unternehmen anfangen zu arbeiten, m\u00fcssen sie den Code herunterladen und die ben\u00f6tigten Tools installieren, um mit ihren Aufgaben beginnen zu k\u00f6nnen. Nehmen wir an, das Projekt ist \u00fcber viele Repositories verstreut und jedes hat seine eigenen Installationsanweisungen und ben\u00f6tigten Tools. In diesem Fall wird die anf\u00e4ngliche Einrichtung komplex sein und meistens ist die Dokumentation nicht vollst\u00e4ndig, sodass die neuen Teammitglieder ihre Kollegen um Hilfe bitten m\u00fcssen.<\/p>\n<p>Ein Monorepo vereinfacht die Sache. Da es einen einzigen Ort gibt, an dem der gesamte Code und die <a href=\"https:\/\/kinsta.com\/de\/docs\/devkinsta\/\">Dokumentation<\/a> zu finden sind, kannst du die Ersteinrichtung rationalisieren.<\/p>\n<h3>Zentral gelegenes Code Management<\/h3>\n<p>Ein einziges Repository zu haben, gibt allen Entwicklern Einblick in den gesamten Code. Es vereinfacht das Code Management, da wir einen einzigen Issue Tracker nutzen k\u00f6nnen, um alle Issues w\u00e4hrend des gesamten Lebenszyklus der Anwendung zu beobachten.<\/p>\n<p>Diese Eigenschaften sind zum Beispiel wertvoll, wenn ein Problem zwei (oder mehr) Child-Bibliotheken umspannt und der Fehler in der abh\u00e4ngigen Bibliothek existiert. Mit mehreren Repositories kann es eine Herausforderung sein, die <a href=\"https:\/\/kinsta.com\/de\/blog\/element-untersuchen\/\">Stelle im Code<\/a> zu finden, an der das Problem auftritt.<\/p>\n<p>Dar\u00fcber hinaus m\u00fcssten wir herausfinden, welches Repository wir f\u00fcr die Erstellung des Problems verwenden und dann Mitglieder anderer Teams einladen und cross-taggen, um bei der L\u00f6sung des Problems zu helfen.<\/p>\n<p>Mit einem Monorepo ist es jedoch einfacher, sowohl Codeprobleme zu lokalisieren als auch gemeinsam an der Fehlerbehebung zu arbeiten.<\/p>\n<h3>Schmerzfreie anwendungsweite Refactorings<\/h3>\n<p>Wenn du ein anwendungsweites Refactoring des Codes durchf\u00fchrst, sind mehrere Bibliotheken betroffen. Wenn du sie \u00fcber mehrere Repositories hostest, kann es eine Herausforderung sein, all die verschiedenen Pull Requests zu verwalten, um sie miteinander synchron zu halten.<\/p>\n<p>Ein Monorepo macht es einfach, alle \u00c4nderungen am Code f\u00fcr alle Bibliotheken durchzuf\u00fchren und sie unter einem einzigen Pull Request einzureichen.<\/p>\n<h3>Schwieriger, benachbarte Funktionalit\u00e4ten zu brechen<\/h3>\n<p>Mit dem Monorepo k\u00f6nnen wir alle Tests f\u00fcr alle Bibliotheken so einrichten, dass sie immer dann ausgef\u00fchrt werden, wenn eine einzelne Bibliothek ver\u00e4ndert wird. Dadurch ist die Wahrscheinlichkeit, dass eine \u00c4nderung in einigen Bibliotheken nachteilige Auswirkungen auf andere Bibliotheken hat, minimiert.<\/p>\n<h3>Teams teilen Entwicklungskultur<\/h3>\n<p>Auch wenn es nicht unm\u00f6glich ist, wird es mit einem Monorepo-Ansatz schwierig, einzigartige Subkulturen zwischen verschiedenen Teams zu inspirieren. Da sie sich das gleiche Repository teilen, werden sie h\u00f6chstwahrscheinlich auch die gleichen <a href=\"https:\/\/kinsta.com\/de\/blog\/beste-programmiersprache-lernen-sollte\/\">Programmier-<\/a> und Verwaltungsmethoden verwenden und die gleichen <a href=\"https:\/\/kinsta.com\/de\/blog\/apm-tools\/\">Tools<\/a> einsetzen.<\/p>\n<h2>Probleme mit dem Monorepo-Ansatz<\/h2>\n<p>Die Verwendung eines einzigen Repositorys f\u00fcr unseren gesamten Code hat mehrere Nachteile.<\/p>\n<h3>Langsamere Entwicklungszyklen<\/h3>\n<p>Wenn der Code f\u00fcr eine Bibliothek bahnbrechende \u00c4nderungen enth\u00e4lt, die dazu f\u00fchren, dass die Tests f\u00fcr abh\u00e4ngige Bibliotheken fehlschlagen, muss der Code ebenfalls korrigiert werden, bevor die \u00c4nderungen zusammengef\u00fchrt werden.<\/p>\n<p>Wenn diese Bibliotheken von anderen Teams abh\u00e4ngen, die mit einer anderen Aufgabe besch\u00e4ftigt sind und nicht in der Lage (oder willens) sind, ihren Code so anzupassen, dass die \u00c4nderungen nicht durchschlagen und die Tests bestehen, kann die Entwicklung des neuen Features ins Stocken geraten.<\/p>\n<p>Au\u00dferdem kann es sein, dass das Projekt nur mit der Geschwindigkeit des langsamsten Teams im Unternehmen vorankommt. Dieses Ergebnis k\u00f6nnte die Mitglieder der schnellsten Teams frustrieren und die Voraussetzungen daf\u00fcr schaffen, dass sie das Unternehmen verlassen wollen.<\/p>\n<p>Dar\u00fcber hinaus muss eine Bibliothek auch die Tests f\u00fcr alle anderen Bibliotheken ausf\u00fchren. Je <a href=\"https:\/\/kinsta.com\/de\/blog\/webseiten-qeschwindigkeitstest\/\">mehr Tests ausgef\u00fchrt<\/a> werden m\u00fcssen, desto mehr Zeit braucht es, um sie auszuf\u00fchren, was die Iterationsgeschwindigkeit unseres Codes verlangsamt.<\/p>\n<h3>Erfordert den Download der gesamten Codebase<\/h3>\n<p>Wenn die Monorepo den gesamten Code einer Firma enth\u00e4lt, kann sie riesig sein und Gigabytes an Daten enthalten. Um zu einer darin gehosteten Bibliothek beizutragen, w\u00fcrde jeder einen Download des gesamten Repositorys ben\u00f6tigen.<\/p>\n<p>Der Umgang mit einer riesigen Codebasis impliziert eine schlechte Nutzung des Platzes auf unseren Festplatten und langsamere Interaktionen mit ihr. Zum Beispiel k\u00f6nnen allt\u00e4gliche Aktionen wie das Ausf\u00fchren von <code>git status<\/code> oder die Suche in der Codebase mit einer Regex viele Sekunden oder sogar Minuten l\u00e4nger dauern als bei mehreren Repos.<\/p>\n<h3>Unver\u00e4nderte Bibliotheken k\u00f6nnen neu versioniert sein<\/h3>\n<p>Wenn wir das Monorepo <a href=\"https:\/\/kinsta.com\/de\/blog\/wordpress-tags\/\">taggen<\/a>, wird der gesamte Code darin mit dem neuen Tag versehen. Wenn diese Aktion ein neues Release ausl\u00f6st, dann werden alle Bibliotheken, die im Repository gehostet werden, mit der Versionsnummer aus dem Tag neu ver\u00f6ffentlicht, auch wenn viele dieser Bibliotheken vielleicht gar nicht ver\u00e4ndert wurden.<\/p>\n<h3>Forking ist schwieriger<\/h3>\n<p>Open Source Projekte m\u00fcssen es den Mitwirkenden so einfach wie m\u00f6glich machen, sich zu beteiligen. Mit mehreren Repositories k\u00f6nnen Mitwirkende direkt zu dem spezifischen Repository f\u00fcr das Projekt gehen, zu dem sie beitragen wollen. Bei einem Monorepo, das verschiedene Projekte hostet, m\u00fcssen sich die Mitwirkenden jedoch erst in das richtige Projekt einfinden und verstehen, wie sich ihr Beitrag auf alle anderen Projekte auswirken kann.<\/p>\n<h2>Was ist Multi-Repo?<\/h2>\n<p>Der Multi-Repo-Ansatz verwendet mehrere Repositories, um die verschiedenen Bibliotheken oder Dienste eines Projekts zu hosten, das von einer Firma entwickelt wird. Im Extremfall hostet es jedes minimale Set an wiederverwendbarem Code oder eigenst\u00e4ndiger Funktionalit\u00e4t (wie z.B. einen Microservice) unter seinem Repository.<\/p>\n<h2>Vorteile von Multi-Repo<\/h2>\n<p>Das Hosten jeder Bibliothek unabh\u00e4ngig von allen anderen bietet eine F\u00fclle von Vorteilen.<\/p>\n<h3>Unabh\u00e4ngige Bibliotheksversionierung<\/h3>\n<p>Beim Taggen eines Repositories wird dessen gesamte Codebase mit dem &#8222;new&#8220; Tag versehen. Da sich nur der Code einer bestimmten Bibliothek im Repository befindet, kann die Bibliothek unabh\u00e4ngig von allen anderen Bibliotheken, die anderswo gehostet werden, getaggt und versioniert werden.<\/p>\n<p>Eine unabh\u00e4ngige Version f\u00fcr jede Bibliothek zu haben, hilft dabei, den Abh\u00e4ngigkeitsbaum f\u00fcr die Anwendung zu definieren, was es uns erlaubt, zu konfigurieren, welche Version jeder Bibliothek verwendet werden soll.<\/p>\n<h3>Unabh\u00e4ngige Service Releases<\/h3>\n<p>Da das Repository nur den Code f\u00fcr einen Dienst enth\u00e4lt und sonst nichts, kann es seinen eigenen Bereitstellungszyklus haben, unabh\u00e4ngig von den Fortschritten der Anwendungen, die auf es zugreifen.<\/p>\n<p>Der Dienst kann einen schnellen Release-Zyklus verwenden, wie z.B. Continuous Delivery (wo neuer Code eingesetzt wird, nachdem er alle Tests bestanden hat). Einige Bibliotheken, die auf den Service zugreifen, k\u00f6nnen einen langsameren Release-Zyklus verwenden, wie z.B. solche, die nur einmal in der Woche ein neues Release produzieren.<\/p>\n<h3>Hilft bei der Definition der Zugriffskontrolle in der gesamten Organisation<\/h3>\n<p>Nur die Teammitglieder, die an der Entwicklung einer Bibliothek beteiligt sind, m\u00fcssen zum entsprechenden Repository hinzugef\u00fcgt werden und den Code herunterladen. Als Ergebnis gibt es eine implizite Zugriffskontrollstrategie f\u00fcr jede Schicht in der <a href=\"https:\/\/kinsta.com\/de\/blog\/application-performance-monitoring\/\">Anwendung<\/a>. Diejenigen, die mit der Bibliothek zu tun haben, erhalten Bearbeitungsrechte und alle anderen d\u00fcrfen keinen Zugriff auf das Repository erhalten. Oder sie erhalten Leserechte, aber keine Editierrechte.<\/p>\n<h3>Erm\u00f6glicht Teams autonomes Arbeiten<\/h3>\n<p>Die Teammitglieder k\u00f6nnen die Architektur der Bibliothek entwerfen und den Code implementieren, w\u00e4hrend sie isoliert von allen anderen Teams arbeiten. Sie k\u00f6nnen Entscheidungen treffen, die darauf basieren, was die Bibliothek im allgemeinen Kontext tut, ohne von den spezifischen Anforderungen eines externen Teams oder einer Anwendung beeinflusst zu werden.<\/p>\n<h2>Probleme mit dem Multi-Repo-Ansatz<\/h2>\n<p>Die Verwendung von mehreren Repositories kann zu verschiedenen Problemen f\u00fchren.<\/p>\n<h3>Bibliotheken m\u00fcssen st\u00e4ndig neu synchronisiert werden<\/h3>\n<p>Wenn eine neue Version einer Bibliothek ver\u00f6ffentlicht wird, die bahnbrechende \u00c4nderungen enth\u00e4lt, m\u00fcssen Bibliotheken, die von dieser Bibliothek abh\u00e4ngig sind, angepasst werden, um die neueste Version zu verwenden. Wenn der Release-Zyklus der Bibliothek schneller ist als der ihrer abh\u00e4ngigen Bibliotheken, k\u00f6nnen sie schnell aus dem Takt geraten.<\/p>\n<p>Die Teams m\u00fcssen dann st\u00e4ndig aufholen, um die neuesten Versionen der anderen Teams zu nutzen. Da verschiedene Teams unterschiedliche Priorit\u00e4ten haben, kann sich dies manchmal als m\u00fchsam erweisen.<\/p>\n<p>Infolgedessen kann ein Team, das nicht in der Lage ist, den R\u00fcckstand aufzuholen, an der veralteten Version der Bibliothek, auf die es angewiesen ist, festhalten. Dieses Ergebnis wird Auswirkungen auf die Anwendung haben (in Bezug auf Sicherheit, Geschwindigkeit und andere \u00dcberlegungen), und die L\u00fccke in der Entwicklung zwischen den Bibliotheken kann nur noch gr\u00f6\u00dfer werden.<\/p>\n<h3>Kann Teams fragmentieren<\/h3>\n<p>Wenn verschiedene Teams nicht interagieren m\u00fcssen, k\u00f6nnen sie in ihren eigenen Silos arbeiten. Langfristig kann dies dazu f\u00fchren, dass Teams ihre eigenen Subkulturen innerhalb des Unternehmens bilden, wie z.B. unterschiedliche Programmier- oder Managementmethoden oder unterschiedliche Entwicklungstools.<\/p>\n<p>Wenn ein Teammitglied irgendwann in einem anderen Team arbeiten muss, erleidet es vielleicht einen kleinen Kulturschock und muss eine neue Art und Weise lernen, seine Arbeit zu erledigen.<\/p>\n<h2>Monorepo vs. Multi-Repo: Prim\u00e4re Unterschiede<\/h2>\n<p>Beide Ans\u00e4tze besch\u00e4ftigen sich letztlich mit dem gleichen Ziel: der Verwaltung der Codebase. Daher m\u00fcssen beide die gleichen Herausforderungen l\u00f6sen, einschlie\u00dflich des Release-Managements, der F\u00f6rderung der <a href=\"https:\/\/kinsta.com\/de\/blog\/microsoft-teams-vs-slack\/\">Zusammenarbeit zwischen den Teammitgliedern<\/a>, dem Umgang mit Problemen, der Durchf\u00fchrung von Tests und anderen.<\/p>\n<p>Der Hauptunterschied besteht darin, dass die Teammitglieder Entscheidungen treffen m\u00fcssen: Entweder im Voraus f\u00fcr Monorepo oder im Nachhinein f\u00fcr Multi-Repo.<\/p>\n<p>Lass uns diese Idee im Detail analysieren.<\/p>\n<p>Da alle Bibliotheken im Multi-Repo unabh\u00e4ngig voneinander versioniert werden, kann ein Team, das eine Bibliothek mit brechenden \u00c4nderungen ver\u00f6ffentlicht, es sicher tun, indem es der neuesten Version eine neue Hauptversionsnummer zuweist. Andere Gruppen k\u00f6nnen ihre abh\u00e4ngigen Bibliotheken bei der alten Version bleiben lassen und auf die neue wechseln, sobald ihr Code angepasst wurde.<\/p>\n<p>Dieser Ansatz \u00fcberl\u00e4sst die Entscheidung, wann alle anderen Bibliotheken angepasst werden sollen, jedem verantwortlichen Team, das es zu jeder Zeit tun kann. Wenn sie es zu sp\u00e4t tun und neue Bibliotheksversionen ver\u00f6ffentlicht werden, wird es immer schwieriger, die L\u00fccke zwischen den Bibliotheken zu schlie\u00dfen.<\/p>\n<p>Infolgedessen kann ein Team schnell und oft an seinem Code iterieren, w\u00e4hrend andere Teams nicht in der Lage sind, aufzuholen, was letztendlich zu divergierenden Bibliotheken f\u00fchrt.<\/p>\n<p>Auf der anderen Seite k\u00f6nnen wir in einer Monorepo-Umgebung keine neue Version einer Bibliothek ver\u00f6ffentlichen, die eine andere Bibliothek kaputt macht, da deren Tests fehlschlagen werden. In diesem Fall muss das erste Team mit dem zweiten Team kommunizieren, um die \u00c4nderungen einzuarbeiten.<\/p>\n<p>Dieser Ansatz zwingt die Teams dazu, <a href=\"https:\/\/kinsta.com\/de\/blog\/javascript-bibliotheken\/\">alle Bibliotheken<\/a> zusammen anzupassen, wenn eine \u00c4nderung f\u00fcr eine einzelne Bibliothek passieren muss. Alle Teams sind gezwungen, miteinander zu reden und gemeinsam eine L\u00f6sung zu finden.<\/p>\n<p>Das Ergebnis ist, dass das erste Team nicht so schnell iterieren kann, wie es m\u00f6chte, aber der Code \u00fcber verschiedene Bibliotheken hinweg wird zu keinem Zeitpunkt anfangen, auseinanderzulaufen.<\/p>\n<p>Zusammenfassend l\u00e4sst sich sagen, dass der Multi-Repo-Ansatz dazu beitragen kann, eine Kultur des &#8222;move fast and break things&#8220; unter den Teams zu schaffen, in der flinke unabh\u00e4ngige Teams ihren Output in ihrer Geschwindigkeit produzieren k\u00f6nnen. Stattdessen beg\u00fcnstigt der Monorepo-Ansatz eine Kultur der Achtsamkeit und Sorgfalt, in der Teams nicht mit einem Problem allein gelassen werden sollten.<\/p>\n<h2>Hybrider Poly-As-Mono-Ansatz<\/h2>\n<p>Wenn wir uns nicht entscheiden k\u00f6nnen, ob wir entweder den Multi-Repo oder den Monorepo-Ansatz verwenden sollen, gibt es auch den Zwischending-Ansatz: mehrere Repositories zu verwenden und ein Tool einzusetzen, um sie synchron zu halten, so dass es einem Monorepo \u00e4hnelt, aber mit mehr Flexibilit\u00e4t.<\/p>\n<p><a href=\"https:\/\/github.com\/mateodelnorte\/meta\">Meta<\/a> ist ein solches Tool. Es organisiert mehrere Repositories in Unterverzeichnissen und bietet eine <a href=\"https:\/\/kinsta.com\/de\/blog\/einstiegen-nutzung-ssh\/\">Kommandozeilenschnittstelle<\/a>, die den gleichen Befehl auf allen gleichzeitig ausf\u00fchrt.<\/p>\n<p>Ein Meta-Repository enth\u00e4lt die Informationen dar\u00fcber, welche Repositories ein Projekt ausmachen. Das Klonen dieses Repositories via Meta klont dann rekursiv alle ben\u00f6tigten Repositories, was es f\u00fcr neue Teammitglieder einfacher macht, sofort mit der Arbeit an ihren Projekten zu beginnen.<\/p>\n<p>Um ein Meta-Repository und alle seine definierten multiplen Repos zu klonen, m\u00fcssen wir folgendes ausf\u00fchren:<\/p>\n<pre><code class=\"language-bash\">meta git clone [meta repo url]\n<\/code><\/pre>\n<p>Meta wird f\u00fcr jedes Repository einen <code>git clone <\/code>ausf\u00fchren und es in einem Unterordner ablegen:<\/p>\n<figure 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\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/07\/meta-cloning-1024x755.png\" alt=\"Klonen eines Meta-Projekts. \" width=\"1024\" height=\"755\"><\/a><figcaption class=\"wp-caption-text\">Klonen eines Meta-Projekts. (Bildquelle: <a href=\"https:\/\/github.com\/mateodelnorte\/meta\" target=\"_blank\" rel=\"noopener noreferrer\">github.com\/mateodelnorte\/meta<\/a>)<\/figcaption><\/figure>\n<p>Von da an wird die Ausf\u00fchrung des <code>meta exec<\/code> Befehls den Befehl in jedem Unterordner ausf\u00fchren. Zum Beispiel wird <code>git checkout master<\/code> auf jedem Repository wie folgt ausgef\u00fchrt:<\/p>\n<pre><code class=\"language-bash\">meta exec \"git checkout master\"\n<\/code><\/pre>\n<h2>Hybrider Mono-As-Poly-Ansatz<\/h2>\n<p>Ein anderer Ansatz ist die Verwaltung des Codes \u00fcber ein Monorepo f\u00fcr die Entwicklung, aber das Kopieren des Codes jeder Bibliothek in ein unabh\u00e4ngiges Repository f\u00fcr die Bereitstellung.<\/p>\n<p>Diese Strategie ist im PHP-\u00d6kosystem weit verbreitet, da <a href=\"https:\/\/packagist.org\/\">Packagist<\/a> (das Haupt-Repository von <a href=\"https:\/\/getcomposer.org\/\">Composer<\/a>) eine \u00f6ffentliche Repository-<a href=\"https:\/\/kinsta.com\/de\/blog\/was-ist-eine-url\/\">URL<\/a> ben\u00f6tigt, um ein Paket zu ver\u00f6ffentlichen, und es nicht m\u00f6glich ist, anzugeben, dass sich das Paket in einem Unterverzeichnis des Repositorys befindet.<\/p>\n<p>In Anbetracht der Packagist-Beschr\u00e4nkung k\u00f6nnen <a href=\"https:\/\/graphql-api.com\/blog\/extending-the-monorepo-builder\/\">PHP-Projekte immer noch ein Monorepo f\u00fcr die Entwicklung<\/a> verwenden, aber sie m\u00fcssen den Multi-Repo-Ansatz f\u00fcr die Bereitstellung nutzen.<\/p>\n<p>Um diese Conversion zu erreichen, k\u00f6nnen wir ein <a href=\"https:\/\/stackoverflow.com\/questions\/359424\/detach-move-subdirectory-into-separate-git-repository\/17864475#17864475\">Skript mit <code>git subtree split<\/code><\/a> ausf\u00fchren oder eines der verf\u00fcgbaren Tools verwenden, die die gleiche Logik ausf\u00fchren:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/splitsh\/lite\" target=\"_blank\" rel=\"noopener noreferrer\">Git Subtree Splitter<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/dflydev\/git-subsplit\" target=\"_blank\" rel=\"noopener noreferrer\">Git Subsplit<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/symplify\/monorepo-split-github-action\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub Action for Monorepo Split<\/a><\/li>\n<\/ul>\n<h2>Wer nutzt Monorepo vs. Multi-Repo<\/h2>\n<p>Einige gro\u00dfe Tech-Unternehmen favorisieren den Monorepo-Ansatz, w\u00e4hrend andere sich f\u00fcr die Multi-Repo-Methode entschieden haben.<\/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> und <a href=\"https:\/\/www.youtube.com\/watch?v=lV8-1S28ycM\">Uber<\/a> haben sich alle \u00f6ffentlich f\u00fcr den Monorepo-Ansatz verb\u00fcrgt. Microsoft <a href=\"https:\/\/devblogs.microsoft.com\/bharry\/the-largest-git-repo-on-the-planet\/\">betreibt den gr\u00f6\u00dften Git Monorepo auf dem Planeten<\/a>, um den Quellcode des Windows Betriebssystems zu hosten.<\/p>\n<p>Auf der gegen\u00fcberliegenden Seite sind <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 und Lyft<\/a> ber\u00fchmte Unternehmen, die den Multi-Repo-Ansatz verwenden.<\/p>\n<p>Auf der hybriden poly-as-mono Seite aktualisiert <a href=\"https:\/\/source.android.com\/setup\/create\/coding-tasks\">Android<\/a> mehrere Repositories, die wie ein Monorepo verwaltet werden.<\/p>\n<p>Auf der hybriden Mono-als-Poly-Seite h\u00e4lt <a href=\"https:\/\/kinsta.com\/de\/blog\/php-frameworks\/#symfony\">Symfony<\/a> den Code f\u00fcr alle seine Komponenten in einem Monorepo. F\u00fcr das Deployment teilen sie es in unabh\u00e4ngige Repositories auf (wie <a href=\"https:\/\/github.com\/symfony\/dependency-injection\"><code>symfony\/dependency-injection<\/code><\/a> und <a href=\"https:\/\/github.com\/symfony\/event-dispatcher\"><code>symfony\/event-dispatcher<\/code><\/a>.)<\/p>\n<h2>Beispiele f\u00fcr Monorepo und Multi-Repo<\/h2>\n<p>Der <a href=\"https:\/\/github.com\/WordPress\/WordPress\">WordPress-Account auf GitHub<\/a> hostet Beispiele sowohl f\u00fcr den Monorepo als auch f\u00fcr den Multi-Repo-Ansatz.<\/p>\n<p><a href=\"https:\/\/kinsta.com\/de\/blog\/gutenberg-wordpress-editor\/\">Gutenberg<\/a>, der WordPress-Blockeditor, besteht aus mehreren Dutzend <a href=\"https:\/\/kinsta.com\/de\/blog\/was-ist-javascript\/\">JavaScript<\/a>-Paketen. Diese Pakete werden alle auf dem <a href=\"https:\/\/github.com\/WordPress\/gutenberg\"><code>WordPress\/gutenberg<\/code>-Monorepo<\/a> gehostet und \u00fcber <a href=\"https:\/\/github.com\/lerna\/lerna\">Lerna<\/a> verwaltet, um sie im <a href=\"https:\/\/kinsta.com\/de\/blog\/was-ist-node-js\/#what-is-npm\">npm<\/a>-Repository zu ver\u00f6ffentlichen.<\/p>\n<p><a href=\"https:\/\/wordpress.org\/news\/2021\/05\/welcome-to-openverse\/\">Openverse<\/a>, die Suchmaschine f\u00fcr offen lizenzierte Medien, <a href=\"https:\/\/github.com\/WordPress\/openverse\/blob\/918b7cf1b6323291ab16c1ad5a27f3733709ec17\/README.md#openverse\">hostet seine Hauptbestandteile<\/a> in unabh\u00e4ngigen Repositories: <a href=\"https:\/\/github.com\/wordpress\/openverse-frontend\">Front-End<\/a>, <a href=\"https:\/\/github.com\/wordpress\/openverse-catalog\">Catalog<\/a> und <a href=\"https:\/\/github.com\/wordpress\/openverse-api\">API<\/a>.<\/p>\n<h2>Monorepo vs. Multi-Repo: Wie soll man sich entscheiden?<\/h2>\n<p>Wie bei vielen Entwicklungsproblemen gibt es keine vordefinierte Antwort darauf, welchen Ansatz du verwenden solltest. Verschiedene Unternehmen und Projekte werden von der einen oder anderen Strategie profitieren, basierend auf ihren einzigartigen Bedingungen, wie z.B.:<\/p>\n<ul>\n<li>Wie gro\u00df ist die Codebase? Enth\u00e4lt sie Gigabytes an Daten?<\/li>\n<li>Wie viele Leute werden an der Codebasis arbeiten? Sind es etwa 10, 100 oder 1.000?<\/li>\n<li>Wie viele Pakete wird es geben? Sind es etwa 10, 100 oder 1.000?<\/li>\n<li>An wie vielen Paketen muss das Team zu einer bestimmten Zeit arbeiten?<\/li>\n<li>Wie eng gekoppelt sind die Pakete?<\/li>\n<li>Sind verschiedene Programmiersprachen beteiligt? Ben\u00f6tigen sie eine bestimmte installierte <a href=\"https:\/\/kinsta.com\/de\/blog\/cms-software\/\">Software<\/a> oder spezielle Hardware, um zu laufen?<\/li>\n<li>Wie viele Deployment Tools werden ben\u00f6tigt, und wie komplex sind sie einzurichten?<\/li>\n<li>Wie ist die Kultur im Unternehmen? Werden die Teams ermutigt, zusammenzuarbeiten?<\/li>\n<li>Mit welchen <a href=\"https:\/\/kinsta.com\/de\/blog\/webentwicklung-tools\/\">Tools und Technologien<\/a> k\u00f6nnen die Teams umgehen?<\/li>\n<\/ul>\n\n<h2>Zusammenfassung<\/h2>\n<p>Es gibt zwei Hauptstrategien f\u00fcr das Hosten und Verwalten von Code: Monorepo vs. Multi-Repo. Der Monorepo-Ansatz beinhaltet die Speicherung des Codes f\u00fcr verschiedene Bibliotheken oder Projekte &#8211; und sogar den gesamten Code eines Unternehmens &#8211; in einem einzigen Repository. Und das Multi-Repo-System unterteilt den Code in Einheiten, wie Bibliotheken oder Dienste, und h\u00e4lt deren Code in unabh\u00e4ngigen Repositories gehostet.<\/p>\n<p>Welcher Ansatz zu verwenden ist, h\u00e4ngt von einer Vielzahl von Bedingungen ab. Beide Strategien haben verschiedene Vor- und Nachteile, die wir in diesem Artikel im Detail behandelt haben.<\/p>\n<p><em>Hast du noch Fragen zu Monorepos oder Multi-Repos? Lass es uns in den Kommentaren wissen!<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Es gibt zwei Hauptstrategien f\u00fcr das Hosten und Verwalten von Code \u00fcber Git: Monorepo vs. Multi-Repo. Beide Ans\u00e4tze haben ihre Vor- und Nachteile. Wir k\u00f6nnen beide &#8230;<\/p>\n","protected":false},"author":196,"featured_media":43214,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[190,449],"topic":[983],"class_list":["post-43210","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-git","tag-github","topic-technische-tipps"],"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>Monorepo vs. Multi-Repo: Vor- und Nachteile von Code-Repository-Strategien<\/title>\n<meta name=\"description\" content=\"Monorepo vs. Multi-Repo - was ist besser? Es gibt Vor- und Nachteile f\u00fcr jede Variante. Erfahre hier mehr \u00fcber die Vor- und Nachteile der beiden Ans\u00e4tze.\" \/>\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\/de\/blog\/monorepo-vs-multi-repo\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Monorepo vs. Multi-Repo: Vor- und Nachteile von Code-Repository-Strategien\" \/>\n<meta property=\"og:description\" content=\"Monorepo vs. Multi-Repo - was ist besser? Es gibt Vor- und Nachteile f\u00fcr jede Variante. Erfahre hier mehr \u00fcber die Vor- und Nachteile der beiden Ans\u00e4tze.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/de\/blog\/monorepo-vs-multi-repo\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-08-25T08:58:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-19T06:50:24+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/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=\"Monorepo vs. Multi-Repo - was ist besser? Es gibt Vor- und Nachteile f\u00fcr jede Variante. Erfahre hier mehr \u00fcber die Vor- und Nachteile der beiden Ans\u00e4tze.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2021\/08\/monorepo-vs-multi-repo.jpeg\" \/>\n<meta name=\"twitter:creator\" content=\"@losoviz\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_DE\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Leonardo Losoviz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"12\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/monorepo-vs-multi-repo\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/monorepo-vs-multi-repo\/\"},\"author\":{\"name\":\"Leonardo Losoviz\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/c382de1885cc21b079ec1e71d7faf238\"},\"headline\":\"Monorepo vs. Multi-Repo: Vor- und Nachteile von Code-Repository-Strategien\",\"datePublished\":\"2021-08-25T08:58:33+00:00\",\"dateModified\":\"2023-09-19T06:50:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/monorepo-vs-multi-repo\/\"},\"wordCount\":2876,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/monorepo-vs-multi-repo\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2021\/08\/monorepo-vs-multi-repo.jpeg\",\"keywords\":[\"git\",\"GitHub\"],\"articleSection\":[\"Webentwicklung\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/monorepo-vs-multi-repo\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/monorepo-vs-multi-repo\/\",\"url\":\"https:\/\/kinsta.com\/de\/blog\/monorepo-vs-multi-repo\/\",\"name\":\"Monorepo vs. Multi-Repo: Vor- und Nachteile von Code-Repository-Strategien\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/monorepo-vs-multi-repo\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/monorepo-vs-multi-repo\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2021\/08\/monorepo-vs-multi-repo.jpeg\",\"datePublished\":\"2021-08-25T08:58:33+00:00\",\"dateModified\":\"2023-09-19T06:50:24+00:00\",\"description\":\"Monorepo vs. Multi-Repo - was ist besser? Es gibt Vor- und Nachteile f\u00fcr jede Variante. Erfahre hier mehr \u00fcber die Vor- und Nachteile der beiden Ans\u00e4tze.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/monorepo-vs-multi-repo\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/monorepo-vs-multi-repo\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/monorepo-vs-multi-repo\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2021\/08\/monorepo-vs-multi-repo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2021\/08\/monorepo-vs-multi-repo.jpeg\",\"width\":1460,\"height\":730,\"caption\":\"Monorepo vs. Multi-Repo: Vor- und Nachteile von Code-Repository-Strategien\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/monorepo-vs-multi-repo\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Technische Tipps\",\"item\":\"https:\/\/kinsta.com\/de\/thema\/technische-tipps\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Monorepo vs. Multi-Repo: Vor- und Nachteile von Code-Repository-Strategien\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/de\/#website\",\"url\":\"https:\/\/kinsta.com\/de\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/de\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/de\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/de\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\",\"https:\/\/x.com\/Kinsta_DE\",\"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\/de\/#\/schema\/person\/c382de1885cc21b079ec1e71d7faf238\",\"name\":\"Leonardo Losoviz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/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\/de\/blog\/author\/leonardolosoviz\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Monorepo vs. Multi-Repo: Vor- und Nachteile von Code-Repository-Strategien","description":"Monorepo vs. Multi-Repo - was ist besser? Es gibt Vor- und Nachteile f\u00fcr jede Variante. Erfahre hier mehr \u00fcber die Vor- und Nachteile der beiden Ans\u00e4tze.","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\/de\/blog\/monorepo-vs-multi-repo\/","og_locale":"de_DE","og_type":"article","og_title":"Monorepo vs. Multi-Repo: Vor- und Nachteile von Code-Repository-Strategien","og_description":"Monorepo vs. Multi-Repo - was ist besser? Es gibt Vor- und Nachteile f\u00fcr jede Variante. Erfahre hier mehr \u00fcber die Vor- und Nachteile der beiden Ans\u00e4tze.","og_url":"https:\/\/kinsta.com\/de\/blog\/monorepo-vs-multi-repo\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","article_published_time":"2021-08-25T08:58:33+00:00","article_modified_time":"2023-09-19T06:50:24+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2021\/08\/monorepo-vs-multi-repo.jpeg","type":"image\/jpeg"}],"author":"Leonardo Losoviz","twitter_card":"summary_large_image","twitter_description":"Monorepo vs. Multi-Repo - was ist besser? Es gibt Vor- und Nachteile f\u00fcr jede Variante. Erfahre hier mehr \u00fcber die Vor- und Nachteile der beiden Ans\u00e4tze.","twitter_image":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2021\/08\/monorepo-vs-multi-repo.jpeg","twitter_creator":"@losoviz","twitter_site":"@Kinsta_DE","twitter_misc":{"Verfasst von":"Leonardo Losoviz","Gesch\u00e4tzte Lesezeit":"12\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/de\/blog\/monorepo-vs-multi-repo\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/blog\/monorepo-vs-multi-repo\/"},"author":{"name":"Leonardo Losoviz","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/c382de1885cc21b079ec1e71d7faf238"},"headline":"Monorepo vs. Multi-Repo: Vor- und Nachteile von Code-Repository-Strategien","datePublished":"2021-08-25T08:58:33+00:00","dateModified":"2023-09-19T06:50:24+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/monorepo-vs-multi-repo\/"},"wordCount":2876,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/monorepo-vs-multi-repo\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2021\/08\/monorepo-vs-multi-repo.jpeg","keywords":["git","GitHub"],"articleSection":["Webentwicklung"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/de\/blog\/monorepo-vs-multi-repo\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/de\/blog\/monorepo-vs-multi-repo\/","url":"https:\/\/kinsta.com\/de\/blog\/monorepo-vs-multi-repo\/","name":"Monorepo vs. Multi-Repo: Vor- und Nachteile von Code-Repository-Strategien","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/monorepo-vs-multi-repo\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/monorepo-vs-multi-repo\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2021\/08\/monorepo-vs-multi-repo.jpeg","datePublished":"2021-08-25T08:58:33+00:00","dateModified":"2023-09-19T06:50:24+00:00","description":"Monorepo vs. Multi-Repo - was ist besser? Es gibt Vor- und Nachteile f\u00fcr jede Variante. Erfahre hier mehr \u00fcber die Vor- und Nachteile der beiden Ans\u00e4tze.","breadcrumb":{"@id":"https:\/\/kinsta.com\/de\/blog\/monorepo-vs-multi-repo\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/de\/blog\/monorepo-vs-multi-repo\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/blog\/monorepo-vs-multi-repo\/#primaryimage","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2021\/08\/monorepo-vs-multi-repo.jpeg","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2021\/08\/monorepo-vs-multi-repo.jpeg","width":1460,"height":730,"caption":"Monorepo vs. Multi-Repo: Vor- und Nachteile von Code-Repository-Strategien"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/de\/blog\/monorepo-vs-multi-repo\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/de\/"},{"@type":"ListItem","position":2,"name":"Technische Tipps","item":"https:\/\/kinsta.com\/de\/thema\/technische-tipps\/"},{"@type":"ListItem","position":3,"name":"Monorepo vs. Multi-Repo: Vor- und Nachteile von Code-Repository-Strategien"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/de\/#website","url":"https:\/\/kinsta.com\/de\/","name":"Kinsta\u00ae","description":"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen","publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/de\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","https:\/\/x.com\/Kinsta_DE","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\/de\/#\/schema\/person\/c382de1885cc21b079ec1e71d7faf238","name":"Leonardo Losoviz","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/#\/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\/de\/blog\/author\/leonardolosoviz\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/43210","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/users\/196"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/comments?post=43210"}],"version-history":[{"count":6,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/43210\/revisions"}],"predecessor-version":[{"id":65708,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/43210\/revisions\/65708"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/43210\/translations\/en"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/43210\/translations\/de"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/43210\/translations\/fr"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/43210\/translations\/it"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/43210\/translations\/es"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/43210\/translations\/pt"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/43210\/translations\/nl"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/43210\/translations\/se"},{"href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/43210\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media\/43214"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media?parent=43210"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/tags?post=43210"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/topic?post=43210"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}