[{"data":1,"prerenderedAt":1379},["ShallowReactive",2],{"/de-de/blog/how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes":3,"navigation-de-de":581,"banner-de-de":1013,"footer-de-de":1021,"blog-post-authors-de-de-Karthik Nayak|Manuel Kraft":1262,"blog-related-posts-de-de-how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes":1289,"blog-promotions-de-de":1315,"next-steps-de-de":1369},{"id":4,"title":5,"authors":6,"body":9,"category":561,"date":562,"description":563,"extension":564,"externalUrl":565,"faq":565,"featured":270,"heroImage":566,"meta":567,"navigation":270,"path":568,"seo":569,"slug":576,"stem":577,"tags":565,"template":578,"updatedDate":579,"__hash__":580},"blogPosts/de-de/blog/how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes.md","So haben wir GitLab-Backups von 48 Stunden auf 41 Minuten beschleunigt",[7,8],"Karthik Nayak","Manuel Kraft",{"type":10,"value":11,"toc":551},"minimark",[12,23,31,34,39,42,76,79,82,86,98,101,106,109,116,119,135,145,156,160,163,169,404,413,417,420,450,454,457,508,511,526,530,533,536,547],[13,14,15,16,22],"p",{},"Backups von Repositorys sind ein wichtiger Bestandteil jeder robusten Strategie für die Notfallwiederherstellung. Mit zunehmender Größe der Repositorys wird die Erstellung zuverlässiger Backups jedoch immer schwieriger. Das Backup unseres eigenen ",[17,18,21],"a",{"href":19,"rel":20},"https://gitlab.com/gitlab-org/gitlab",[],"Rails-Repository"," dauerte 48 Stunden und zwang uns zu einer unmöglichen Entscheidung zwischen Backup-Häufigkeit und Systemleistung. Wir wollten dieses Thema sowohl für unsere Kund(inn)en als auch für unsere eigenen Benutzer(innen) in den Griff bekommen.",[13,24,25,26,30],{},"Schließ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 ",[27,28,29],"strong",{},"Backup-Zeiten exponentiell reduzierte",". Das Ergebnis: niedrigere Kosten, weniger Risiko und Backup-Strategien, die tatsächlich mit deiner Codebase mitwachsen.",[13,32,33],{},"Es 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.",[35,36,38],"h2",{"id":37},"skalierbare-backups","Skalierbare Backups",[13,40,41],{},"Sehen wir uns zunächst das Problem an. Wenn Unternehmen ihre Repositorys skalieren und Backups immer komplexer werden, stehen sie vor einigen Herausforderungen:",[43,44,45,52,58,64,70],"ul",{},[46,47,48,51],"li",{},[27,49,50],{},"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.",[46,53,54,57],{},[27,55,56],{},"Ressourcenintensität:"," Erweiterte Backup-Prozesse können erhebliche Serverressourcen verbrauchen, was sich möglicherweise auf andere Vorgänge auswirken kann.",[46,59,60,63],{},[27,61,62],{},"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.",[46,65,66,69],{},[27,67,68],{},"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.",[46,71,72,75],{},[27,73,74],{},"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.",[13,77,78],{},"Diese 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.",[13,80,81],{},"Sehen wir uns nun an, wie wir einen Leistungsengpass identifiziert, eine Lösung gefunden und diese bereitgestellt haben, um die Backup-Zeiten zu verkürzen.",[35,83,85],{"id":84},"die-technische-herausforderung","Die technische Herausforderung",[13,87,88,89,97],{},"Die Repository-Backup-Funktionalität von GitLab basiert auf dem Befehl ",[17,90,93],{"href":91,"rel":92},"https://git-scm.com/docs/git-bundle",[],[94,95,96],"code",{},"git bundle create",", 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.",[13,99,100],{},"Die 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.",[102,103,105],"h3",{"id":104},"grundursachenanalyse","Grundursachenanalyse",[13,107,108],{},"Um die Grundursache dieses Leistungsengpasses zu identifizieren, haben wir ein Flammendiagramm des Befehls während der Ausführung analysiert.",[13,110,111],{},[112,113],"img",{"alt":114,"src":115},"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",[13,117,118],{},"Ein 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.",[13,120,121,122,124,125,128,129,134],{},"Bei der Untersuchung des Flammendiagramms von ",[94,123,96],{},", das auf einem Repository mit 10 000 Referenzen ausgeführt wird, werden etwa 80 % der Ausführungszeit von der Funktion ",[94,126,127],{},"object_array_remove_duplicates()"," verbraucht. Diese Funktion wurde in Git im ",[17,130,133],{"href":131,"rel":132},"https://gitlab.com/gitlab-org/git/-/commit/b2a6d1c686",[],"Commit b2a6d1c686"," eingeführt (bundle: allow the same ref to be given more than once, 17.01.2009).",[13,136,137,138,140,141,144],{},"Um diese Änderung zu verstehen, ist es wichtig zu wissen, dass ",[94,139,96],{}," 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 ",[94,142,143],{},"--all"," alle Referenzen gepackt.",[13,146,147,148,151,152,155],{},"Der Commit löste ein Problem, bei dem Benutzer(innen), die über die Befehlszeile doppelte Referenzen bereitstellten – wie z. B. ",[94,149,150],{},"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 ",[94,153,154],{},"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.",[102,157,159],{"id":158},"der-fix-von-on-zu-effizientem-mapping","Der Fix: Von O(N²) zu effizientem Mapping",[13,161,162],{},"Um 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.",[13,164,165,166,168],{},"Diese Änderung verbessert die Leistung von ",[94,167,96],{}," 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.",[170,171,176],"pre",{"className":172,"code":173,"language":174,"meta":175,"style":175},"language-shell shiki shiki-themes github-light","Benchmark 1: bundle (refcount = 100000, revision = master)\n  Time (mean ± σ):  14.653 s ±  0.203 s [User: 13.940 s, System: 0.762 s]\n  Range (min … max):   14.237 s … 14.920 s  10 runs\n\nBenchmark 2: bundle (refcount = 100000, revision = HEAD)\n  Time (mean ± σ):      2.394 s ±  0.023 s  [User: 1.684 s, System: 0.798 s]\n  Range (min … max):    2.364 s …  2.425 s  10 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","shell","",[94,177,178,216,247,265,272,297,321,335,340,346,367],{"__ignoreMap":175},[179,180,183,187,191,194,198,201,204,207,210,213],"span",{"class":181,"line":182},"line",1,[179,184,186],{"class":185},"s7eDp","Benchmark",[179,188,190],{"class":189},"sYBdl"," 1:",[179,192,193],{"class":189}," bundle",[179,195,197],{"class":196},"sgsFI"," (refcount ",[179,199,200],{"class":189},"=",[179,202,203],{"class":189}," 100000,",[179,205,206],{"class":189}," revision",[179,208,209],{"class":189}," =",[179,211,212],{"class":189}," master",[179,214,215],{"class":196},")\n",[179,217,219,222,225,228,231,234,238,241,244],{"class":181,"line":218},2,[179,220,221],{"class":185},"  Time",[179,223,224],{"class":196}," (mean ",[179,226,227],{"class":189},"±",[179,229,230],{"class":189}," σ",[179,232,233],{"class":196},"):  14.653 s ±  0.203 s [User: ",[179,235,237],{"class":236},"sYu0t","13.940",[179,239,240],{"class":196}," s, System: ",[179,242,243],{"class":236},"0.762",[179,245,246],{"class":196}," s]\n",[179,248,250,253,256,259,262],{"class":181,"line":249},3,[179,251,252],{"class":185},"  Range",[179,254,255],{"class":196}," (min ",[179,257,258],{"class":189},"…",[179,260,261],{"class":189}," max",[179,263,264],{"class":196},"):   14.237 s … 14.920 s  10 runs\n",[179,266,268],{"class":181,"line":267},4,[179,269,271],{"emptyLinePlaceholder":270},true,"\n",[179,273,275,277,280,282,284,286,288,290,292,295],{"class":181,"line":274},5,[179,276,186],{"class":185},[179,278,279],{"class":189}," 2:",[179,281,193],{"class":189},[179,283,197],{"class":196},[179,285,200],{"class":189},[179,287,203],{"class":189},[179,289,206],{"class":189},[179,291,209],{"class":189},[179,293,294],{"class":189}," HEAD",[179,296,215],{"class":196},[179,298,300,302,304,306,308,311,314,316,319],{"class":181,"line":299},6,[179,301,221],{"class":185},[179,303,224],{"class":196},[179,305,227],{"class":189},[179,307,230],{"class":189},[179,309,310],{"class":196},"):      2.394 s ±  0.023 s  [User: ",[179,312,313],{"class":236},"1.684",[179,315,240],{"class":196},[179,317,318],{"class":236},"0.798",[179,320,246],{"class":196},[179,322,324,326,328,330,332],{"class":181,"line":323},7,[179,325,252],{"class":185},[179,327,255],{"class":196},[179,329,258],{"class":189},[179,331,261],{"class":189},[179,333,334],{"class":196},"):    2.364 s …  2.425 s  10 runs\n",[179,336,338],{"class":181,"line":337},8,[179,339,271],{"emptyLinePlaceholder":270},[179,341,343],{"class":181,"line":342},9,[179,344,345],{"class":185},"Summary\n",[179,347,349,352,354,356,358,360,362,364],{"class":181,"line":348},10,[179,350,351],{"class":185},"  bundle",[179,353,197],{"class":196},[179,355,200],{"class":189},[179,357,203],{"class":189},[179,359,206],{"class":189},[179,361,209],{"class":189},[179,363,294],{"class":189},[179,365,366],{"class":196},") ran\n",[179,368,370,373,376,379,382,385,388,390,392,394,396,398,400,402],{"class":181,"line":369},11,[179,371,372],{"class":185},"  6.12",[179,374,375],{"class":189}," ±",[179,377,378],{"class":236}," 0.10",[179,380,381],{"class":189}," times",[179,383,384],{"class":189}," faster",[179,386,387],{"class":189}," than",[179,389,193],{"class":189},[179,391,197],{"class":196},[179,393,200],{"class":189},[179,395,203],{"class":189},[179,397,206],{"class":189},[179,399,209],{"class":189},[179,401,212],{"class":189},[179,403,215],{"class":196},[13,405,406,407,412],{},"Der Patch wurde akzeptiert und in den Git-Upstream ",[17,408,411],{"href":409,"rel":410},"https://gitlab.com/gitlab-org/git/-/commit/bb74c0abbc31da35be52999569ea481ebd149d1d",[],"zusammengeführt",". 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.",[35,414,416],{"id":415},"das-ergebnis-drastisch-verkürzte-backup-zeiten","Das Ergebnis: Drastisch verkürzte Backup-Zeiten",[13,418,419],{},"Die Leistungssteigerungen, die sich aus dieser Verbesserung ergeben haben, sind bahnbrechend:",[43,421,422,432,438,444],{},[46,423,424,427,428,431],{},[27,425,426],{},"Von 48 Stunden auf 41 Minuten:"," Das Erstellen eines Backups unseres größten Repositorys (",[94,429,430],{},"gitlab-org/gitlab",") dauert jetzt nur noch 1,4 % der ursprünglichen Zeit.",[46,433,434,437],{},[27,435,436],{},"Konsistente Leistung:"," Die Verbesserung funktioniert zuverlässig bei Repositorys jeder Größe.",[46,439,440,443],{},[27,441,442],{},"Ressourceneffizienz:"," Wir haben die Serverlast während der Backup-Vorgänge deutlich reduziert.",[46,445,446,449],{},[27,447,448],{},"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.",[35,451,453],{"id":452},"was-bedeutet-das-für-gitlab-kundinnen","Was bedeutet das für GitLab-Kund(inn)en?",[13,455,456],{},"GitLab-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:",[43,458,459,472,482,495],{},[46,460,461,464],{},[27,462,463],{},"Transformierte Backup-Strategien",[43,465,466,469],{},[46,467,468],{},"Enterprise-Teams können umfassende nächtliche Zeitpläne aufstellen, ohne dass die Entwicklungs-Workflows beeinträchtigt werden oder umfangreiche Backup-Fenster erforderlich sind.",[46,470,471],{},"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.",[46,473,474,477],{},[27,475,476],{},"Bessere Geschäftskontinuität",[43,478,479],{},[46,480,481],{},"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.",[46,483,484,487],{},[27,485,486],{},"Reduzierter betrieblicher Mehraufwand",[43,488,489,492],{},[46,490,491],{},"Geringerer Verbrauch von Serverressourcen und kürzere Wartungsfenster.",[46,493,494],{},"Kürzere Backup-Fenster bedeuten geringere Compute-Kosten, vor allem in Cloud-Umgebungen, wo sich längere Verarbeitungszeiten direkt in höheren Rechnungen niederschlagen.",[46,496,497,500],{},[27,498,499],{},"Zukunftssichere Infrastruktur",[43,501,502,505],{},[46,503,504],{},"Wachsende Repositorys erzwingen keine schwierigen Entscheidungen mehr zwischen Backup-Häufigkeit und Systemleistung.",[46,506,507],{},"Wenn deine Codebase wächst, kann deine Backup-Strategie nahtlos mitwachsen.",[13,509,510],{},"Unternehmen 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.",[13,512,513,514,519,520,525],{},"Mit dem Release von ",[17,515,518],{"href":516,"rel":517},"https://docs.gitlab.com/releases/18/gitlab-18-0-released/",[],"GitLab 18.0 (nur in englischer Sprache verfügbar)"," können alle GitLab-Kund(inn)en unabhängig von ihrem Tarif diese Verbesserungen bereits in vollem Umfang für ihre ",[17,521,524],{"href":522,"rel":523},"https://docs.gitlab.com/administration/backup_restore/backup_gitlab/",[],"Backup-Strategie und Ausführung (nur in englischer Sprache verfügbar)"," nutzen. Es ist keine weitere Änderung der Konfiguration erforderlich.",[35,527,529],{"id":528},"wie-geht-es-weiter","Wie geht es weiter?",[13,531,532],{},"Dieser 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.",[13,534,535],{},"Wir 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.",[537,538,539],"blockquote",{},[13,540,541,542],{},"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. ",[17,543,546],{"href":544,"rel":545},"https://about.gitlab.com/de-de/eighteen/",[],"Registriere dich noch heute!",[548,549,550],"style",{},"html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":175,"searchDepth":218,"depth":218,"links":552},[553,554,558,559,560],{"id":37,"depth":218,"text":38},{"id":84,"depth":218,"text":85,"children":555},[556,557],{"id":104,"depth":249,"text":105},{"id":158,"depth":249,"text":159},{"id":415,"depth":218,"text":416},{"id":452,"depth":218,"text":453},{"id":528,"depth":218,"text":529},"engineering","2025-06-05","Erfahre, wie GitLab einen Leistungsengpass in einer 15 Jahre alten Git-Funktion aufgespürt und behoben hat, was zu einer verbesserten Effizienz führte.","md",null,"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",{},"/de-de/blog/how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes",{"ogTitle":570,"ogImage":566,"ogDescription":571,"ogSiteName":572,"noIndex":573,"ogType":574,"ogUrl":575,"title":570,"canonicalUrls":575,"description":571},"GitLab: Repository-Backups von 48h auf 41min reduziert","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",false,"Artikel","https://about.gitlab.com/blog/how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes","how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes","de-de/blog/how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes","BlogPost","2025-07-11","z4xnlSZl9NLIXOJBO8B7Y6Q_sQ0ptnZ8Cf2lUcbWcm0",{"logo":582,"freeTrial":587,"sales":592,"login":597,"items":602,"search":931,"minimal":965,"duo":983,"switchNav":992,"pricingDeployment":1003},{"config":583},{"href":584,"dataGaName":585,"dataGaLocation":586},"/de-de/","gitlab logo","header",{"text":588,"config":589},"Kostenlose Testversion anfordern",{"href":590,"dataGaName":591,"dataGaLocation":586},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/de-de&glm_content=default-saas-trial/","free trial",{"text":593,"config":594},"Demo anfordern",{"href":595,"dataGaName":596,"dataGaLocation":586},"/de-de/sales/?contact-topic=request-demo","sales",{"text":598,"config":599},"Anmelden",{"href":600,"dataGaName":601,"dataGaLocation":586},"https://gitlab.com/users/sign_in/","sign in",[603,632,734,739,853,909],{"text":604,"config":605,"menu":607},"Plattform",{"dataNavLevelOne":606},"platform",{"type":608,"columns":609},"cards",[610,616,624],{"title":604,"description":611,"link":612},"Die intelligente Orchestrierungsplattform für DevSecOps",{"text":613,"config":614},"Die Plattform erkunden",{"href":615,"dataGaName":606,"dataGaLocation":586},"/de-de/platform/",{"title":617,"description":618,"link":619},"GitLab Duo Agent Platform","Agentische KI für den gesamten Software-Lebenszyklus",{"text":620,"config":621},"Lerne GitLab Duo kennen",{"href":622,"dataGaName":623,"dataGaLocation":586},"/de-de/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":625,"description":626,"link":627},"Warum GitLab?","Erfahre, warum sich Unternehmen für GitLab entscheiden",{"text":628,"config":629},"Mehr erfahren",{"href":630,"dataGaName":631,"dataGaLocation":586},"/de-de/why-gitlab/","why gitlab",{"text":633,"left":270,"config":634,"menu":636},"Produkt",{"dataNavLevelOne":635},"solutions",{"type":637,"link":638,"columns":642,"feature":713},"lists",{"text":639,"config":640},"Alle Lösungen anzeigen",{"href":641,"dataGaName":635,"dataGaLocation":586},"/de-de/solutions/",[643,668,691],{"title":644,"description":645,"link":646,"items":651},"Automatisierung","CI/CD und Automatisierung zur Beschleunigung der Bereitstellung",{"config":647},{"icon":648,"href":649,"dataGaName":650,"dataGaLocation":586},"AutomatedCodeAlt","/de-de/solutions/delivery-automation/","automated software delivery",[652,656,659,664],{"text":653,"config":654},"CI/CD",{"href":655,"dataGaLocation":586,"dataGaName":653},"/de-de/solutions/continuous-integration/",{"text":617,"config":657},{"href":622,"dataGaLocation":586,"dataGaName":658},"gitlab duo agent platform - product menu",{"text":660,"config":661},"Quellcodeverwaltung",{"href":662,"dataGaLocation":586,"dataGaName":663},"/de-de/solutions/source-code-management/","Source Code Management",{"text":665,"config":666},"Automatische Softwarebereitstellung",{"href":649,"dataGaLocation":586,"dataGaName":667},"Automated software delivery",{"title":669,"description":670,"link":671,"items":676},"Sicherheit","Entwickle Code schneller ohne Abstriche bei der Sicherheit",{"config":672},{"href":673,"dataGaName":674,"dataGaLocation":586,"icon":675},"/de-de/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[677,681,686],{"text":678,"config":679},"Anwendungssicherheitstests",{"href":673,"dataGaName":680,"dataGaLocation":586},"Application security testing",{"text":682,"config":683},"Schutz der Software-Lieferkette",{"href":684,"dataGaLocation":586,"dataGaName":685},"/de-de/solutions/supply-chain/","Software supply chain security",{"text":687,"config":688},"Software-Compliance",{"href":689,"dataGaName":690,"dataGaLocation":586},"/de-de/solutions/software-compliance/","software compliance",{"title":692,"link":693,"items":698},"Messung",{"config":694},{"icon":695,"href":696,"dataGaName":697,"dataGaLocation":586},"DigitalTransformation","/de-de/solutions/visibility-measurement/","visibility and measurement",[699,703,708],{"text":700,"config":701},"Sichtbarkeit und Messung",{"href":696,"dataGaLocation":586,"dataGaName":702},"Visibility and Measurement",{"text":704,"config":705},"Wertstrommanagement",{"href":706,"dataGaLocation":586,"dataGaName":707},"/de-de/solutions/value-stream-management/","Value Stream Management",{"text":709,"config":710},"Analysen und Einblicke",{"href":711,"dataGaLocation":586,"dataGaName":712},"/de-de/solutions/analytics-and-insights/","Analytics and insights",{"title":714,"type":637,"items":715},"GitLab für",[716,722,728],{"text":717,"config":718},"Enterprise",{"icon":719,"href":720,"dataGaLocation":586,"dataGaName":721},"Building","/de-de/enterprise/","enterprise",{"text":723,"config":724},"Kleinunternehmen",{"icon":725,"href":726,"dataGaLocation":586,"dataGaName":727},"Work","/de-de/small-business/","small business",{"text":729,"config":730},"Öffentlicher Sektor",{"icon":731,"href":732,"dataGaLocation":586,"dataGaName":733},"Organization","/de-de/solutions/public-sector/","public sector",{"text":735,"config":736},"Preise",{"href":737,"dataGaName":738,"dataGaLocation":586,"dataNavLevelOne":738},"/de-de/pricing/","pricing",{"text":740,"config":741,"menu":743},"Ressourcen",{"dataNavLevelOne":742},"resources",{"type":637,"link":744,"columns":748,"feature":842},{"text":745,"config":746},"Alle Ressourcen anzeigen",{"href":747,"dataGaName":742,"dataGaLocation":586},"/de-de/resources/",[749,782,809],{"title":750,"items":751},"Erste Schritte",[752,757,762,767,772,777],{"text":753,"config":754},"Installieren",{"href":755,"dataGaName":756,"dataGaLocation":586},"/de-de/install/","install",{"text":758,"config":759},"Kurzanleitungen",{"href":760,"dataGaName":761,"dataGaLocation":586},"/de-de/get-started/","quick setup checklists",{"text":763,"config":764},"Lernen",{"href":765,"dataGaLocation":586,"dataGaName":766},"https://university.gitlab.com/","learn",{"text":768,"config":769},"Produktdokumentation",{"href":770,"dataGaName":771,"dataGaLocation":586},"https://docs.gitlab.com/","product documentation",{"text":773,"config":774},"Best-Practice-Videos",{"href":775,"dataGaName":776,"dataGaLocation":586},"/de-de/getting-started-videos/","best practice videos",{"text":778,"config":779},"Integrationen",{"href":780,"dataGaName":781,"dataGaLocation":586},"/de-de/integrations/","integrations",{"title":783,"items":784},"Entdecken",[785,790,795,800,804],{"text":786,"config":787},"Kundenerfolge",{"href":788,"dataGaName":789,"dataGaLocation":586},"/de-de/customers/","customer success stories",{"text":791,"config":792},"Blog",{"href":793,"dataGaName":794,"dataGaLocation":586},"/de-de/blog/","blog",{"text":796,"config":797},"Demo-Hub",{"href":798,"dataGaName":799,"dataGaLocation":586},"/de-de/demo-hub/","demo hub",{"text":801,"config":802},"The Source",{"href":803,"dataGaName":794,"dataGaLocation":586},"/de-de/the-source/",{"text":805,"config":806},"Remote",{"href":807,"dataGaName":808,"dataGaLocation":586},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":810,"items":811},"Vernetzen",[812,817,822,827,832,837],{"text":813,"config":814},"GitLab-Services",{"href":815,"dataGaName":816,"dataGaLocation":586},"/de-de/services/","services",{"text":818,"config":819},"Beitragen",{"href":820,"dataGaName":821,"dataGaLocation":586},"https://contributors.gitlab.com","contribute",{"text":823,"config":824},"Community",{"href":825,"dataGaName":826,"dataGaLocation":586},"/community/","community",{"text":828,"config":829},"Forum",{"href":830,"dataGaName":831,"dataGaLocation":586},"https://forum.gitlab.com/","forum",{"text":833,"config":834},"Veranstaltungen",{"href":835,"dataGaName":836,"dataGaLocation":586},"/events/","events",{"text":838,"config":839},"Partner",{"href":840,"dataGaName":841,"dataGaLocation":586},"/de-de/partners/","partners",{"config":843,"title":846,"text":847,"link":848},{"background":844,"textColor":845},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","Neues bei GitLab","Über die neuesten Funktionen und Verbesserungen auf dem Laufenden bleiben.",{"text":849,"config":850},"Aktuelle Nachrichten",{"href":851,"dataGaName":852,"dataGaLocation":586},"/de-de/whats-new/","whats new",{"text":854,"config":855,"menu":857},"Unternehmen",{"dataNavLevelOne":856},"company",{"type":637,"columns":858},[859],{"items":860},[861,866,872,874,879,884,889,894,899,904],{"text":862,"config":863},"Über",{"href":864,"dataGaName":865,"dataGaLocation":586},"/de-de/company/","about",{"text":867,"config":868,"footerGa":871},"Karriere",{"href":869,"dataGaName":870,"dataGaLocation":586},"/jobs/","jobs",{"dataGaName":870},{"text":833,"config":873},{"href":835,"dataGaName":836,"dataGaLocation":586},{"text":875,"config":876},"Geschäftsführung",{"href":877,"dataGaName":878,"dataGaLocation":586},"/company/team/e-group/","leadership",{"text":880,"config":881},"Handbuch",{"href":882,"dataGaName":883,"dataGaLocation":586},"https://handbook.gitlab.com/","handbook",{"text":885,"config":886},"Investor Relations",{"href":887,"dataGaName":888,"dataGaLocation":586},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":890,"config":891},"Trust Center",{"href":892,"dataGaName":893,"dataGaLocation":586},"/de-de/security/","trust center",{"text":895,"config":896},"AI Transparency Center",{"href":897,"dataGaName":898,"dataGaLocation":586},"/de-de/ai-transparency-center/","ai transparency center",{"text":900,"config":901},"Newsletter",{"href":902,"dataGaName":903,"dataGaLocation":586},"/company/contact/#contact-forms","newsletter",{"text":905,"config":906},"Presse",{"href":907,"dataGaName":908,"dataGaLocation":586},"/press/","press",{"text":910,"config":911,"menu":912},"Kontakt",{"dataNavLevelOne":856},{"type":637,"columns":913},[914],{"items":915},[916,921,926],{"text":917,"config":918},"Vertrieb kontaktieren",{"href":919,"dataGaName":920,"dataGaLocation":586},"/de-de/sales/","talk to sales",{"text":922,"config":923},"Support-Portal",{"href":924,"dataGaName":925,"dataGaLocation":586},"https://support.gitlab.com/hc/en-us","support portal",{"text":927,"config":928},"Kundenportal",{"href":929,"dataGaName":930,"dataGaLocation":586},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":932,"login":933,"suggestions":940},"Schließen",{"text":934,"link":935},"Um Repositorys und Projekte zu durchsuchen, melde dich an bei",{"text":936,"config":937},"gitlab.com",{"href":600,"dataGaName":938,"dataGaLocation":939},"search login","search",{"text":941,"default":942},"Vorschläge",[943,945,950,952,957,962],{"text":617,"config":944},{"href":622,"dataGaName":617,"dataGaLocation":939},{"text":946,"config":947},"Codevorschläge (KI)",{"href":948,"dataGaName":949,"dataGaLocation":939},"/de-de/solutions/code-suggestions/","Code Suggestions (AI)",{"text":653,"config":951},{"href":655,"dataGaName":653,"dataGaLocation":939},{"text":953,"config":954},"GitLab auf AWS",{"href":955,"dataGaName":956,"dataGaLocation":939},"/de-de/partners/technology-partners/aws/","GitLab on AWS",{"text":958,"config":959},"GitLab auf Google Cloud",{"href":960,"dataGaName":961,"dataGaLocation":939},"/de-de/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":625,"config":963},{"href":630,"dataGaName":964,"dataGaLocation":939},"Why GitLab?",{"freeTrial":966,"mobileIcon":971,"desktopIcon":976,"secondaryButton":979},{"text":967,"config":968},"Kostenlos testen",{"href":969,"dataGaName":591,"dataGaLocation":970},"https://gitlab.com/-/trials/new/","nav",{"altText":972,"config":973},"GitLab-Symbol",{"src":974,"dataGaName":975,"dataGaLocation":970},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":972,"config":977},{"src":978,"dataGaName":975,"dataGaLocation":970},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":750,"config":980},{"href":981,"dataGaName":982,"dataGaLocation":970},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/de-de/get-started/","get started",{"freeTrial":984,"mobileIcon":988,"desktopIcon":990},{"text":985,"config":986},"Mehr über GitLab Duo erfahren",{"href":622,"dataGaName":987,"dataGaLocation":970},"gitlab duo",{"altText":972,"config":989},{"src":974,"dataGaName":975,"dataGaLocation":970},{"altText":972,"config":991},{"src":978,"dataGaName":975,"dataGaLocation":970},{"button":993,"mobileIcon":998,"desktopIcon":1000},{"text":994,"config":995},"/Option",{"href":996,"dataGaName":997,"dataGaLocation":970},"#contact","switch",{"altText":972,"config":999},{"src":974,"dataGaName":975,"dataGaLocation":970},{"altText":972,"config":1001},{"src":1002,"dataGaName":975,"dataGaLocation":970},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":1004,"mobileIcon":1009,"desktopIcon":1011},{"text":1005,"config":1006},"Zurück zur Preisübersicht",{"href":737,"dataGaName":1007,"dataGaLocation":970,"icon":1008},"back to pricing","GoBack",{"altText":972,"config":1010},{"src":974,"dataGaName":975,"dataGaLocation":970},{"altText":972,"config":1012},{"src":978,"dataGaName":975,"dataGaLocation":970},{"title":1014,"button":1015,"config":1019},"GitLab Orbit ist da: die Kontextebene für KI-Agenten",{"text":628,"config":1016},{"href":1017,"dataGaName":1018,"dataGaLocation":586},"/de-de/gitlab-orbit/","orbit",{"layout":1020,"disabled":573},"release",{"data":1022},{"text":1023,"source":1024,"edit":1030,"contribute":1035,"config":1040,"items":1045,"minimal":1251},"Git ist eine Marke von Software Freedom Conservancy und unsere Verwendung von „GitLab“ erfolgt unter Lizenz.",{"text":1025,"config":1026},"Quelltext der Seite anzeigen",{"href":1027,"dataGaName":1028,"dataGaLocation":1029},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":1031,"config":1032},"Diese Seite bearbeiten",{"href":1033,"dataGaName":1034,"dataGaLocation":1029},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":1036,"config":1037},"Beteilige dich",{"href":1038,"dataGaName":1039,"dataGaLocation":1029},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":1041,"facebook":1042,"youtube":1043,"linkedin":1044},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1046,1091,1144,1186,1218],{"title":735,"links":1047,"subMenu":1062},[1048,1052,1057],{"text":1049,"config":1050},"Tarife anzeigen",{"href":737,"dataGaName":1051,"dataGaLocation":1029},"view plans",{"text":1053,"config":1054},"Vorteile von Premium",{"href":1055,"dataGaName":1056,"dataGaLocation":1029},"/de-de/pricing/premium/","why premium",{"text":1058,"config":1059},"Vorteile von Ultimate",{"href":1060,"dataGaName":1061,"dataGaLocation":1029},"/de-de/pricing/ultimate/","why ultimate",[1063],{"title":910,"links":1064},[1065,1067,1069,1071,1076,1081,1086],{"text":917,"config":1066},{"href":919,"dataGaName":596,"dataGaLocation":1029},{"text":922,"config":1068},{"href":924,"dataGaName":925,"dataGaLocation":1029},{"text":927,"config":1070},{"href":929,"dataGaName":930,"dataGaLocation":1029},{"text":1072,"config":1073},"Status",{"href":1074,"dataGaName":1075,"dataGaLocation":1029},"https://status.gitlab.com/","status",{"text":1077,"config":1078},"Nutzungsbedingungen",{"href":1079,"dataGaName":1080,"dataGaLocation":1029},"/terms/","terms of use",{"text":1082,"config":1083},"Datenschutzerklärung",{"href":1084,"dataGaName":1085,"dataGaLocation":1029},"/de-de/privacy/","privacy statement",{"text":1087,"config":1088},"Cookie-Einstellungen",{"dataGaName":1089,"dataGaLocation":1029,"id":1090,"isOneTrustButton":270},"cookie preferences","ot-sdk-btn",{"title":633,"links":1092,"subMenu":1101},[1093,1097],{"text":1094,"config":1095},"DevSecOps-Plattform",{"href":615,"dataGaName":1096,"dataGaLocation":1029},"devsecops platform",{"text":1098,"config":1099},"KI-unterstützte Entwicklung",{"href":622,"dataGaName":1100,"dataGaLocation":1029},"ai-assisted development",[1102],{"title":1103,"links":1104},"Themen",[1105,1109,1114,1119,1124,1129,1134,1139],{"text":653,"config":1106},{"href":1107,"dataGaName":1108,"dataGaLocation":1029},"/de-de/topics/ci-cd/","cicd",{"text":1110,"config":1111},"GitOps",{"href":1112,"dataGaName":1113,"dataGaLocation":1029},"/de-de/topics/gitops/","gitops",{"text":1115,"config":1116},"DevOps",{"href":1117,"dataGaName":1118,"dataGaLocation":1029},"/de-de/topics/devops/","devops",{"text":1120,"config":1121},"Versionskontrolle",{"href":1122,"dataGaName":1123,"dataGaLocation":1029},"/de-de/topics/version-control/","version control",{"text":1125,"config":1126},"DevSecOps",{"href":1127,"dataGaName":1128,"dataGaLocation":1029},"/de-de/topics/devsecops/","devsecops",{"text":1130,"config":1131},"Cloud-nativ",{"href":1132,"dataGaName":1133,"dataGaLocation":1029},"/de-de/topics/cloud-native/","cloud native",{"text":1135,"config":1136},"KI für das Programmieren",{"href":1137,"dataGaName":1138,"dataGaLocation":1029},"/de-de/topics/devops/ai-for-coding/","ai for coding",{"text":1140,"config":1141},"Agentische KI",{"href":1142,"dataGaName":1143,"dataGaLocation":1029},"/de-de/topics/agentic-ai/","agentic ai",{"title":1145,"links":1146},"Lösungen",[1147,1150,1152,1157,1161,1164,1167,1170,1172,1174,1176,1181],{"text":678,"config":1148},{"href":673,"dataGaName":1149,"dataGaLocation":1029},"Application Security Testing",{"text":665,"config":1151},{"href":649,"dataGaName":650,"dataGaLocation":1029},{"text":1153,"config":1154},"Agile Entwicklung",{"href":1155,"dataGaName":1156,"dataGaLocation":1029},"/de-de/solutions/agile-delivery/","agile delivery",{"text":1158,"config":1159},"SCM",{"href":662,"dataGaName":1160,"dataGaLocation":1029},"source code management",{"text":653,"config":1162},{"href":655,"dataGaName":1163,"dataGaLocation":1029},"continuous integration & delivery",{"text":704,"config":1165},{"href":706,"dataGaName":1166,"dataGaLocation":1029},"value stream management",{"text":1110,"config":1168},{"href":1169,"dataGaName":1113,"dataGaLocation":1029},"/de-de/solutions/gitops/",{"text":717,"config":1171},{"href":720,"dataGaName":721,"dataGaLocation":1029},{"text":723,"config":1173},{"href":726,"dataGaName":727,"dataGaLocation":1029},{"text":729,"config":1175},{"href":732,"dataGaName":733,"dataGaLocation":1029},{"text":1177,"config":1178},"Bildungswesen",{"href":1179,"dataGaName":1180,"dataGaLocation":1029},"/de-de/solutions/education/","education",{"text":1182,"config":1183},"Finanzdienstleistungen",{"href":1184,"dataGaName":1185,"dataGaLocation":1029},"/de-de/solutions/finance/","financial services",{"title":740,"links":1187},[1188,1190,1192,1194,1197,1199,1202,1204,1206,1208,1210,1212,1214,1216],{"text":753,"config":1189},{"href":755,"dataGaName":756,"dataGaLocation":1029},{"text":758,"config":1191},{"href":760,"dataGaName":761,"dataGaLocation":1029},{"text":763,"config":1193},{"href":765,"dataGaName":766,"dataGaLocation":1029},{"text":768,"config":1195},{"href":770,"dataGaName":1196,"dataGaLocation":1029},"docs",{"text":791,"config":1198},{"href":793,"dataGaName":794,"dataGaLocation":1029},{"text":1200,"config":1201},"Neuerungen",{"href":851,"dataGaName":852,"dataGaLocation":1029},{"text":786,"config":1203},{"href":788,"dataGaName":789,"dataGaLocation":1029},{"text":805,"config":1205},{"href":807,"dataGaName":808,"dataGaLocation":1029},{"text":813,"config":1207},{"href":815,"dataGaName":816,"dataGaLocation":1029},{"text":818,"config":1209},{"href":820,"dataGaName":821,"dataGaLocation":1029},{"text":823,"config":1211},{"href":825,"dataGaName":826,"dataGaLocation":1029},{"text":828,"config":1213},{"href":830,"dataGaName":831,"dataGaLocation":1029},{"text":833,"config":1215},{"href":835,"dataGaName":836,"dataGaLocation":1029},{"text":838,"config":1217},{"href":840,"dataGaName":841,"dataGaLocation":1029},{"title":854,"links":1219},[1220,1222,1224,1226,1228,1230,1235,1240,1242,1244,1246],{"text":862,"config":1221},{"href":864,"dataGaName":856,"dataGaLocation":1029},{"text":867,"config":1223},{"href":869,"dataGaName":870,"dataGaLocation":1029},{"text":875,"config":1225},{"href":877,"dataGaName":878,"dataGaLocation":1029},{"text":880,"config":1227},{"href":882,"dataGaName":883,"dataGaLocation":1029},{"text":885,"config":1229},{"href":887,"dataGaName":888,"dataGaLocation":1029},{"text":1231,"config":1232},"Nachhaltigkeit",{"href":1233,"dataGaName":1234,"dataGaLocation":1029},"/sustainability/","Sustainability",{"text":1236,"config":1237},"Vielfalt, Inklusion und Zugehörigkeit",{"href":1238,"dataGaName":1239,"dataGaLocation":1029},"/de-de/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":890,"config":1241},{"href":892,"dataGaName":893,"dataGaLocation":1029},{"text":900,"config":1243},{"href":902,"dataGaName":903,"dataGaLocation":1029},{"text":905,"config":1245},{"href":907,"dataGaName":908,"dataGaLocation":1029},{"text":1247,"config":1248},"Transparenzerklärung zu moderner Sklaverei",{"href":1249,"dataGaName":1250,"dataGaLocation":1029},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1252},[1253,1256,1259],{"text":1254,"config":1255},"Terms",{"href":1079,"dataGaName":1080,"dataGaLocation":1029},{"text":1257,"config":1258},"Cookies",{"dataGaName":1089,"dataGaLocation":1029,"id":1090,"isOneTrustButton":270},{"text":1260,"config":1261},"Datenschutz",{"href":1084,"dataGaName":1085,"dataGaLocation":1029},[1263,1277],{"id":1264,"title":7,"body":565,"config":1265,"content":1267,"description":565,"extension":1271,"meta":1272,"navigation":270,"path":1273,"seo":1274,"stem":1275,"__hash__":1276},"blogAuthors/en-us/blog/authors/karthik-nayak.yml",{"template":1266},"BlogAuthor",{"name":7,"config":1268},{"headshot":1269,"ctfId":1270},"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","yml",{},"/en-us/blog/authors/karthik-nayak",{},"en-us/blog/authors/karthik-nayak","pDQbfmQk6aaJ6PA9L68AzPlzIUBcosTh7WBoq680gpk",{"id":1278,"title":8,"body":565,"config":1279,"content":1280,"description":565,"extension":1271,"meta":1284,"navigation":270,"path":1285,"seo":1286,"stem":1287,"__hash__":1288},"blogAuthors/en-us/blog/authors/manuel-kraft.yml",{"template":1266},{"name":8,"config":1281},{"headshot":1282,"ctfId":1283},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659815/Blog/Author%20Headshots/manuel_kraft.png","5q1NADtEqxyoV1F1s6JKDz",{},"/en-us/blog/authors/manuel-kraft",{},"en-us/blog/authors/manuel-kraft","TqWe6Rx9TnEopbWMshRuht-6QCOpGPAMjs1vtlA_93Y",[1290,1299,1307],{"title":1291,"description":1292,"heroImage":1293,"category":561,"date":1294,"authors":1295,"slug":1298,"externalUrl":565},"Confidential AI für GitLab Self-Hosted","KI-Coding-Agenten in GitLab Duo nutzen, ohne dass Quellcode eine hardwareverschlüsselte Grenze verlässt, und ohne eigene GPUs zu betreiben.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1773866173/vte9qh8rriznvyclhkes.png","2026-08-06",[1296,1297],"Mathias Ewald","Martin Paloncy","confidential-ai-for-gitlab-self-hosted",{"title":1300,"description":1301,"heroImage":1302,"category":561,"date":1303,"authors":1304,"slug":1306,"externalUrl":565},"Green DevOps: Warum CO2-Messung in die CI/CD-Pipeline gehört","Jeder Pipeline-Lauf verbraucht Energie, die nirgends sichtbar wird. Eco CI und Carmen machen diesen CO2-Ausstoß sichtbar, direkt in den Pipelines.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1765809212/noh0mdfn9o94ry9ykura.png","2026-07-09",[1305],"Lysanne Pinto","green-devops-carbon-measurement-cicd-pipeline",{"title":1308,"description":1309,"heroImage":1310,"category":561,"date":1311,"authors":1312,"slug":1314,"externalUrl":565},"Was ist CI/CD? Bedeutung, Vorteile und Tool-Auswahl","Was CI/CD bedeutet, welche Vorteile die Einführung bringt und worauf bei der Tool-Auswahl zu achten ist.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663328/Blog/Hero%20Images/cicd3.jpg","2026-06-22",[1313],"GitLab","what-is-ci-cd",{"promotions":1316},[1317,1331,1343,1355],{"id":1318,"categories":1319,"header":1321,"text":1322,"button":1323,"image":1328},"ai-modernization",[1320],"ai","Hält KI, was uns versprochen wurde?","Das Quiz dauert maximal 5 Minuten.",{"text":1324,"config":1325},"Ermittle deinen KI-Reifegrad",{"href":1326,"dataGaName":1327,"dataGaLocation":794},"/de-de/assessments/ai-modernization-assessment/","modernization assessment",{"config":1329},{"src":1330},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1332,"categories":1333,"header":1335,"text":1322,"button":1336,"image":1340},"devops-modernization",[1334,1128],"product","Verwaltest du Tool-Chaos oder stellst du Innovationen bereit?",{"text":1337,"config":1338},"Ermittle deinen DevOps-Reifegrad",{"href":1339,"dataGaName":1327,"dataGaLocation":794},"/de-de/assessments/devops-modernization-assessment/",{"config":1341},{"src":1342},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1344,"categories":1345,"header":1347,"text":1322,"button":1348,"image":1352},"security-modernization",[1346],"security","Tauschst du Schnelligkeit gegen Sicherheit ein?",{"text":1349,"config":1350},"Ermittle deinen Sicherheitsreifegrad",{"href":1351,"dataGaName":1327,"dataGaLocation":794},"/de-de/assessments/security-modernization-assessment/",{"config":1353},{"src":1354},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1356,"paths":1357,"header":1360,"text":1361,"button":1362,"image":1367},"github-azure-migration",[1358,1359],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Ist dein Team bereit für den Umzug von GitHub nach Azure?","GitHub stellt bereits auf Azure um. Finde heraus, was das für dich bedeutet.",{"text":1363,"config":1364},"Erfahre, wie GitLab im Vergleich zu GitHub abschneidet",{"href":1365,"dataGaName":1366,"dataGaLocation":794},"/de-de/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1368},{"src":1342},{"header":1370,"blurb":1371,"button":1372,"secondaryButton":1377},"Beginne noch heute, schneller zu entwickeln","Entdecke, was dein Team mit der intelligenten Orchestrierungsplattform für DevSecOps erreichen kann.\n",{"text":1373,"config":1374},"Kostenlosen Test starten",{"href":1375,"dataGaName":591,"dataGaLocation":1376},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/de-de/","feature",{"text":917,"config":1378},{"href":919,"dataGaName":596,"dataGaLocation":1376},1786803740182]