Ein Monorepo ist ein Software-Repository, das den gesamten Code mehrerer zusammengehöriger Projekte, Anwendungen oder Pakete in einem einzigen, zentralen Versionskontroll-Repository verwaltet.
Ein Monorepo ist ein Software-Repository, das den gesamten Code mehrerer zusammengehöriger Projekte, Anwendungen oder Pakete in einem einzigen, zentralen Versionskontroll-Repository verwaltet. Statt den Code auf viele separate Repositories zu verteilen, wird alles an einem zentralen Ort gepflegt und versioniert, was die Koordination zwischen Teams und die Konsistenz des Gesamtsystems erheblich vereinfacht.
Statt für jedes einzelne Projekt ein eigenes Repository zu führen (Multirepo-Ansatz), vereint ein Monorepo alles an einem Ort: Frontend, Backend, Shared Libraries, Konfigurationen und Infrastruktur-Code. Grosse Unternehmen wie Google, Meta und Microsoft nutzen Monorepos seit Jahren.
Vorteile eines Monorepos
Die gemeinsame Codebasis erleichtert Code-Sharing zwischen Projekten, vereinfacht das Abhängigkeitsmanagement und ermöglicht atomare Änderungen über mehrere Projekte hinweg. Wenn ein Team eine Shared Library aktualisiert, sehen alle Projekte die Änderung sofort und Inkonsistenzen werden vermieden. Auch Refactorings lassen sich in einem Monorepo einfacher durchführen, weil alle betroffenen Stellen an einem Ort zu finden sind.
Tools wie Turborepo, Nx und Lerna ermöglichen effizientes Monorepo-Management auch für kleinere und mittelgrosse Teams. In Kombination mit CI/CD Pipelines können Monorepos so konfiguriert werden, dass nur die Projekte neu gebaut und getestet werden, die von einer Änderung tatsächlich betroffen sind. Das spart Build-Zeit und Ressourcen erheblich.
Wann ein Monorepo sinnvoll ist
Für Projekte mit mehreren zusammenhängenden Komponenten bietet ein Monorepo klare Vorteile. Typische Szenarien sind eine Website und eine zugehörige App, die ein gemeinsames Design System nutzen, ein Frontend und ein Backend, die über gemeinsame Typdefinitionen kommunizieren, oder mehrere Microservices, die dieselben Utility-Bibliotheken verwenden. Für einzelne, vollständig unabhängige Projekte ohne geteilte Abhängigkeiten ist der zusätzliche Overhead eines Monorepos dagegen nicht gerechtfertigt.
Die Entscheidung zwischen Monorepo und Multirepo sollte bewusst getroffen werden und hängt von Teamgrösse, Projektstruktur und den Anforderungen an Code-Sharing und Deployment ab.
In der /webapp-Entwicklung werden Monorepos bei komplexeren digitalen Produkten eingesetzt, um Codebasis und Deployment-Prozesse konsistent und wartbar zu halten.
Conversion Rate Optimization (CRO) ist der systematische Prozess, den Anteil der Websitebesucher zu erhöhen, die eine gewünschte Aktion ausführen - sei es eine Kontaktanfrage, ein Kauf
Ein Design System ist eine Sammlung wiederverwendbarer Designkomponenten, Gestaltungsregeln, Patterns und dokumentierter Standards, die sicherstellen, dass alle digitalen Produkte eines Unternehmens
GraphQL ist eine Abfragesprache für API (Application Programming Interface)s, die es dem Client ermöglicht, genau die Daten anzufordern, die er benötigt - nicht mehr und nicht weniger.