[{"data":1,"prerenderedAt":717},["ShallowReactive",2],{"/de-de/blog/how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes/":3,"navigation-de-de":38,"banner-de-de":457,"footer-de-de":470,"Karthik Nayak-Manuel Kraft":679,"next-steps-de-de":702},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":8,"content":16,"config":27,"_id":31,"_type":32,"title":33,"_source":34,"_file":35,"_stem":36,"_extension":37},"/de-de/blog/how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes","blog",false,"",{"ogTitle":9,"schema":10,"ogImage":11,"ogDescription":12,"ogSiteName":13,"noIndex":6,"ogType":14,"ogUrl":15,"title":9,"canonicalUrls":15,"description":12},"GitLab: Repository-Backups von 48h auf 41min reduziert","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Verkürzung der Backup-Zeiten von 48 Stunden auf 41 Minuten\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Karthik Nayak\"},{\"@type\":\"Person\",\"name\":\"Manuel Kraft\"}],\n        \"datePublished\": \"2025-06-05\",\n      }","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097166/Blog/Hero%20Images/Blog/Hero%20Images/REFERENCE%20-%20display%20preview%20for%20blog%20images%20%282%29_2pKf8RsKzAaThmQfqHIaa7_1750097166565.png","GitLab reduziert Backup-Zeiten von 48 Stunden auf 41 Minuten! Entdecke, wie wir einen 15 Jahre alten Git-Bug mit O(N²)-Komplexität gelöst haben. Code inklusive.","https://about.gitlab.com","Artikel","https://about.gitlab.com/blog/how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes",{"heroImage":11,"body":17,"authors":18,"updatedDate":21,"date":22,"title":23,"tags":24,"description":25,"category":26},"Backups von Repositorys sind ein wichtiger Bestandteil jeder robusten\nStrategie für die Notfallwiederherstellung. Mit zunehmender Größe der\nRepositorys wird die Erstellung zuverlässiger Backups jedoch immer\nschwieriger. Das Backup unseres eigenen\n[Rails-Repository](https://gitlab.com/gitlab-org/gitlab) dauerte 48 Stunden\nund zwang uns zu einer unmöglichen Entscheidung zwischen Backup-Häufigkeit\nund Systemleistung. Wir wollten dieses Thema sowohl für unsere Kund(inn)en\nals auch für unsere eigenen Benutzer(innen) in den Griff bekommen.\n\n\nSchließlich haben wir das Problem auf eine 15 Jahre alte Git-Funktion mit O(N²)-Komplexität zurückgeführt und sie mit einer algorithmischen Änderung behoben, die die **Backup-Zeiten exponentiell reduzierte**. Das Ergebnis: niedrigere Kosten, weniger Risiko und Backup-Strategien, die tatsächlich mit deiner Codebase mitwachsen.\n\n\nEs stellte sich heraus, dass es sich um ein Skalierungsproblem von Git handelt, das jedes große Repository betrifft. Hier erfährst du, wie wir es aufgespürt und behoben haben.\n\n\n## Skalierbare Backups\n\n\nSehen wir uns zunächst das Problem an. Wenn Unternehmen ihre Repositorys skalieren und Backups immer komplexer werden, stehen sie vor einigen Herausforderungen:\n\n\n* **Zeitintensive Backups:** Bei sehr großen Repositorys kann es mehrere Stunden dauern, bis ein Repository-Backup erstellt wird. Dies kann die Möglichkeit, regelmäßige Backups zu planen, beeinträchtigen. \n\n* **Ressourcenintensität:** Erweiterte Backup-Prozesse können erhebliche Serverressourcen verbrauchen, was sich möglicherweise auf andere Vorgänge auswirken kann.\n\n* **Backup-Fenster:** Für Teams, die rund um die Uhr arbeiten, kann es schwierig sein, angemessene Wartungsfenster für Prozesse zu finden, die so lange dauern.\n\n* **Erhöhtes Ausfallrisiko:** Prozesse, die über längere Zeit ausgeführt werden, sind anfälliger für Unterbrechungen durch Netzwerkprobleme, Neustarts von Servern und Systemfehler. So sind Teams manchmal dazu gezwungen, den gesamten sehr langen Backup-Prozess von Grund auf neu zu starten.\n\n* **Race Conditions:** Da es sehr lange dauert, ein Backup durchzuführen, kann sich das Repository während des Prozesses stark verändern. Dies kann möglicherweise zu einem ungültigen Backup führen oder das Backup unterbrechen, weil Objekte nicht mehr verfügbar sind.\n\n\nDiese Herausforderungen können zu Kompromissen bei der Häufigkeit oder Vollständigkeit von Backups führen – ein inakzeptabler Kompromiss, wenn es um den Datenschutz geht. Erweiterte Backup-Fenster können Kund(inn)en zu Problemumgehungen zwingen. Einige setzen möglicherweise externe Tools ein, während andere die Backup-Häufigkeit reduzieren, was zu potenziell inkonsistenten Datenschutzstrategien im Unternehmen führen kann.\n\n\nSehen wir uns nun an, wie wir einen Leistungsengpass identifiziert, eine Lösung gefunden und diese bereitgestellt haben, um die Backup-Zeiten zu verkürzen.\n\n\n## Die technische Herausforderung\n\n\nDie Repository-Backup-Funktionalität von GitLab basiert auf dem Befehl [`git bundle create`](https://git-scm.com/docs/git-bundle), der einen vollständigen Snapshot eines Repository erfasst, einschließlich aller Objekte und Referenzen wie Branches und Tags. Dieses Bundle dient als Wiederherstellungspunkt, um das Repository in seinem genauen Zustand neu zu erstellen.\n\n\nDie Implementierung des Befehls litt jedoch unter einer schlechten Skalierbarkeit im Zusammenhang mit der Referenzzählung, was zu einem Leistungsengpass führte. Je mehr Referenzen die Repositorys sammelten, desto mehr stieg die Verarbeitungszeit exponentiell an. In unseren größten Repositorys mit Millionen von Referenzen konnten Backup-Vorgänge mehr als 48 Stunden dauern.\n\n\n### Grundursachenanalyse\n\n\nUm die Grundursache dieses Leistungsengpasses zu identifizieren, haben wir ein Flammendiagramm des Befehls während der Ausführung analysiert.\n\n\n![Flammendiagramm, das den Befehl während der Ausführung zeigt](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097176/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750097176388.jpg)\n\n\nEin Flammendiagramm, das den Ausführungspfad eines Befehls durch seinen Stacktrace zeigt. Jeder Balken entspricht einer Funktion im Code. Die Breite des Balkens gibt an, wie viel Zeit der Befehl für die Ausführung innerhalb dieser bestimmten Funktion benötigt hat.\n\n\nBei der Untersuchung des Flammendiagramms von `git bundle create`, das auf einem Repository mit 10 000 Referenzen ausgeführt wird, werden etwa 80 % der Ausführungszeit von der Funktion `object_array_remove_duplicates()` verbraucht. Diese Funktion wurde in Git im [Commit b2a6d1c686](https://gitlab.com/gitlab-org/git/-/commit/b2a6d1c686) eingeführt (bundle: allow the same ref to be given more than once, 17.01.2009).\n\n\nUm diese Änderung zu verstehen, ist es wichtig zu wissen, dass `git bundle create` es Benutzer(inne)n ermöglicht, anzugeben, welche Referenzen in das Bundle aufgenommen werden sollen. Für vollständige Repository-Bundles werden mit dem Flag `--all` alle Referenzen gepackt.\n\n\nDer Commit löste ein Problem, bei dem Benutzer(innen), die über die Befehlszeile doppelte Referenzen bereitstellten – wie z. B. `git bundle create main.bundle main main` – ein Bundle erstellten, ohne die doppelte Hauptreferenz ordnungsgemäß zu verarbeiten. Das Entpacken dieses Bundles in einem Git-Repository würde fehlschlagen, da versucht würde, die gleiche Referenz zweimal zu schreiben. Der Code zum Vermeiden von Duplikaten verwendet verschachtelte `for`-Schleifen, die alle Referenzen durchlaufen, um Duplikate zu identifizieren. Dieser O(N²)-Algorithmus wird in Repositorys mit einer großen Anzahl von Referenzen zu einem erheblichen Leistungsengpass, da er viel Rechenzeit verbraucht.\n\n\n### Der Fix: Von O(N²) zu effizientem Mapping\n\n\nUm dieses Leistungsproblem zu lösen, haben wir einen Upstream-Fix für Git bereitgestellt, der die verschachtelten Schleifen durch eine Mapping-Datenstruktur ersetzt. Jede Referenz wird der Zuordnung hinzugefügt, wodurch automatisch sichergestellt wird, dass nur eine einzige Kopie jeder Referenz für die Bearbeitung gespeichert wird.\n\n\nDiese Änderung verbessert die Leistung von `git bundle create` drastisch und ermöglicht eine bessere Skalierbarkeit in Repositorys mit einer großen Anzahl von Referenzen. Benchmark-Tests mit einem Repository mit 10 000 Referenzen zeigen eine 6-fache Leistungssteigerung.\n\n\n```shell\n\nBenchmark 1: bundle (refcount = 100000, revision = master)\n  Time (mean ± σ): \t14.653 s ±  0.203 s\t[User: 13.940 s, System: 0.762 s]\n  Range (min … max):   14.237 s … 14.920 s\t10 runs\n\nBenchmark 2: bundle (refcount = 100000, revision = HEAD)\n  Time (mean ± σ):  \t2.394 s ±  0.023 s\t[User: 1.684 s, System: 0.798 s]\n  Range (min … max):\t2.364 s …  2.425 s\t10 runs\n\nSummary\n  bundle (refcount = 100000, revision = HEAD) ran\n  6.12 ± 0.10 times faster than bundle (refcount = 100000, revision = master)\n```\n\n\nDer Patch wurde akzeptiert und in den Git-Upstream [zusammengeführt](https://gitlab.com/gitlab-org/git/-/commit/bb74c0abbc31da35be52999569ea481ebd149d1d). Wir haben diesen Fix zurückportiert, damit unsere Kund(inn)en sofort davon profitieren können, ohne auf die nächste Git-Version warten zu müssen.\n\n\n## Das Ergebnis: Drastisch verkürzte Backup-Zeiten\n\n\nDie Leistungssteigerungen, die sich aus dieser Verbesserung ergeben haben, sind bahnbrechend:\n\n\n* **Von 48 Stunden auf 41 Minuten:** Das Erstellen eines Backups unseres größten Repositorys (`gitlab-org/gitlab`) dauert jetzt nur noch 1,4 % der ursprünglichen Zeit.\n\n* **Konsistente Leistung:** Die Verbesserung funktioniert zuverlässig bei Repositorys jeder Größe.\n\n* **Ressourceneffizienz:** Wir haben die Serverlast während der Backup-Vorgänge deutlich reduziert.\n\n* **Breitere Anwendbarkeit:** Bei der Erstellung von Backups ist die Verbesserung am größten, aber auch alle Bundle-basierten Vorgänge, die mit vielen Referenzen arbeiten, profitieren davon.\n\n\n## Was bedeutet das für GitLab-Kund(inn)en?\n\n\nGitLab-Kund(inn)en profitieren von dieser Erweiterung unmittelbar und spürbar, wenn es darum geht, wie Unternehmen die Sicherung von Repositorys und die Notfallwiederherstellung planen:\n\n\n* **Transformierte Backup-Strategien**   \n\n  * Enterprise-Teams können umfassende nächtliche Zeitpläne aufstellen, ohne dass die Entwicklungs-Workflows beeinträchtigt werden oder umfangreiche Backup-Fenster erforderlich sind.   \n  * Backups können jetzt während der nächtlichen Zeitpläne nahtlos im Hintergrund ausgeführt werden, anstatt separat und langwierig durchgeführt zu werden.  \n* **Bessere Geschäftskontinuität**  \n\n  * Durch die Verkürzung der Backup-Zeiten von Tagen auf Minuten können Unternehmen ihr Wiederherstellungsziel deutlich minimieren. Dies führt zu einem geringeren Geschäftsrisiko – in einem Katastrophenszenario musst du möglicherweise nur noch Stunden anstatt Tage an Arbeit wiederherstellen.  \n* **Reduzierter betrieblicher Mehraufwand**   \n\n  * Geringerer Verbrauch von Serverressourcen und kürzere Wartungsfenster.  \n  * Kürzere Backup-Fenster bedeuten geringere Compute-Kosten, vor allem in Cloud-Umgebungen, wo sich längere Verarbeitungszeiten direkt in höheren Rechnungen niederschlagen.  \n* **Zukunftssichere Infrastruktur**   \n\n  * Wachsende Repositorys erzwingen keine schwierigen Entscheidungen mehr zwischen Backup-Häufigkeit und Systemleistung.   \n  * Wenn deine Codebase wächst, kann deine Backup-Strategie nahtlos mitwachsen.\n\nUnternehmen können jetzt robustere Backup-Strategien umsetzen, ohne Kompromisse bei der Leistung oder Vollständigkeit einzugehen. Was früher ein schwieriger Kompromiss war, ist heute ein ganz normaler Vorgang.\n\n\nMit dem Release von [GitLab 18.0 (nur in englischer Sprache verfügbar)](https://about.gitlab.com/releases/2025/05/15/gitlab-18-0-released/) können alle GitLab-Kund(inn)en unabhängig von ihrem Tarif diese Verbesserungen bereits in vollem Umfang für ihre [Backup-Strategie und Ausführung (nur in englischer Sprache verfügbar)](https://docs.gitlab.com/administration/backup_restore/backup_gitlab/) nutzen. Es ist keine weitere Änderung der Konfiguration erforderlich.\n\n\n## Wie geht es weiter?\n\n\nDieser Durchbruch ist Teil unseres kontinuierlichen Engagements für eine skalierbare, unternehmensgerechte Git-Infrastruktur. Die Reduzierung der Zeit für die Erstellung von Backups von 48 Stunden auf 41 Minuten ist bereits ein wichtiger Meilenstein. Wir arbeiten weiter daran, Leistungsengpässe in unserem gesamten Stack zu identifizieren und zu beheben.\n\n\nWir sind besonders stolz darauf, dass diese Verbesserung in das Git-Projekt integriert wurde und nicht nur den Benutzer(inn)en von GitLab, sondern auch der gesamten Git-Community zugutekommt. Dieser kollaborative Ansatz bei der Entwicklung stellt sicher, dass Verbesserungen gründlich geprüft, umfassend getestet und für alle zugänglich gemacht werden.\n\n\n> Tiefgreifende Infrastrukturarbeit wie diese ist die Art, wie wir bei GitLab an die Leistung herangehen. Nimm am virtuellen Launch-Event von GitLab 18 teil, um zu sehen, welche weiteren grundlegenden Verbesserungen wir einführen werden. [Registriere dich noch heute!](https://about.gitlab.com/de-de/eighteen/)\n",[19,20],"Karthik Nayak","Manuel Kraft","2025-07-11","2025-06-05","So haben wir GitLab-Backups von 48 Stunden auf 41 Minuten beschleunigt",[],"Erfahre, wie GitLab einen Leistungsengpass in einer 15 Jahre alten Git-Funktion aufgespürt und behoben hat, was zu einer verbesserten Effizienz führte.","engineering",{"slug":28,"featured":29,"template":30},"how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes",true,"BlogPost","content:de-de:blog:how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes.yml","yaml","How We Decreased Gitlab Repo Backup Times From 48 Hours To 41 Minutes","content","de-de/blog/how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes.yml","de-de/blog/how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes","yml",{"_path":39,"_dir":40,"_draft":6,"_partial":6,"_locale":7,"data":41,"_id":453,"_type":32,"title":454,"_source":34,"_file":455,"_stem":456,"_extension":37},"/shared/de-de/main-navigation","de-de",{"logo":42,"freeTrial":47,"sales":52,"login":57,"items":62,"search":394,"minimal":430,"duo":444},{"config":43},{"href":44,"dataGaName":45,"dataGaLocation":46},"/de-de/","gitlab logo","header",{"text":48,"config":49},"Kostenlose Testversion anfordern",{"href":50,"dataGaName":51,"dataGaLocation":46},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":53,"config":54},"Vertrieb kontaktieren",{"href":55,"dataGaName":56,"dataGaLocation":46},"/de-de/sales/","sales",{"text":58,"config":59},"Anmelden",{"href":60,"dataGaName":61,"dataGaLocation":46},"https://gitlab.com/users/sign_in/","sign in",[63,107,205,210,315,375],{"text":64,"config":65,"cards":67,"footer":90},"Plattform",{"dataNavLevelOne":66},"platform",[68,74,82],{"title":64,"description":69,"link":70},"Die umfassendste KI-basierte DevSecOps-Plattform",{"text":71,"config":72},"Erkunde unsere Plattform",{"href":73,"dataGaName":66,"dataGaLocation":46},"/de-de/platform/",{"title":75,"description":76,"link":77},"GitLab Duo (KI)","Entwickle Software schneller mit KI in jeder Phase der Entwicklung",{"text":78,"config":79},"Lerne GitLab Duo kennen",{"href":80,"dataGaName":81,"dataGaLocation":46},"/de-de/gitlab-duo/","gitlab duo ai",{"title":83,"description":84,"link":85},"Gründe, die für GitLab sprechen","10 Gründe, warum Unternehmen sich für GitLab entscheiden",{"text":86,"config":87},"Mehr erfahren",{"href":88,"dataGaName":89,"dataGaLocation":46},"/de-de/why-gitlab/","why gitlab",{"title":91,"items":92},"Erste Schritte mit",[93,98,103],{"text":94,"config":95},"Platform Engineering",{"href":96,"dataGaName":97,"dataGaLocation":46},"/de-de/solutions/platform-engineering/","platform engineering",{"text":99,"config":100},"Entwicklererfahrung",{"href":101,"dataGaName":102,"dataGaLocation":46},"/de-de/developer-experience/","Developer experience",{"text":104,"config":105},"MLOps",{"href":106,"dataGaName":104,"dataGaLocation":46},"/de-de/topics/devops/the-role-of-ai-in-devops/",{"text":108,"left":29,"config":109,"link":111,"lists":115,"footer":187},"Produkt",{"dataNavLevelOne":110},"solutions",{"text":112,"config":113},"Alle Lösungen anzeigen",{"href":114,"dataGaName":110,"dataGaLocation":46},"/de-de/solutions/",[116,142,165],{"title":117,"description":118,"link":119,"items":124},"Automatisierung","CI/CD und Automatisierung zur Beschleunigung der Bereitstellung",{"config":120},{"icon":121,"href":122,"dataGaName":123,"dataGaLocation":46},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[125,129,133,138],{"text":126,"config":127},"CI/CD",{"href":128,"dataGaLocation":46,"dataGaName":126},"/de-de/solutions/continuous-integration/",{"text":130,"config":131},"KI-unterstützte Entwicklung",{"href":80,"dataGaLocation":46,"dataGaName":132},"AI assisted development",{"text":134,"config":135},"Quellcodeverwaltung",{"href":136,"dataGaLocation":46,"dataGaName":137},"/de-de/solutions/source-code-management/","Source Code Management",{"text":139,"config":140},"Automatisierte Softwarebereitstellung",{"href":122,"dataGaLocation":46,"dataGaName":141},"Automated software delivery",{"title":143,"description":144,"link":145,"items":150},"Sicherheit","Entwickle schneller, ohne die Sicherheit zu gefährden",{"config":146},{"href":147,"dataGaName":148,"dataGaLocation":46,"icon":149},"/de-de/solutions/security-compliance/","security and compliance","ShieldCheckLight",[151,156,161],{"text":152,"config":153},"Application Security Testing",{"href":154,"dataGaName":155,"dataGaLocation":46},"/solutions/application-security-testing/","Application security testing",{"text":157,"config":158},"Schutz der Software-Lieferkette",{"href":159,"dataGaLocation":46,"dataGaName":160},"/de-de/solutions/supply-chain/","Software supply chain security",{"text":162,"config":163},"Software Compliance",{"href":164,"dataGaName":162,"dataGaLocation":46},"/solutions/software-compliance/",{"title":166,"link":167,"items":172},"Bewertung",{"config":168},{"icon":169,"href":170,"dataGaName":171,"dataGaLocation":46},"DigitalTransformation","/de-de/solutions/visibility-measurement/","visibility and measurement",[173,177,182],{"text":174,"config":175},"Sichtbarkeit und Bewertung",{"href":170,"dataGaLocation":46,"dataGaName":176},"Visibility and Measurement",{"text":178,"config":179},"Wertstrommanagement",{"href":180,"dataGaLocation":46,"dataGaName":181},"/de-de/solutions/value-stream-management/","Value Stream Management",{"text":183,"config":184},"Analysen und Einblicke",{"href":185,"dataGaLocation":46,"dataGaName":186},"/de-de/solutions/analytics-and-insights/","Analytics and insights",{"title":188,"items":189},"GitLab für",[190,195,200],{"text":191,"config":192},"Enterprise",{"href":193,"dataGaLocation":46,"dataGaName":194},"/de-de/enterprise/","enterprise",{"text":196,"config":197},"Kleinunternehmen",{"href":198,"dataGaLocation":46,"dataGaName":199},"/de-de/small-business/","small business",{"text":201,"config":202},"den öffentlichen Sektor",{"href":203,"dataGaLocation":46,"dataGaName":204},"/de-de/solutions/public-sector/","public sector",{"text":206,"config":207},"Preise",{"href":208,"dataGaName":209,"dataGaLocation":46,"dataNavLevelOne":209},"/de-de/pricing/","pricing",{"text":211,"config":212,"link":214,"lists":218,"feature":302},"Ressourcen",{"dataNavLevelOne":213},"resources",{"text":215,"config":216},"Alle Ressourcen anzeigen",{"href":217,"dataGaName":213,"dataGaLocation":46},"/de-de/resources/",[219,252,274],{"title":220,"items":221},"Erste Schritte",[222,227,232,237,242,247],{"text":223,"config":224},"Installieren",{"href":225,"dataGaName":226,"dataGaLocation":46},"/de-de/install/","install",{"text":228,"config":229},"Kurzanleitungen",{"href":230,"dataGaName":231,"dataGaLocation":46},"/de-de/get-started/","quick setup checklists",{"text":233,"config":234},"Lernen",{"href":235,"dataGaLocation":46,"dataGaName":236},"https://university.gitlab.com/","learn",{"text":238,"config":239},"Produktdokumentation",{"href":240,"dataGaName":241,"dataGaLocation":46},"https://docs.gitlab.com/","product documentation",{"text":243,"config":244},"Best-Practice-Videos",{"href":245,"dataGaName":246,"dataGaLocation":46},"/de-de/getting-started-videos/","best practice videos",{"text":248,"config":249},"Integrationen",{"href":250,"dataGaName":251,"dataGaLocation":46},"/de-de/integrations/","integrations",{"title":253,"items":254},"Entdecken",[255,260,264,269],{"text":256,"config":257},"Kundenerfolge",{"href":258,"dataGaName":259,"dataGaLocation":46},"/de-de/customers/","customer success stories",{"text":261,"config":262},"Blog",{"href":263,"dataGaName":5,"dataGaLocation":46},"/de-de/blog/",{"text":265,"config":266},"Remote",{"href":267,"dataGaName":268,"dataGaLocation":46},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"text":270,"config":271},"TeamOps",{"href":272,"dataGaName":273,"dataGaLocation":46},"/de-de/teamops/","teamops",{"title":275,"items":276},"Vernetzen",[277,282,287,292,297],{"text":278,"config":279},"GitLab-Services",{"href":280,"dataGaName":281,"dataGaLocation":46},"/de-de/services/","services",{"text":283,"config":284},"Community",{"href":285,"dataGaName":286,"dataGaLocation":46},"/community/","community",{"text":288,"config":289},"Forum",{"href":290,"dataGaName":291,"dataGaLocation":46},"https://forum.gitlab.com/","forum",{"text":293,"config":294},"Veranstaltungen",{"href":295,"dataGaName":296,"dataGaLocation":46},"/events/","events",{"text":298,"config":299},"Partner",{"href":300,"dataGaName":301,"dataGaLocation":46},"/partners/","partners",{"backgroundColor":303,"textColor":304,"text":305,"image":306,"link":310},"#2f2a6b","#fff","Perspektiven für die Softwareentwicklung der Zukunft",{"altText":307,"config":308},"the source promo card",{"src":309},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":311,"config":312},"Lies die News",{"href":313,"dataGaName":314,"dataGaLocation":46},"/de-de/the-source/","the source",{"text":316,"config":317,"lists":319},"Unternehmen",{"dataNavLevelOne":318},"company",[320],{"items":321},[322,327,333,335,340,345,350,355,360,365,370],{"text":323,"config":324},"Über",{"href":325,"dataGaName":326,"dataGaLocation":46},"/de-de/company/","about",{"text":328,"config":329,"footerGa":332},"Karriere",{"href":330,"dataGaName":331,"dataGaLocation":46},"/jobs/","jobs",{"dataGaName":331},{"text":293,"config":334},{"href":295,"dataGaName":296,"dataGaLocation":46},{"text":336,"config":337},"Geschäftsführung",{"href":338,"dataGaName":339,"dataGaLocation":46},"/company/team/e-group/","leadership",{"text":341,"config":342},"Team",{"href":343,"dataGaName":344,"dataGaLocation":46},"/company/team/","team",{"text":346,"config":347},"Handbuch",{"href":348,"dataGaName":349,"dataGaLocation":46},"https://handbook.gitlab.com/","handbook",{"text":351,"config":352},"Investor Relations",{"href":353,"dataGaName":354,"dataGaLocation":46},"https://ir.gitlab.com/","investor relations",{"text":356,"config":357},"Trust Center",{"href":358,"dataGaName":359,"dataGaLocation":46},"/de-de/security/","trust center",{"text":361,"config":362},"AI Transparency Center",{"href":363,"dataGaName":364,"dataGaLocation":46},"/de-de/ai-transparency-center/","ai transparency center",{"text":366,"config":367},"Newsletter",{"href":368,"dataGaName":369,"dataGaLocation":46},"/company/contact/","newsletter",{"text":371,"config":372},"Presse",{"href":373,"dataGaName":374,"dataGaLocation":46},"/press/","press",{"text":376,"config":377,"lists":378},"Kontakt",{"dataNavLevelOne":318},[379],{"items":380},[381,384,389],{"text":53,"config":382},{"href":55,"dataGaName":383,"dataGaLocation":46},"talk to sales",{"text":385,"config":386},"Support",{"href":387,"dataGaName":388,"dataGaLocation":46},"/support/","get help",{"text":390,"config":391},"Kundenportal",{"href":392,"dataGaName":393,"dataGaLocation":46},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":395,"login":396,"suggestions":403},"Schließen",{"text":397,"link":398},"Um Repositories und Projekte zu durchsuchen, melde dich an bei",{"text":399,"config":400},"gitlab.com",{"href":60,"dataGaName":401,"dataGaLocation":402},"search login","search",{"text":404,"default":405},"Vorschläge",[406,409,414,416,421,426],{"text":75,"config":407},{"href":80,"dataGaName":408,"dataGaLocation":402},"GitLab Duo (AI)",{"text":410,"config":411},"Code Suggestions (KI)",{"href":412,"dataGaName":413,"dataGaLocation":402},"/de-de/solutions/code-suggestions/","Code Suggestions (AI)",{"text":126,"config":415},{"href":128,"dataGaName":126,"dataGaLocation":402},{"text":417,"config":418},"GitLab auf AWS",{"href":419,"dataGaName":420,"dataGaLocation":402},"/de-de/partners/technology-partners/aws/","GitLab on AWS",{"text":422,"config":423},"GitLab auf Google Cloud",{"href":424,"dataGaName":425,"dataGaLocation":402},"/de-de/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":427,"config":428},"Warum GitLab?",{"href":88,"dataGaName":429,"dataGaLocation":402},"Why GitLab?",{"freeTrial":431,"mobileIcon":436,"desktopIcon":441},{"text":432,"config":433},"Kostenlos testen",{"href":434,"dataGaName":51,"dataGaLocation":435},"https://gitlab.com/-/trials/new/","nav",{"altText":437,"config":438},"GitLab-Symbol",{"src":439,"dataGaName":440,"dataGaLocation":435},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":437,"config":442},{"src":443,"dataGaName":440,"dataGaLocation":435},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"freeTrial":445,"mobileIcon":449,"desktopIcon":451},{"text":446,"config":447},"Erfahre mehr über GitLab Duo",{"href":80,"dataGaName":448,"dataGaLocation":435},"gitlab duo",{"altText":437,"config":450},{"src":439,"dataGaName":440,"dataGaLocation":435},{"altText":437,"config":452},{"src":443,"dataGaName":440,"dataGaLocation":435},"content:shared:de-de:main-navigation.yml","Main Navigation","shared/de-de/main-navigation.yml","shared/de-de/main-navigation",{"_path":458,"_dir":40,"_draft":6,"_partial":6,"_locale":7,"title":459,"button":460,"config":465,"_id":467,"_type":32,"_source":34,"_file":468,"_stem":469,"_extension":37},"/shared/de-de/banner","GitLab Duo Agent Platform ist jetzt in öffentlicher Beta!",{"text":461,"config":462},"Beta testen",{"href":463,"dataGaName":464,"dataGaLocation":46},"/de-de/gitlab-duo/agent-platform/","duo banner",{"layout":466},"release","content:shared:de-de:banner.yml","shared/de-de/banner.yml","shared/de-de/banner",{"_path":471,"_dir":40,"_draft":6,"_partial":6,"_locale":7,"data":472,"_id":675,"_type":32,"title":676,"_source":34,"_file":677,"_stem":678,"_extension":37},"/shared/de-de/main-footer",{"text":473,"source":474,"edit":480,"contribute":485,"config":490,"items":495,"minimal":667},"Git ist eine Marke von Software Freedom Conservancy und unsere Verwendung von „GitLab“ erfolgt unter Lizenz.",{"text":475,"config":476},"Quelltext der Seite anzeigen",{"href":477,"dataGaName":478,"dataGaLocation":479},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":481,"config":482},"Diese Seite bearbeiten",{"href":483,"dataGaName":484,"dataGaLocation":479},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":486,"config":487},"Beteilige dich",{"href":488,"dataGaName":489,"dataGaLocation":479},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":491,"facebook":492,"youtube":493,"linkedin":494},"https://x.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[496,519,574,603,637],{"title":64,"links":497,"subMenu":502},[498],{"text":499,"config":500},"DevSecOps-Plattform",{"href":73,"dataGaName":501,"dataGaLocation":479},"devsecops platform",[503],{"title":206,"links":504},[505,509,514],{"text":506,"config":507},"Tarife anzeigen",{"href":208,"dataGaName":508,"dataGaLocation":479},"view plans",{"text":510,"config":511},"Vorteile von Premium",{"href":512,"dataGaName":513,"dataGaLocation":479},"/de-de/pricing/premium/","why premium",{"text":515,"config":516},"Vorteile von Ultimate",{"href":517,"dataGaName":518,"dataGaLocation":479},"/de-de/pricing/ultimate/","why ultimate",{"title":520,"links":521},"Lösungen",[522,527,530,532,537,542,546,549,552,557,559,561,564,569],{"text":523,"config":524},"Digitale Transformation",{"href":525,"dataGaName":526,"dataGaLocation":479},"/de-de/topics/digital-transformation/","digital transformation",{"text":528,"config":529},"Sicherheit und Compliance",{"href":154,"dataGaName":155,"dataGaLocation":479},{"text":139,"config":531},{"href":122,"dataGaName":123,"dataGaLocation":479},{"text":533,"config":534},"Agile Entwicklung",{"href":535,"dataGaName":536,"dataGaLocation":479},"/de-de/solutions/agile-delivery/","agile delivery",{"text":538,"config":539},"Cloud-Transformation",{"href":540,"dataGaName":541,"dataGaLocation":479},"/de-de/topics/cloud-native/","cloud transformation",{"text":543,"config":544},"SCM",{"href":136,"dataGaName":545,"dataGaLocation":479},"source code management",{"text":126,"config":547},{"href":128,"dataGaName":548,"dataGaLocation":479},"continuous integration & delivery",{"text":178,"config":550},{"href":180,"dataGaName":551,"dataGaLocation":479},"value stream management",{"text":553,"config":554},"GitOps",{"href":555,"dataGaName":556,"dataGaLocation":479},"/de-de/solutions/gitops/","gitops",{"text":191,"config":558},{"href":193,"dataGaName":194,"dataGaLocation":479},{"text":196,"config":560},{"href":198,"dataGaName":199,"dataGaLocation":479},{"text":562,"config":563},"Öffentlicher Sektor",{"href":203,"dataGaName":204,"dataGaLocation":479},{"text":565,"config":566},"Bildungswesen",{"href":567,"dataGaName":568,"dataGaLocation":479},"/de-de/solutions/education/","education",{"text":570,"config":571},"Finanzdienstleistungen",{"href":572,"dataGaName":573,"dataGaLocation":479},"/de-de/solutions/finance/","financial services",{"title":211,"links":575},[576,578,580,582,585,587,589,591,593,595,597,599,601],{"text":223,"config":577},{"href":225,"dataGaName":226,"dataGaLocation":479},{"text":228,"config":579},{"href":230,"dataGaName":231,"dataGaLocation":479},{"text":233,"config":581},{"href":235,"dataGaName":236,"dataGaLocation":479},{"text":238,"config":583},{"href":240,"dataGaName":584,"dataGaLocation":479},"docs",{"text":261,"config":586},{"href":263,"dataGaName":5,"dataGaLocation":479},{"text":256,"config":588},{"href":258,"dataGaName":259,"dataGaLocation":479},{"text":265,"config":590},{"href":267,"dataGaName":268,"dataGaLocation":479},{"text":278,"config":592},{"href":280,"dataGaName":281,"dataGaLocation":479},{"text":270,"config":594},{"href":272,"dataGaName":273,"dataGaLocation":479},{"text":283,"config":596},{"href":285,"dataGaName":286,"dataGaLocation":479},{"text":288,"config":598},{"href":290,"dataGaName":291,"dataGaLocation":479},{"text":293,"config":600},{"href":295,"dataGaName":296,"dataGaLocation":479},{"text":298,"config":602},{"href":300,"dataGaName":301,"dataGaLocation":479},{"title":316,"links":604},[605,607,609,611,613,615,617,621,626,628,630,632],{"text":323,"config":606},{"href":325,"dataGaName":318,"dataGaLocation":479},{"text":328,"config":608},{"href":330,"dataGaName":331,"dataGaLocation":479},{"text":336,"config":610},{"href":338,"dataGaName":339,"dataGaLocation":479},{"text":341,"config":612},{"href":343,"dataGaName":344,"dataGaLocation":479},{"text":346,"config":614},{"href":348,"dataGaName":349,"dataGaLocation":479},{"text":351,"config":616},{"href":353,"dataGaName":354,"dataGaLocation":479},{"text":618,"config":619},"Sustainability",{"href":620,"dataGaName":618,"dataGaLocation":479},"/sustainability/",{"text":622,"config":623},"Vielfalt, Inklusion und Zugehörigkeit",{"href":624,"dataGaName":625,"dataGaLocation":479},"/de-de/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":356,"config":627},{"href":358,"dataGaName":359,"dataGaLocation":479},{"text":366,"config":629},{"href":368,"dataGaName":369,"dataGaLocation":479},{"text":371,"config":631},{"href":373,"dataGaName":374,"dataGaLocation":479},{"text":633,"config":634},"Transparenzerklärung zu moderner Sklaverei",{"href":635,"dataGaName":636,"dataGaLocation":479},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":638,"links":639},"Nimm Kontakt auf",[640,643,645,647,652,657,662],{"text":641,"config":642},"Sprich mit einem Experten/einer Expertin",{"href":55,"dataGaName":56,"dataGaLocation":479},{"text":385,"config":644},{"href":387,"dataGaName":388,"dataGaLocation":479},{"text":390,"config":646},{"href":392,"dataGaName":393,"dataGaLocation":479},{"text":648,"config":649},"Status",{"href":650,"dataGaName":651,"dataGaLocation":479},"https://status.gitlab.com/","status",{"text":653,"config":654},"Nutzungsbedingungen",{"href":655,"dataGaName":656,"dataGaLocation":479},"/terms/","terms of use",{"text":658,"config":659},"Datenschutzerklärung",{"href":660,"dataGaName":661,"dataGaLocation":479},"/de-de/privacy/","privacy statement",{"text":663,"config":664},"Cookie-Einstellungen",{"dataGaName":665,"dataGaLocation":479,"id":666,"isOneTrustButton":29},"cookie preferences","ot-sdk-btn",{"items":668},[669,671,673],{"text":653,"config":670},{"href":655,"dataGaName":656,"dataGaLocation":479},{"text":658,"config":672},{"href":660,"dataGaName":661,"dataGaLocation":479},{"text":663,"config":674},{"dataGaName":665,"dataGaLocation":479,"id":666,"isOneTrustButton":29},"content:shared:de-de:main-footer.yml","Main Footer","shared/de-de/main-footer.yml","shared/de-de/main-footer",[680,692],{"_path":681,"_dir":682,"_draft":6,"_partial":6,"_locale":7,"content":683,"config":687,"_id":689,"_type":32,"title":19,"_source":34,"_file":690,"_stem":691,"_extension":37},"/en-us/blog/authors/karthik-nayak","authors",{"name":19,"config":684},{"headshot":685,"ctfId":686},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659809/Blog/Author%20Headshots/Screenshot_2025-06-04_at_8.49.51%C3%A2__AM.png","3Q6ZKvaiCRw7tFZdDGlecg",{"template":688},"BlogAuthor","content:en-us:blog:authors:karthik-nayak.yml","en-us/blog/authors/karthik-nayak.yml","en-us/blog/authors/karthik-nayak",{"_path":693,"_dir":682,"_draft":6,"_partial":6,"_locale":7,"content":694,"config":698,"_id":699,"_type":32,"title":20,"_source":34,"_file":700,"_stem":701,"_extension":37},"/en-us/blog/authors/manuel-kraft",{"name":20,"config":695},{"headshot":696,"ctfId":697},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659815/Blog/Author%20Headshots/manuel_kraft.png","5q1NADtEqxyoV1F1s6JKDz",{"template":688},"content:en-us:blog:authors:manuel-kraft.yml","en-us/blog/authors/manuel-kraft.yml","en-us/blog/authors/manuel-kraft",{"_path":703,"_dir":40,"_draft":6,"_partial":6,"_locale":7,"header":704,"eyebrow":705,"blurb":706,"button":707,"secondaryButton":711,"_id":713,"_type":32,"title":714,"_source":34,"_file":715,"_stem":716,"_extension":37},"/shared/de-de/next-steps","Stelle jetzt bessere Software schneller bereit","Mehr als 50 % der Fortune-100-Unternehmen vertrauen GitLab","Erlebe, was dein Team mit der intelligenten\n\n\nDevSecOps-Plattform erreichen kann.\n",{"text":48,"config":708},{"href":709,"dataGaName":51,"dataGaLocation":710},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":53,"config":712},{"href":55,"dataGaName":56,"dataGaLocation":710},"content:shared:de-de:next-steps.yml","Next Steps","shared/de-de/next-steps.yml","shared/de-de/next-steps",1758662295181]