[{"data":1,"prerenderedAt":1472},["ShallowReactive",2],{"/de-de/blog/categories/devsecops/page/3":3,"navigation-de-de":21,"banner-de-de":447,"footer-de-de":454,"devsecops-category-page-total-items-de-de":708,"devsecops-category-page-featured-de-de":709,"devsecops-category-page-3-de-de":1451},{"id":4,"title":5,"body":6,"category":6,"config":7,"content":11,"description":6,"extension":13,"meta":14,"navigation":15,"path":16,"seo":17,"slug":6,"stem":19,"testContent":6,"type":6,"__hash__":20},"blogCategories/de-de/blog/categories/devsecops.yml","Devsecops",null,{"template":8,"slug":9,"hide":10},"BlogCategory","devsecops",false,{"name":12},"DevSecOps","yml",{},true,"/de-de/blog/categories/devsecops",{"title":12,"description":18},"Browse articles related to DevSecOps on the GitLab Blog","de-de/blog/categories/devsecops","-VYAbxDp8VgKNnix343UzZtmmsJMwVyVWyhmpemBm0U",{"logo":22,"freeTrial":27,"sales":32,"login":37,"items":42,"search":363,"minimal":399,"duo":417,"switchNav":426,"pricingDeployment":437},{"config":23},{"href":24,"dataGaName":25,"dataGaLocation":26},"/de-de/","gitlab logo","header",{"text":28,"config":29},"Kostenlos testen",{"href":30,"dataGaName":31,"dataGaLocation":26},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/de-de&glm_content=default-saas-trial/","free trial",{"text":33,"config":34},"Demo anfordern",{"href":35,"dataGaName":36,"dataGaLocation":26},"/de-de/sales/?contact-topic=request-demo","sales",{"text":38,"config":39},"Anmelden",{"href":40,"dataGaName":41,"dataGaLocation":26},"https://gitlab.com/users/sign_in/","sign in",[43,119,207,212,287,341],{"text":44,"left":15,"config":45,"menu":47},"Plattform",{"dataNavLevelOne":46},"platform",{"type":48,"link":49,"columns":53,"feature":108},"lists",{"text":50,"config":51},"Die Plattform erkunden",{"href":52,"dataGaName":46,"dataGaLocation":26},"/de-de/platform/",[54,72,90],{"title":55,"items":56},"Ausführung und Workflows",[57,62,67],{"text":58,"config":59},"CI/CD",{"href":60,"dataGaLocation":26,"dataGaName":61},"/de-de/solutions/continuous-integration/","ci/cd",{"text":63,"config":64},"Quellcodeverwaltung",{"href":65,"dataGaLocation":26,"dataGaName":66},"/de-de/solutions/source-code-management/","source code management",{"text":68,"config":69},"Agile Delivery",{"href":70,"dataGaLocation":26,"dataGaName":71},"/de-de/solutions/agile-delivery/","agile delivery",{"title":73,"items":74},"Sicherheit und Governance",[75,80,85],{"text":76,"config":77},"Anwendungssicherheitstests",{"href":78,"dataGaLocation":26,"dataGaName":79},"/de-de/solutions/application-security-testing/","application security testing",{"text":81,"config":82},"Governance und Compliance",{"href":83,"dataGaLocation":26,"dataGaName":84},"/de-de/solutions/software-compliance/","governance and compliance",{"text":86,"config":87},"Lieferkettensicherheit",{"href":88,"dataGaLocation":26,"dataGaName":89},"/de-de/solutions/supply-chain/","supply chain security",{"title":91,"items":92},"Kontext und KI",[93,98,103],{"text":94,"config":95},"Agentische Orchestrierung",{"href":96,"dataGaLocation":26,"dataGaName":97},"/de-de/gitlab-duo-agent-platform/","agentic orchestration",{"text":99,"config":100},"Kontextgraph",{"href":101,"dataGaLocation":26,"dataGaName":102},"/de-de/gitlab-orbit/","context graph",{"text":104,"config":105},"Sichtbarkeit und Messung",{"href":106,"dataGaLocation":26,"dataGaName":107},"/de-de/solutions/visibility-measurement/","visibility and measurement",{"config":109,"title":112,"text":113,"link":114},{"background":110,"textColor":111},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","Warum GitLab","Eine Plattform für Schnelligkeit und Kontrolle im gesamten Software-Lebenszyklus.",{"text":115,"config":116},"Mehr erfahren",{"href":117,"dataGaName":118,"dataGaLocation":26},"/de-de/why-gitlab/","why gitlab",{"text":120,"left":15,"config":121,"menu":123},"Lösungen",{"dataNavLevelOne":122},"solutions",{"type":48,"link":124,"columns":128,"feature":198},{"text":125,"config":126},"Alle Lösungen anzeigen",{"href":127,"dataGaName":122,"dataGaLocation":26},"/de-de/solutions/",[129,147,165],{"title":130,"items":131},"Ergebnisse",[132,137,142],{"text":133,"config":134},"DevOps-Modernisierung",{"href":135,"dataGaLocation":26,"dataGaName":136},"/de-de/assessments/devops-modernization-assessment/","devops modernization",{"text":138,"config":139},"Sicherheitsmodernisierung",{"href":140,"dataGaLocation":26,"dataGaName":141},"/de-de/assessments/security-modernization-assessment/","security modernization",{"text":143,"config":144},"KI-Modernisierung",{"href":145,"dataGaLocation":26,"dataGaName":146},"/de-de/assessments/ai-modernization-assessment/","ai modernization",{"title":148,"items":149},"Nach Größe",[150,155,160],{"text":151,"config":152},"Große Unternehmen",{"href":153,"dataGaLocation":26,"dataGaName":154},"/de-de/enterprise/","enterprise",{"text":156,"config":157},"Kleine Unternehmen",{"href":158,"dataGaLocation":26,"dataGaName":159},"/de-de/small-business/","small business",{"text":161,"config":162},"Start-ups",{"href":163,"dataGaLocation":26,"dataGaName":164},"/de-de/solutions/startups/","startups",{"title":166,"items":167},"Branchen",[168,173,178,183,188,193],{"text":169,"config":170},"Finanzdienstleistungen",{"href":171,"dataGaLocation":26,"dataGaName":172},"/de-de/solutions/finance/","financial services",{"text":174,"config":175},"Öffentlicher Sektor",{"href":176,"dataGaLocation":26,"dataGaName":177},"/de-de/solutions/public-sector/","public sector",{"text":179,"config":180},"Telekommunikation",{"href":181,"dataGaLocation":26,"dataGaName":182},"/de-de/solutions/telecommunications/","telecommunications",{"text":184,"config":185},"Automobilindustrie",{"href":186,"dataGaLocation":26,"dataGaName":187},"/de-de/solutions/automotive/","automotive",{"text":189,"config":190},"Bildungswesen",{"href":191,"dataGaLocation":26,"dataGaName":192},"/de-de/solutions/education/","education",{"text":194,"config":195},"Luft- und Raumfahrt",{"href":196,"dataGaLocation":26,"dataGaName":197},"/de-de/solutions/aerospace/","aerospace",{"config":199,"title":200,"text":201,"link":202},{"background":110,"textColor":111},"GitLab Transcend","Mehr über unsere neusten Innovationen, die bei der letzten Transcend vorgestellt wurden.",{"text":203,"config":204},"Blogbeitrag lesen",{"href":205,"dataGaName":206,"dataGaLocation":26},"/de-de/blog/gitlab-transcend-announcements/","gitlab transcend",{"text":208,"config":209},"Preise",{"href":210,"dataGaName":211,"dataGaLocation":26,"dataNavLevelOne":211},"/de-de/pricing/","pricing",{"text":213,"config":214,"menu":216},"Ressourcen",{"dataNavLevelOne":215},"resources",{"type":48,"link":217,"columns":221,"feature":278},{"text":218,"config":219},"Alle Ressourcen anzeigen",{"href":220,"dataGaName":215,"dataGaLocation":26},"/de-de/resources/",[222,250],{"title":223,"items":224},"Entdecken",[225,230,235,240,245],{"text":226,"config":227},"Dokumentation",{"href":228,"dataGaName":229,"dataGaLocation":26},"https://docs.gitlab.com/","docs",{"text":231,"config":232},"GitLab University",{"href":233,"dataGaName":234,"dataGaLocation":26},"https://university.gitlab.com/","university",{"text":236,"config":237},"Demo-Reihe",{"href":238,"dataGaName":239,"dataGaLocation":26},"/de-de/gitlab-technical-demo-series/","demo series",{"text":241,"config":242},"Demo-Hub",{"href":243,"dataGaName":244,"dataGaLocation":26},"/de-de/demo-hub/","demo hub",{"text":246,"config":247},"Dienste",{"href":248,"dataGaName":249,"dataGaLocation":26},"/de-de/services/","services",{"title":251,"items":252},"Vernetzen",[253,258,263,268,273],{"text":254,"config":255},"Blog",{"href":256,"dataGaName":257,"dataGaLocation":26},"/de-de/blog/","blog",{"text":259,"config":260},"Community",{"href":261,"dataGaName":262,"dataGaLocation":26},"/community/","community",{"text":264,"config":265},"Kunden",{"href":266,"dataGaName":267,"dataGaLocation":26},"/de-de/customers/","customers",{"text":269,"config":270},"Partner",{"href":271,"dataGaName":272,"dataGaLocation":26},"/de-de/partners/","partners",{"text":274,"config":275},"Veranstaltungen",{"href":276,"dataGaName":277,"dataGaLocation":26},"/events/","events",{"config":279,"title":280,"text":281,"link":282},{"background":110,"textColor":111},"Neues bei GitLab","Über die neuesten Funktionen und Verbesserungen auf dem Laufenden bleiben.",{"text":283,"config":284},"Aktuelle Nachrichten",{"href":285,"dataGaName":286,"dataGaLocation":26},"/de-de/whats-new/","whats new",{"text":288,"config":289,"menu":291},"Unternehmen",{"dataNavLevelOne":290},"company",{"type":48,"columns":292},[293],{"items":294},[295,300,306,311,316,321,326,331,336],{"text":296,"config":297},"Über",{"href":298,"dataGaName":299,"dataGaLocation":26},"/de-de/company/","about",{"text":301,"config":302,"footerGa":305},"Karriere",{"href":303,"dataGaName":304,"dataGaLocation":26},"/jobs/","jobs",{"dataGaName":304},{"text":307,"config":308},"Presse",{"href":309,"dataGaName":310,"dataGaLocation":26},"/press/","press",{"text":312,"config":313},"Handbuch",{"href":314,"dataGaName":315,"dataGaLocation":26},"https://handbook.gitlab.com/","handbook",{"text":317,"config":318},"Geschäftsführung",{"href":319,"dataGaName":320,"dataGaLocation":26},"/company/team/e-group/","leadership",{"text":322,"config":323},"Investor Relations",{"href":324,"dataGaName":325,"dataGaLocation":26},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":327,"config":328},"Trust Center",{"href":329,"dataGaName":330,"dataGaLocation":26},"/de-de/security/","trust center",{"text":332,"config":333},"AI Transparency Center",{"href":334,"dataGaName":335,"dataGaLocation":26},"/de-de/ai-transparency-center/","ai transparency center",{"text":337,"config":338},"Newsletter",{"href":339,"dataGaName":340,"dataGaLocation":26},"/company/contact/#contact-forms","newsletter",{"text":342,"config":343,"menu":344},"Kontakt",{"dataNavLevelOne":290},{"type":48,"columns":345},[346],{"items":347},[348,353,358],{"text":349,"config":350},"Vertrieb kontaktieren",{"href":351,"dataGaName":352,"dataGaLocation":26},"/de-de/sales/","talk to sales",{"text":354,"config":355},"Support-Portal",{"href":356,"dataGaName":357,"dataGaLocation":26},"https://support.gitlab.com/hc/en-us","support portal",{"text":359,"config":360},"Kundenportal",{"href":361,"dataGaName":362,"dataGaLocation":26},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":364,"login":365,"suggestions":372},"Schließen",{"text":366,"link":367},"Um Repositorys und Projekte zu durchsuchen, melde dich an bei",{"text":368,"config":369},"gitlab.com",{"href":40,"dataGaName":370,"dataGaLocation":371},"search login","search",{"text":373,"default":374},"Vorschläge",[375,378,383,385,390,395],{"text":376,"config":377},"GitLab Duo Agent Platform",{"href":96,"dataGaName":376,"dataGaLocation":371},{"text":379,"config":380},"Codevorschläge (KI)",{"href":381,"dataGaName":382,"dataGaLocation":371},"/de-de/solutions/code-suggestions/","Code Suggestions (AI)",{"text":58,"config":384},{"href":60,"dataGaName":58,"dataGaLocation":371},{"text":386,"config":387},"GitLab auf AWS",{"href":388,"dataGaName":389,"dataGaLocation":371},"/de-de/partners/technology-partners/aws/","GitLab on AWS",{"text":391,"config":392},"GitLab auf Google Cloud",{"href":393,"dataGaName":394,"dataGaLocation":371},"/de-de/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":396,"config":397},"Warum GitLab?",{"href":117,"dataGaName":398,"dataGaLocation":371},"Why GitLab?",{"freeTrial":400,"mobileIcon":404,"desktopIcon":409,"secondaryButton":412},{"text":28,"config":401},{"href":402,"dataGaName":31,"dataGaLocation":403},"https://gitlab.com/-/trials/new/","nav",{"altText":405,"config":406},"GitLab-Symbol",{"src":407,"dataGaName":408,"dataGaLocation":403},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":405,"config":410},{"src":411,"dataGaName":408,"dataGaLocation":403},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":413,"config":414},"Erste Schritte",{"href":415,"dataGaName":416,"dataGaLocation":403},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/de-de/get-started/","get started",{"freeTrial":418,"mobileIcon":422,"desktopIcon":424},{"text":419,"config":420},"Mehr über GitLab Duo erfahren",{"href":96,"dataGaName":421,"dataGaLocation":403},"gitlab duo",{"altText":405,"config":423},{"src":407,"dataGaName":408,"dataGaLocation":403},{"altText":405,"config":425},{"src":411,"dataGaName":408,"dataGaLocation":403},{"button":427,"mobileIcon":432,"desktopIcon":434},{"text":428,"config":429},"/Option",{"href":430,"dataGaName":431,"dataGaLocation":403},"#contact","switch",{"altText":405,"config":433},{"src":407,"dataGaName":408,"dataGaLocation":403},{"altText":405,"config":435},{"src":436,"dataGaName":408,"dataGaLocation":403},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":438,"mobileIcon":443,"desktopIcon":445},{"text":439,"config":440},"Zurück zur Preisübersicht",{"href":210,"dataGaName":441,"dataGaLocation":403,"icon":442},"back to pricing","GoBack",{"altText":405,"config":444},{"src":407,"dataGaName":408,"dataGaLocation":403},{"altText":405,"config":446},{"src":411,"dataGaName":408,"dataGaLocation":403},{"title":448,"button":449,"config":452},"GitLab Orbit ist da: die Kontextebene für KI-Agenten",{"text":115,"config":450},{"href":101,"dataGaName":451,"dataGaLocation":26},"orbit",{"layout":453,"disabled":10},"release",{"data":455},{"text":456,"source":457,"edit":463,"contribute":468,"config":473,"items":478,"minimal":697},"Git ist eine Marke von Software Freedom Conservancy und unsere Verwendung von „GitLab“ erfolgt unter Lizenz.",{"text":458,"config":459},"Quelltext der Seite anzeigen",{"href":460,"dataGaName":461,"dataGaLocation":462},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":464,"config":465},"Diese Seite bearbeiten",{"href":466,"dataGaName":467,"dataGaLocation":462},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":469,"config":470},"Beteilige dich",{"href":471,"dataGaName":472,"dataGaLocation":462},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":474,"facebook":475,"youtube":476,"linkedin":477},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[479,524,578,622,664],{"title":208,"links":480,"subMenu":495},[481,485,490],{"text":482,"config":483},"Tarife anzeigen",{"href":210,"dataGaName":484,"dataGaLocation":462},"view plans",{"text":486,"config":487},"Vorteile von Premium",{"href":488,"dataGaName":489,"dataGaLocation":462},"/de-de/pricing/premium/","why premium",{"text":491,"config":492},"Vorteile von Ultimate",{"href":493,"dataGaName":494,"dataGaLocation":462},"/de-de/pricing/ultimate/","why ultimate",[496],{"title":342,"links":497},[498,500,502,504,509,514,519],{"text":349,"config":499},{"href":351,"dataGaName":36,"dataGaLocation":462},{"text":354,"config":501},{"href":356,"dataGaName":357,"dataGaLocation":462},{"text":359,"config":503},{"href":361,"dataGaName":362,"dataGaLocation":462},{"text":505,"config":506},"Status",{"href":507,"dataGaName":508,"dataGaLocation":462},"https://status.gitlab.com/","status",{"text":510,"config":511},"Nutzungsbedingungen",{"href":512,"dataGaName":513,"dataGaLocation":462},"/terms/","terms of use",{"text":515,"config":516},"Datenschutzerklärung",{"href":517,"dataGaName":518,"dataGaLocation":462},"/de-de/privacy/","privacy statement",{"text":520,"config":521},"Cookie-Einstellungen",{"dataGaName":522,"dataGaLocation":462,"id":523,"isOneTrustButton":15},"cookie preferences","ot-sdk-btn",{"title":44,"links":525,"subMenu":537},[526,529,531,533,535],{"text":527,"config":528},"Plattform entdecken",{"href":52,"dataGaName":46,"dataGaLocation":462},{"text":94,"config":530},{"href":96,"dataGaName":97,"dataGaLocation":462},{"text":58,"config":532},{"href":60,"dataGaName":61,"dataGaLocation":462},{"text":99,"config":534},{"href":101,"dataGaName":102,"dataGaLocation":462},{"text":112,"config":536},{"href":117,"dataGaName":118,"dataGaLocation":462},[538],{"title":539,"links":540},"Themen",[541,545,550,555,560,563,568,573],{"text":58,"config":542},{"href":543,"dataGaName":544,"dataGaLocation":462},"/de-de/topics/ci-cd/","cicd",{"text":546,"config":547},"GitOps",{"href":548,"dataGaName":549,"dataGaLocation":462},"/de-de/topics/gitops/","gitops",{"text":551,"config":552},"DevOps",{"href":553,"dataGaName":554,"dataGaLocation":462},"/de-de/topics/devops/","devops",{"text":556,"config":557},"Versionskontrolle",{"href":558,"dataGaName":559,"dataGaLocation":462},"/de-de/topics/version-control/","version control",{"text":12,"config":561},{"href":562,"dataGaName":9,"dataGaLocation":462},"/de-de/topics/devsecops/",{"text":564,"config":565},"Cloud-nativ",{"href":566,"dataGaName":567,"dataGaLocation":462},"/de-de/topics/cloud-native/","cloud native",{"text":569,"config":570},"KI für das Programmieren",{"href":571,"dataGaName":572,"dataGaLocation":462},"/de-de/topics/devops/ai-for-coding/","ai for coding",{"text":574,"config":575},"Agentische KI",{"href":576,"dataGaName":577,"dataGaLocation":462},"/de-de/topics/agentic-ai/","agentic ai",{"title":120,"links":579},[580,582,584,586,588,590,592,594,596,598,601,604,606,609,613,618],{"text":133,"config":581},{"href":135,"dataGaName":136,"dataGaLocation":462},{"text":138,"config":583},{"href":140,"dataGaName":141,"dataGaLocation":462},{"text":143,"config":585},{"href":145,"dataGaName":146,"dataGaLocation":462},{"text":169,"config":587},{"href":171,"dataGaName":172,"dataGaLocation":462},{"text":174,"config":589},{"href":176,"dataGaName":177,"dataGaLocation":462},{"text":179,"config":591},{"href":181,"dataGaName":182,"dataGaLocation":462},{"text":184,"config":593},{"href":186,"dataGaName":187,"dataGaLocation":462},{"text":189,"config":595},{"href":191,"dataGaName":192,"dataGaLocation":462},{"text":194,"config":597},{"href":196,"dataGaName":197,"dataGaLocation":462},{"text":599,"config":600},"Enterprise",{"href":153,"dataGaName":154,"dataGaLocation":462},{"text":602,"config":603},"Kleinunternehmen",{"href":158,"dataGaName":159,"dataGaLocation":462},{"text":161,"config":605},{"href":163,"dataGaName":164,"dataGaLocation":462},{"text":546,"config":607},{"href":608,"dataGaName":549,"dataGaLocation":462},"/de-de/solutions/gitops/",{"text":610,"config":611},"Analyse der Softwarezusammensetzung (SCA)",{"href":88,"dataGaName":612,"dataGaLocation":462},"software composition analysis",{"text":614,"config":615},"Wertstrommanagement",{"href":616,"dataGaName":617,"dataGaLocation":462},"/de-de/solutions/value-stream-management/","value stream management",{"text":619,"config":620},"Alle Lösungen",{"href":127,"dataGaName":621,"dataGaLocation":462},"all solutions",{"title":213,"links":623},[624,629,634,636,638,640,642,644,646,648,651,653,655,657,660],{"text":625,"config":626},"Installieren",{"href":627,"dataGaName":628,"dataGaLocation":462},"/de-de/install/","install",{"text":630,"config":631},"Kurzanleitungen",{"href":632,"dataGaName":633,"dataGaLocation":462},"/de-de/get-started/","quick setup checklists",{"text":226,"config":635},{"href":228,"dataGaName":229,"dataGaLocation":462},{"text":231,"config":637},{"href":233,"dataGaName":234,"dataGaLocation":462},{"text":236,"config":639},{"href":238,"dataGaName":239,"dataGaLocation":462},{"text":241,"config":641},{"href":243,"dataGaName":244,"dataGaLocation":462},{"text":246,"config":643},{"href":248,"dataGaName":249,"dataGaLocation":462},{"text":254,"config":645},{"href":256,"dataGaName":257,"dataGaLocation":462},{"text":259,"config":647},{"href":261,"dataGaName":262,"dataGaLocation":462},{"text":649,"config":650},"Kund(inn)en",{"href":266,"dataGaName":267,"dataGaLocation":462},{"text":269,"config":652},{"href":271,"dataGaName":272,"dataGaLocation":462},{"text":274,"config":654},{"href":276,"dataGaName":277,"dataGaLocation":462},{"text":337,"config":656},{"href":339,"dataGaName":340,"dataGaLocation":462},{"text":658,"config":659},"Neuerungen",{"href":285,"dataGaName":286,"dataGaLocation":462},{"text":661,"config":662},"Alle Ressourcen",{"href":220,"dataGaName":663,"dataGaLocation":462},"all resources",{"title":288,"links":665},[666,668,670,672,674,676,678,680,682,687,692],{"text":296,"config":667},{"href":298,"dataGaName":290,"dataGaLocation":462},{"text":301,"config":669},{"href":303,"dataGaName":304,"dataGaLocation":462},{"text":307,"config":671},{"href":309,"dataGaName":310,"dataGaLocation":462},{"text":312,"config":673},{"href":314,"dataGaName":315,"dataGaLocation":462},{"text":317,"config":675},{"href":319,"dataGaName":320,"dataGaLocation":462},{"text":322,"config":677},{"href":324,"dataGaName":325,"dataGaLocation":462},{"text":327,"config":679},{"href":329,"dataGaName":330,"dataGaLocation":462},{"text":332,"config":681},{"href":334,"dataGaName":335,"dataGaLocation":462},{"text":683,"config":684},"Nachhaltigkeit",{"href":685,"dataGaName":686,"dataGaLocation":462},"/sustainability/","Sustainability",{"text":688,"config":689},"Vielfalt, Inklusion und Zugehörigkeit",{"href":690,"dataGaName":691,"dataGaLocation":462},"/de-de/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":693,"config":694},"Transparenzerklärung zu moderner Sklaverei",{"href":695,"dataGaName":696,"dataGaLocation":462},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":698},[699,702,705],{"text":700,"config":701},"Terms",{"href":512,"dataGaName":513,"dataGaLocation":462},{"text":703,"config":704},"Cookies",{"dataGaName":522,"dataGaLocation":462,"id":523,"isOneTrustButton":15},{"text":706,"config":707},"Datenschutz",{"href":517,"dataGaName":518,"dataGaLocation":462},22,{"id":710,"title":711,"authors":712,"body":714,"category":9,"date":1414,"description":1415,"extension":1416,"externalUrl":6,"faq":1417,"featured":10,"heroImage":1437,"meta":1438,"navigation":15,"path":1439,"seo":1440,"slug":1444,"stem":1445,"tags":1446,"template":1449,"updatedDate":6,"__hash__":1450},"blogPosts/de-de/blog/how-to-design-gitlab-for-enterprise-scale.md","GitLab für den Enterprise-Maßstab auslegen",[713],"GitLab",{"type":715,"value":716,"toc":1392},"minimark",[717,721,724,747,750,756,794,797,801,804,810,821,827,830,849,852,855,858,861,869,872,892,895,900,909,912,916,919,928,932,947,950,953,956,959,979,982,991,994,997,1021,1024,1032,1035,1038,1041,1044,1047,1051,1054,1077,1080,1084,1092,1095,1099,1108,1111,1114,1117,1120,1124,1127,1130,1133,1137,1146,1155,1158,1167,1170,1173,1371,1374,1377,1380],[718,719,720],"p",{},"Im Enterprise-Maßstab können selbst kleine Architekturentscheidungen überproportionale Folgen haben. Ein Deployment, das für eine Handvoll Teams funktioniert, kann zur Einschränkung werden, sobald tausende Entwickler(innen), Repositories und Pipelines darauf aufsetzen.",[718,722,723],{},"Das macht jede Entscheidung vor dem Rollout besonders folgenreich. Beispielsweise:",[725,726,727,731,741,744],"ul",{},[728,729,730],"li",{},"Das Deployment-Modell legt fest, was das Team betreiben muss.",[728,732,733,734,740],{},"Die Runner-Strategie prägt, wie ",[735,736,739],"a",{"href":737,"rel":738},"https://about.gitlab.com/de-de/blog/getting-started-with-gitlab-understanding-ci-cd/",[],"CI/CD-Workloads"," ausgeführt und isoliert werden und wie viel Betriebslast auf dem Plattformteam liegt.",[728,742,743],{},"Die Verfügbarkeitsziele prägen Redundanz und Wiederherstellung.",[728,745,746],{},"Der Workload bestimmt, wie viel Kapazität die Plattform braucht.",[718,748,749],{},"Zusammen bestimmen diese Faktoren, wie gut die Plattform Wachstum aufnehmen kann, ohne neue betriebliche Einschränkungen zu schaffen.",[718,751,752],{},[753,754,755],"strong",{},"In diesem Leitfaden:",[725,757,758,764,770,776,782,788],{},[728,759,760],{},[735,761,763],{"href":762},"#architekturentscheidungen-vor-dem-skalieren","Architekturentscheidungen vor dem Skalieren",[728,765,766],{},[735,767,769],{"href":768},"#die-eigene-runner-strategie-planen","Die eigene Runner-Strategie planen",[728,771,772],{},[735,773,775],{"href":774},"#hochverf%C3%BCgbarkeit-und-notfallwiederherstellung-planen","Hochverfügbarkeit und Notfallwiederherstellung planen",[728,777,778],{},[735,779,781],{"href":780},"#wo-die-pipeline-performance-im-gro%C3%9Fen-ma%C3%9Fstab-einbricht","Wo die Pipeline-Performance im großen Maßstab einbricht",[728,783,784],{},[735,785,787],{"href":786},"#%C3%BCberlegungen-zu-kubernetes-und-cloud-nativem-deployment","Überlegungen zu Kubernetes und cloud-nativem Deployment",[728,789,790],{},[735,791,793],{"href":792},"#eine-checkliste-zur-architekturvalidierung-f%C3%BCr-plattformteams","Eine Checkliste zur Architekturvalidierung für Plattformteams",[795,796],"hr",{},[798,799,763],"h2",{"id":800},"architekturentscheidungen-vor-dem-skalieren",[718,802,803],{},"Das GitLab-Deployment-Modell bestimmt, welche Teile der Plattform das Team dimensionieren, absichern, überwachen, aktualisieren und wiederherstellen muss. Für Enterprise-Deployments gibt es drei Kernoptionen:",[718,805,806,809],{},[753,807,808],{},"GitLab.com:"," GitLabs mandantenfähiges Software-as-a-Service-Angebot (SaaS). GitLab betreibt die Anwendung und die zugrunde liegende Infrastruktur, während die eigene Organisation ihre GitLab-Konfiguration, Integrationen und etwaige selbst verwaltete Runner verwaltet.",[718,811,812,820],{},[753,813,814,819],{},[735,815,818],{"href":816,"rel":817},"https://about.gitlab.com/de-de/blog/gitlab-dedicated-compliance/",[],"GitLab Dedicated",":"," Ein vollständig verwaltetes, mandantenreines SaaS-Angebot, gehostet auf Amazon Web Services (AWS). GitLab betreibt die zugrunde liegende Infrastruktur, einschließlich Updates, Hochverfügbarkeit und Notfallwiederherstellung. Die eigene Organisation steuert den Zugriff auf Nutzer(innen) und Daten über Kontrollen auf Anwendungsebene.",[718,822,823,826],{},[753,824,825],{},"GitLab Self-Managed:"," Die eigene Organisation installiert, administriert und pflegt eine eigene GitLab-Instanz. Das Team verwaltet die Infrastruktur und übernimmt die Verantwortung für Betrieb, Skalierung, Absicherung und Wiederherstellung der Umgebung.",[718,828,829],{},"Das Modell wird nach der Kontrolle gewählt, die die Organisation braucht, und nach der Infrastrukturverantwortung, die sie tragen kann. Denkbar ist etwa:",[725,831,832,838,843],{},[728,833,834,837],{},[753,835,836],{},"GitLab.com",", wenn ein mandantenfähiges SaaS-Modell die Anforderungen erfüllt und ein Minimum an Infrastrukturbetrieb im Vordergrund steht.",[728,839,840,842],{},[753,841,818],{},", wenn mandantenreine Isolation oder Kontrolle über Bereiche wie Netzwerk und Datenstandort nötig ist, ohne die GitLab-Infrastruktur selbst zu betreiben.",[728,844,845,848],{},[753,846,847],{},"GitLab Self-Managed",", wenn die Anforderungen direkte Kontrolle über die zugrunde liegende Infrastruktur verlangen und das Team die Kapazität hat, die Plattform zu betreiben.",[718,850,851],{},"Vor der Entscheidung sollten alle Anforderungen dokumentiert werden, die eine Option ein- oder ausschließen könnten. Besondere Aufmerksamkeit gilt Datenstandort, Netzwerkisolation, Wiederherstellungszielen und Infrastrukturkontrolle. Anschließend wird die betriebliche Arbeit abgebildet, die jedes Modell beim eigenen Team belässt, darunter Updates, Monitoring, Kapazitätsplanung, Backups und Incident Response.",[718,853,854],{},"Diese Übung sollte den zentralen Kompromiss klären: wie viel Infrastrukturverantwortung die Organisation braucht und realistisch selbst tragen kann.",[718,856,857],{},"Sobald diese Betriebsgrenze definiert ist, folgt die Planung der Compute-Schicht, die die CI/CD-Workloads ausführt.",[798,859,769],{"id":860},"die-eigene-runner-strategie-planen",[718,862,863,868],{},[735,864,867],{"href":865,"rel":866},"https://docs.gitlab.com/runner/",[],"GitLab Runner"," führt CI/CD-Jobs aus, und die GitLab-Anwendung koordiniert die Pipelines dahinter. Diese Trennung ist im Enterprise-Maßstab wichtig, weil Anwendungskapazität und Runner-Kapazität auf unterschiedliche Arten von Last reagieren. Die Anwendung bewältigt Git-, Web-, API- und Automatisierungsverkehr, während die Runner-Flotte Volumen und Parallelität der CI/CD-Arbeit aufnimmt.",[718,870,871],{},"Deshalb sollte die Runner-Flotte anhand der Workloads selbst dimensioniert werden, nicht anhand der Zahl der Entwickler(innen). Zunächst dokumentieren:",[725,873,874,877,880,883,886,889],{},[728,875,876],{},"Job-Volumen und -Dauer",[728,878,879],{},"Spitzen-Parallelität",[728,881,882],{},"Betriebssystem- und Compute-Anforderungen",[728,884,885],{},"Netzwerkpfade und spezialisierte Hardware",[728,887,888],{},"Privilegierte oder sensible Workloads",[728,890,891],{},"Spitzenzeiten wie Release-Fenster oder geplante Scans",[718,893,894],{},"Aus diesen Eingaben lässt sich schätzen, wie viele Jobs gleichzeitig laufen müssen, um das Ziel für die Queued Duration zu erreichen. Workload-Daten zählen mehr als die Teamgröße, weil zwei Organisationen mit gleicher Entwicklerzahl je nach Pipeline-Frequenz, Automatisierung und Job-Anforderungen sehr unterschiedliche CI/CD-Last erzeugen können.",[896,897,899],"h3",{"id":898},"den-richtigen-runner-scope-wählen","Den richtigen Runner-Scope wählen",[718,901,902,903,908],{},"Der ",[735,904,907],{"href":905,"rel":906},"https://docs.gitlab.com/ci/runners/runners_scope",[],"Runner-Scope"," bestimmt, wie breit Teams jeden Pool nutzen können. Instance-Runner können Projekte über die gesamte GitLab-Instanz hinweg bedienen, während Group-Runner den Zugriff auf Projekte und Untergruppen innerhalb einer definierten Gruppe beschränken. Project-Runner bieten den engsten Scope und passen zu Workloads, die eigene Zugangsdaten, spezialisierte Infrastruktur oder stärkere Isolation brauchen. Weil diese Kapazität für weniger Workloads reserviert ist, können Project-Runner auch ungenutzt bleiben, wenn das Job-Volumen unregelmäßig ist, also sollte die Auslastung in die Entscheidung einfließen.",[718,910,911],{},"Zu wählen ist der breiteste Scope, der die Trust- und Compute-Anforderungen des Workloads erfüllt. Breitere Pools verbessern in der Regel die Auslastung, während sensible Deployment-Jobs oder spezialisierte Workloads dedizierte Infrastruktur rechtfertigen können.",[896,913,915],{"id":914},"für-autoscaling-planen","Für Autoscaling planen",[718,917,918],{},"Autoscaling lässt die Runner-Kapazität mit der Nachfrage wachsen oder schrumpfen, doch der Betrieb dieser Infrastruktur kostet auch Zeit im Platform-Engineering. Wer die eigene Runner-Flotte verwaltet, sollte einkalkulieren, wie schnell neue Ressourcen nutzbar werden: Instanz-Provisionierung, Cloud-Kontingente, Image-Downloads und Cache-Verfügbarkeit können die Queued Duration bei einem Ausschlag alle beeinflussen. Genug bereitstehende Kapazität vorhalten, um kurzfristige Nachfrage aufzufangen, während zusätzliches Compute hochfährt.",[718,920,921,922,927],{},"Diese betriebliche Arbeit lässt sich auch zu GitLab verlagern. ",[735,923,926],{"href":924,"rel":925},"https://about.gitlab.com/de-de/blog/hosted-runners-for-gitlab-dedicated/",[],"GitLab-gehostete Runner"," stehen für GitLab.com und GitLab Dedicated bereit, wobei GitLab die zugrunde liegende Runner-Infrastruktur und das Autoscaling verwaltet. Für Teams, die weniger Zeit mit Provisionierung, Patching und Skalierung von Runner-Maschinen verbringen möchten, wird die Runner-Strategie damit von einer Frage des Infrastrukturmanagements zu einer Frage der Kapazität und der Workload-Platzierung.",[896,929,931],{"id":930},"den-executor-zum-workload-passend-wählen","Den Executor zum Workload passend wählen",[718,933,934,935,940,941,946],{},"Die Wahl des Executors bestimmt, wo CI/CD-Jobs laufen und welche Infrastruktur das Team betreiben muss. Für cloud-native Umgebungen nutzt der ",[735,936,939],{"href":937,"rel":938},"https://docs.gitlab.com/runner/executors/kubernetes/",[],"Kubernetes-Executor"," einen bestehenden Kubernetes-Cluster. Für automatisch skalierte Workloads auf Public-Cloud-VMs ",[735,942,945],{"href":943,"rel":944},"https://docs.gitlab.com/runner/executors/",[],"stellt GitLab"," den Docker Autoscaler und den Instance-Executor bereit.",[718,948,949],{},"Die richtige Wahl hängt von der Umgebung ab, die die Jobs brauchen, und von der Infrastruktur, die das Team zu verwalten bereit ist. Beim Kubernetes-Executor läuft jeder CI/CD-Job in einem eigenen Pod, wodurch das Cluster-Verhalten Teil der Runner-Performance wird. Scheduling-Verzögerungen, Resource Requests und Limits, Node-Kapazität und Autoscaling können alle beeinflussen, wie schnell Jobs starten und abschließen.",[718,951,952],{},"Diese Randbedingungen gehören in die Kapazitätsplanung, damit der Executor nicht zum Engpass wird, wenn die CI/CD-Last wächst.",[798,954,775],{"id":955},"hochverfügbarkeit-und-notfallwiederherstellung-planen",[718,957,958],{},"Die Verfügbarkeitsplanung sollte bei den geschäftlichen Auswirkungen von Ausfallzeit und Datenverlust beginnen. Zu definieren sind:",[725,960,961,967,973],{},[728,962,963,966],{},[753,964,965],{},"Service Level Objective (SLO)",": das Serviceniveau, das die Plattform im Normalbetrieb halten soll.",[728,968,969,972],{},[753,970,971],{},"Recovery Time Objective (RTO)",": wie schnell der Dienst nach einem Ausfall wiederhergestellt sein muss.",[728,974,975,978],{},[753,976,977],{},"Recovery Point Objective (RPO)",": wie viel Datenverlust die Organisation verkraften kann.",[718,980,981],{},"Zusammen definieren diese Ziele die Redundanz- und Wiederherstellungskapazität, die die Architektur braucht.",[718,983,984,985,990],{},"Wie viel dieser Arbeit auf das Plattformteam entfällt, hängt vom Deployment-Modell ab. Bei GitLab Self-Managed gehören diese Architekturentscheidungen dem eigenen Team. Die ",[735,986,989],{"href":987,"rel":988},"https://docs.gitlab.com/administration/reference_architectures/",[],"GitLab-Referenzarchitekturen"," dienen als produktionsreifer Ausgangspunkt, dessen Topologie sich dann an die eigenen Verfügbarkeits- und Wiederherstellungsanforderungen anpassen lässt.",[718,992,993],{},"Bei GitLab Dedicated verwaltet GitLab die zugrunde liegende Infrastruktur für die Notfallwiederherstellung und den Failover-Prozess. Kund(inn)en können eine sekundäre AWS-Region für eine geobasierte Notfallwiederherstellung wählen, während GitLab die Replikation zwischen primärer und sekundärer Region pflegt und den Failover bei Bedarf steuert.",[718,995,996],{},"Bei Self-Managed-Deployments sollte das Wiederherstellungsdesign Hochverfügbarkeit, Notfallwiederherstellung und Backups als eigenständige, aber einander ergänzende Schichten behandeln:",[725,998,999,1009,1015],{},[728,1000,1001,1008],{},[753,1002,1003],{},[735,1004,1007],{"href":1005,"rel":1006},"https://about.gitlab.com/de-de/blog/gitlab-backs-99-9-availability-with-service-credits-for-ultimate-customers/",[],"Hochverfügbarkeit"," begrenzt die Auswirkung von Komponentenausfällen innerhalb der primären Umgebung.",[728,1010,1011,1014],{},[753,1012,1013],{},"Notfallwiederherstellung"," stellt den Dienst nach dem Verlust eines Standorts oder einer Region wieder her.",[728,1016,1017,1020],{},[753,1018,1019],{},"Backups"," schützen vor Beschädigung, Löschung und anderen Fehlern, die eine Replikation an einen sekundären Standort weitertragen kann.",[718,1022,1023],{},"Zudem sollten bei Self-Managed-Deployments die Wiederherstellungsziele in Architekturanforderungen übersetzt werden. Festlegen, wo Redundanz nötig ist, wie Daten repliziert werden und wie Backups kritische Daten schützen. Abhängigkeiten wie Identitäts- und Netzwerkdienste gehören in den Wiederherstellungsplan.",[718,1025,1026,1031],{},[735,1027,1030],{"href":1028,"rel":1029},"https://docs.gitlab.com/administration/geo/",[],"GitLab Geo"," bietet eine Active-Passive-Architektur für die Notfallwiederherstellung mit sekundären Standorten, die sich vom primären Standort synchronisieren. Bei Self-Managed erfordert der Failover kundenseitig verwaltete Betriebsschritte, also sollte der Prozess unter realistischen Bedingungen geprobt und das Ergebnis an RTO und RPO gemessen werden.",[718,1033,1034],{},"Jede fehlgeschlagene Abhängigkeit oder jeder manuelle Schritt, der die Wiederherstellung verlangsamen könnte, wird festgehalten und fließt dann in eine robustere Auslegung ein.",[798,1036,781],{"id":1037},"wo-die-pipeline-performance-im-großen-maßstab-einbricht",[718,1039,1040],{},"Mit wachsender GitLab-Nutzung verschiebt sich die Performance-Planung von der Dimensionierung für die erwartete Nachfrage hin zur Validierung des Plattformverhaltens unter realer Last. Der erste Schritt besteht darin, zu erkennen, wo Zeit verloren geht.",[718,1042,1043],{},"GitLab trennt die Queued Duration von der Ausführungsdauer, was einen nützlichen Ausgangspunkt für die Diagnose bietet. Die Queued Duration eines Jobs zeigt, wie lange er auf den Start gewartet hat, während die Job Duration die Ausführungszeit erfasst. Die Pipeline Duration misst die Laufzeit der Pipeline und schließt die Wartezeit in der Warteschlange aus.",[718,1045,1046],{},"Diese Metriken weisen auf unterschiedliche Randbedingungen hin. Eine hohe Queued Duration kann auf zu geringe Runner-Kapazität hindeuten. Längere Ausführungszeiten hingegen können am Design der Pipeline, an Test-Suites, am Herunterladen von Abhängigkeiten oder an Repository-Übertragungen liegen.",[896,1048,1050],{"id":1049},"eine-performance-baseline-etablieren","Eine Performance-Baseline etablieren",[718,1052,1053],{},"Repräsentative Projekte unter normaler und Spitzennachfrage testen, um zu sehen, wo die Performance nachzulassen beginnt. Bedingungen wie Release-Fenster, geplante Sicherheitsscans und Phasen hoher Commit-Aktivität einbeziehen und dann die Signale verfolgen, die den Engpass sichtbar machen:",[725,1055,1056,1059,1062,1065,1068,1071,1074],{},[728,1057,1058],{},"Queued Duration",[728,1060,1061],{},"Job- und Pipeline Duration",[728,1063,1064],{},"Runner-Auslastung",[728,1066,1067],{},"Retries und Fehlschläge",[728,1069,1070],{},"Cache-Performance",[728,1072,1073],{},"Übertragungszeit von Artefakten",[728,1075,1076],{},"Infrastruktur-Sättigung",[718,1078,1079],{},"Die Ergebnisse nach Runner-Pool und Workload-Typ aufschlüsseln, damit organisationsweite Durchschnitte keine Engpässe verdecken, die einzelne Teams oder Workloads betreffen. Von dort aus dienen die Erkenntnisse dazu, Schwellenwerte für das Erweitern der Runner-Kapazität, das Optimieren von Pipelines oder das Skalieren der GitLab-Anwendung zu setzen.",[896,1081,1083],{"id":1082},"große-repositories-und-monorepos-getrennt-testen","Große Repositories und Monorepos getrennt testen",[718,1085,1086,1091],{},[735,1087,1090],{"href":1088,"rel":1089},"https://docs.gitlab.com/user/project/repository/monorepos/",[],"Große Repositories und Monorepos"," stellen eigene Anforderungen an GitLab und die Runner-Infrastruktur. Häufige Clones und Fetches können CPU-, Arbeitsspeicher-, Festplatten- und Netzwerknutzung erhöhen, besonders wenn viele Pipelines gleichzeitig auf dasselbe Repository zugreifen.",[718,1093,1094],{},"Bei der Einschätzung dieser Auswirkung über die reine Repository-Größe hinausblicken. Clone-Frequenz, gleichzeitige CI/CD-Aktivität, Branch-Muster und die Datenmenge, die jeder Job überträgt, können die Plattformlast alle mitprägen.",[896,1096,1098],{"id":1097},"den-workload-vor-der-kapazität-optimieren","Den Workload vor der Kapazität optimieren",[718,1100,1101,1102,1107],{},"Das ",[735,1103,1106],{"href":1104,"rel":1105},"https://about.gitlab.com/de-de/blog/5-ways-gitlab-pipeline-logic-solves-real-engineering-problems/",[],"Pipeline-Design"," kann die Last auf der Plattform selbst senken. Unabhängige Jobs parallel laufen lassen, unnötige Pipelines vermeiden, häufig heruntergeladene Abhängigkeiten cachen und die Aufbewahrung von Artefakten begrenzen. Bei Monorepos Jobs nur dann auslösen, wenn sich relevante Pfade ändern, und die Menge an Repository-Daten reduzieren, die jeder Job übertragen muss.",[718,1109,1110],{},"Auch nach dem Rollout weiter messen, während sich die Nutzung entwickelt. In Self-Managed-Umgebungen liefern die tatsächliche Ressourcenauslastung und die Workload-Muster das klarste Signal dafür, wann die Architektur skalieren muss.",[798,1112,787],{"id":1113},"überlegungen-zu-kubernetes-und-cloud-nativem-deployment",[718,1115,1116],{},"Kubernetes kann in einer GitLab-Architektur zwei verschiedene Rollen spielen. Der Kubernetes-Executor kann CI/CD-Jobs als Pods in einem bestehenden Cluster ausführen, während GitLab Self-Managed in einer cloud-nativen Architektur auf Kubernetes laufen kann.",[718,1118,1119],{},"Diese Entscheidungen betreffen verschiedene Teile der Plattform und sollten getrennt bewertet werden. Kubernetes für Runner zu nutzen verändert, wie CI/CD-Compute bereitgestellt und skaliert wird. GitLab auf Kubernetes zu betreiben verändert, wie das Team die Anwendung und ihre unterstützende Infrastruktur betreibt.",[896,1121,1123],{"id":1122},"kubernetes-runner-als-teil-des-clusters-planen","Kubernetes-Runner als Teil des Clusters planen",[718,1125,1126],{},"Beim Kubernetes-Executor ruft ein Runner-Manager die Kubernetes-API auf und erstellt für jeden CI/CD-Job einen Pod. Damit wird das Cluster selbst Teil der Runner-Architektur.",[718,1128,1129],{},"Die Kubernetes-Ressourcen und -Kontrollen planen, auf die sich diese Jobs stützen, darunter Namespaces, Service Accounts, Resource Requests und Limits sowie Workload-Isolation. Sensible Deployment-Jobs können außerdem stärkere Trennung von weniger vertrauenswürdigen Build-Workloads erfordern.",[718,1131,1132],{},"Kapazität zählt genauso viel wie Konfiguration. Testen, ob das Cluster-Autoscaling Nodes schnell genug hinzufügen kann, um die Ziele für die Queued Duration zu erreichen. Selbst wenn das Cluster am Ende genug Compute bereitstellt, kann langsame Node-Provisionierung Jobs bei Nachfragespitzen warten lassen.",[896,1134,1136],{"id":1135},"die-richtige-architektur-für-gitlab-auf-kubernetes-wählen","Die richtige Architektur für GitLab auf Kubernetes wählen",[718,1138,1139,1140,1145],{},"GitLab selbst auf Kubernetes zu betreiben verlangt eine umfassendere Architekturentscheidung. GitLab empfiehlt für neue Self-Managed-Deployments seine ",[735,1141,1144],{"href":1142,"rel":1143},"https://docs.gitlab.com/administration/reference_architectures/cloud_native/",[],"Cloud-Native-Referenzarchitektur",". In diesem Modell laufen die GitLab-Komponenten in Kubernetes, während PostgreSQL, Redis und Object Storage extern bleiben.",[718,1147,1148,1149,1154],{},"Cloud Native Hybrid bleibt eine Option, wenn bestimmte Komponenten außerhalb von Kubernetes bleiben müssen. Teams, die etwa ein ",[735,1150,1153],{"href":1151,"rel":1152},"https://about.gitlab.com/de-de/blog/gitaly-on-kubernetes-generally-available/",[],"Gitaly Cluster"," für Hochverfügbarkeit auf Repository-Ebene brauchen, sollten eine hybride oder VM-basierte Referenzarchitektur prüfen, weil die Standard-Cloud-Native-Architektur Gitaly in einer nicht geclusterten Konfiguration betreibt.",[718,1156,1157],{},"Welches Modell auch gewählt wird: Kubernetes gehört in den Betriebsplan für die umfassendere GitLab-Plattform. Das Team braucht Observability über das Cluster und die externen Dienste hinweg sowie einen Upgrade-Prozess, der GitLab und seine Infrastrukturabhängigkeiten berücksichtigt. Kapazitäts- und Wiederherstellungstests sollten das Cluster als Teil der Produktionsumgebung abdecken.",[718,1159,1160,1161,1166],{},"Die ",[735,1162,1165],{"href":1163,"rel":1164},"https://about.gitlab.com/de-de/topics/cloud-native/",[],"Cloud-Native-Übersicht von GitLab"," bietet mehr Kontext zu diesem Deployment-Modell. Kubernetes wählen, wenn sein Betriebsmodell zu den eigenen Infrastrukturanforderungen passt und das Team die Fähigkeiten hat, es zuverlässig zu betreiben.",[798,1168,793],{"id":1169},"eine-checkliste-zur-architekturvalidierung-für-plattformteams",[718,1171,1172],{},"Diese Checkliste vor dem Rollout nutzen, um die wichtigsten Architekturentscheidungen über Deployment, Dimensionierung, Runner, Wiederherstellung und Performance hinweg zu validieren. Für jeden Punkt den Nachweis dokumentieren, der die Entscheidung stützt, oder eine verantwortliche Person benennen, die die Lücke schließt.",[1174,1175,1176,1189],"table",{},[1177,1178,1179],"thead",{},[1180,1181,1182,1186],"tr",{},[1183,1184,1185],"th",{},"Was zu validieren ist",[1183,1187,1188],{},"Nachweis oder verantwortliche Person",[1190,1191,1192,1202,1209,1216,1223,1232,1239,1246,1253,1262,1269,1276,1283,1290,1297,1306,1313,1320,1327,1334,1343,1350,1357,1364],"tbody",{},[1180,1193,1194,1200],{},[1195,1196,1197],"td",{},[753,1198,1199],{},"Deployment-Modell",[1195,1201],{},[1180,1203,1204,1207],{},[1195,1205,1206],{},"Das gewählte Deployment-Modell erfüllt die Anforderungen an Datenstandort, Isolation, Netzwerk und Anpassbarkeit.",[1195,1208],{},[1180,1210,1211,1214],{},[1195,1212,1213],{},"Die Verantwortlichkeiten sind klar zwischen GitLab, dem eigenen Plattformteam und den Infrastrukturanbietern aufgeteilt.",[1195,1215],{},[1180,1217,1218,1221],{},[1195,1219,1220],{},"Für Updates, Wartung, Support und Kapazitätsmanagement gibt es benannte Verantwortliche und dokumentierte Verfahren.",[1195,1222],{},[1180,1224,1225,1230],{},[1195,1226,1227],{},[753,1228,1229],{},"Anwendungsdimensionierung",[1195,1231],{},[1180,1233,1234,1237],{},[1195,1235,1236],{},"Die erwarteten RPS treiben die Basisgröße der Architektur bei Self-Managed-Deployments.",[1195,1238],{},[1180,1240,1241,1244],{},[1195,1242,1243],{},"Die Dimensionierung bildet den Mix aus API-, Web- und Git-Verkehr ab.",[1195,1245],{},[1180,1247,1248,1251],{},[1195,1249,1250],{},"Das Design berücksichtigt untypische Workloads wie große Monorepos oder starke Automatisierung.",[1195,1252],{},[1180,1254,1255,1260],{},[1195,1256,1257],{},[753,1258,1259],{},"Runner-Strategie",[1195,1261],{},[1180,1263,1264,1267],{},[1195,1265,1266],{},"Die Runner-Dimensionierung bildet Job-Volumen, -Dauer, Spitzen-Parallelität und Compute-Anforderungen ab.",[1195,1268],{},[1180,1270,1271,1274],{},[1195,1272,1273],{},"Die Runner-Scopes passen zu Trust-Grenzen, privilegiertem Zugriff und Anforderungen an die Workload-Isolation.",[1195,1275],{},[1180,1277,1278,1281],{},[1195,1279,1280],{},"Autoscaling-Grenzen, Cloud-Kontingente, Startzeit und bereitstehende Kapazität wurden unter Spitzennachfrage getestet.",[1195,1282],{},[1180,1284,1285,1288],{},[1195,1286,1287],{},"Ziele für Queued Duration und Pipeline Duration sind definiert und werden getrennt überwacht.",[1195,1289],{},[1180,1291,1292,1295],{},[1195,1293,1294],{},"Die Runner-Manager-Architektur vermeidet einen Single Point of Failure für kritische Workloads.",[1195,1296],{},[1180,1298,1299,1304],{},[1195,1300,1301],{},[753,1302,1303],{},"Verfügbarkeit und Wiederherstellung",[1195,1305],{},[1180,1307,1308,1311],{},[1195,1309,1310],{},"Geschäftliche und technische Verantwortliche haben die Ziele für SLO, RTO und RPO freigegeben.",[1195,1312],{},[1180,1314,1315,1318],{},[1195,1316,1317],{},"Redundanz, Backups, Replikation und Failover-Verfahren decken die erforderlichen Ausfallszenarien ab.",[1195,1319],{},[1180,1321,1322,1325],{},[1195,1323,1324],{},"Wiederherstellungstests umfassen Identität, DNS, Secrets, Netzwerk und externe Integrationen.",[1195,1326],{},[1180,1328,1329,1332],{},[1195,1330,1331],{},"Die jüngste Wiederherstellungsübung hat ihre Ziele erreicht oder hat zugewiesene Nachbesserungsarbeit.",[1195,1333],{},[1180,1335,1336,1341],{},[1195,1337,1338],{},[753,1339,1340],{},"Performance und Wachstum",[1195,1342],{},[1180,1344,1345,1348],{},[1195,1346,1347],{},"Repräsentative Projekte, Monorepos, Sicherheitsjobs und Release-Workloads wurden unter der erwarteten Spitzennachfrage getestet.",[1195,1349],{},[1180,1351,1352,1355],{},[1195,1353,1354],{},"Dashboards verfolgen Queued Duration, Job- und Pipeline Duration, Fehler, Infrastruktur-Sättigung und Runner-Auslastung.",[1195,1356],{},[1180,1358,1359,1362],{},[1195,1360,1361],{},"Skalierungsschwellen legen fest, wann Kapazität hinzukommt oder Workloads optimiert werden.",[1195,1363],{},[1180,1365,1366,1369],{},[1195,1367,1368],{},"Die Architektur hat einen festen Überprüfungsrhythmus für sich ändernde Nutzungsmuster und organisatorische Anforderungen.",[1195,1370],{},[1372,1373],"br",{},[718,1375,1376],{},"Der Enterprise-Maßstab setzt jede frühe Architekturentscheidung unter Druck. Die stärksten GitLab-Umgebungen spiegeln wider, wie die Organisation tatsächlich arbeitet, und lassen genug Raum, damit sich die Nachfrage ändern kann.",[718,1378,1379],{},"Diese Bedingungen werden sich mit wachsender Verbreitung weiterentwickeln. Weiter messen, die Architektur überdenken, wenn sich die Nachfrage verschiebt, und die nächste Entscheidung von belastbaren Erkenntnissen leiten lassen. Diese Disziplin macht aus GitLab statt einer Plattform, die einfach mehr Nutzer(innen) trägt, eine, die mit der Organisation um sie herum Schritt halten kann.",[1381,1382,1383],"blockquote",{},[718,1384,1385,1386,1391],{},"💡 ",[735,1387,1390],{"href":1388,"rel":1389},"https://about.gitlab.com/de-de/dedicated/",[],"Erfahren, wie GitLab Dedicated den Enterprise-Maßstab unterstützt",".",{"title":1393,"searchDepth":1394,"depth":1394,"links":1395},"",2,[1396,1397,1403,1404,1409,1413],{"id":800,"depth":1394,"text":763},{"id":860,"depth":1394,"text":769,"children":1398},[1399,1401,1402],{"id":898,"depth":1400,"text":899},3,{"id":914,"depth":1400,"text":915},{"id":930,"depth":1400,"text":931},{"id":955,"depth":1394,"text":775},{"id":1037,"depth":1394,"text":781,"children":1405},[1406,1407,1408],{"id":1049,"depth":1400,"text":1050},{"id":1082,"depth":1400,"text":1083},{"id":1097,"depth":1400,"text":1098},{"id":1113,"depth":1394,"text":787,"children":1410},[1411,1412],{"id":1122,"depth":1400,"text":1123},{"id":1135,"depth":1400,"text":1136},{"id":1169,"depth":1394,"text":793},"2026-09-22","Welche Entscheidungen tragen einen GitLab-Rollout, wenn tausende Entwickler(innen) davon abhängen? Der Leitfaden geht Deployment, Runner und Wiederherstellung durch.","md",{"header":1418,"groups":1419},"Häufig gestellte Fragen",[1420],{"questions":1421},[1422,1425,1428,1431,1434],{"question":1423,"answer":1424},"Welche Deployment-Optionen gibt es für GitLab im Enterprise-Maßstab?","GitLab bietet drei Kernmodelle: GitLab.com (mandantenfähiges SaaS), GitLab Dedicated (vollständig verwaltetes, mandantenreines SaaS auf AWS) und GitLab Self-Managed (die eigene Organisation installiert und pflegt eine eigene Instanz). Die Wahl richtet sich nach der benötigten Kontrolle und der Verantwortung für die Infrastruktur, die das Team dauerhaft tragen kann.",{"question":1426,"answer":1427},"Wie dimensioniert man eine GitLab-Runner-Flotte?","Die Runner-Flotte wird anhand der Workloads selbst dimensioniert, nicht anhand der Zahl der Entwickler(innen). Job-Volumen und -Dauer, Spitzen-Parallelität, Betriebssystem- und Compute-Anforderungen, Netzwerkpfade, sensible Workloads und Spitzenzeiten dokumentieren. Zwei Organisationen mit gleicher Entwicklerzahl können sehr unterschiedliche CI/CD-Last erzeugen.",{"question":1429,"answer":1430},"Was ist der Unterschied zwischen Queued Duration und Job Duration in GitLab?","Die Queued Duration zeigt, wie lange ein Job auf den Start gewartet hat, während die Job Duration die Ausführungszeit erfasst. Die Pipeline Duration misst die Laufzeit der Pipeline ohne Wartezeit in der Warteschlange. Eine hohe Queued Duration kann auf zu geringe Runner-Kapazität hindeuten, eine längere Ausführung liegt am Design der Pipeline oder an Abhängigkeiten.",{"question":1432,"answer":1433},"Was ist der Unterschied zwischen Hochverfügbarkeit, Notfallwiederherstellung und Backups?","Hochverfügbarkeit begrenzt die Auswirkung von Komponentenausfällen innerhalb der primären Umgebung. Die Notfallwiederherstellung stellt den Dienst nach dem Verlust eines Standorts oder einer Region wieder her. Backups schützen vor Beschädigung, Löschung und anderen Fehlern, die eine Replikation an einen sekundären Standort weitertragen kann. Sie sind eigenständige, einander ergänzende Schichten.",{"question":1435,"answer":1436},"Wie fügt sich Kubernetes in eine GitLab-Architektur ein?","Kubernetes spielt zwei getrennte Rollen: Der Kubernetes-Executor führt CI/CD-Jobs als Pods in einem bestehenden Cluster aus, und GitLab Self-Managed kann cloud-nativ auf Kubernetes laufen. Diese Entscheidungen betreffen verschiedene Teile der Plattform und werden getrennt bewertet, weil jede verändert, wie Compute oder die Anwendung betrieben wird.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1772058602/epl3sinfezlzxnppxak6.png",{},"/de-de/blog/how-to-design-gitlab-for-enterprise-scale",{"config":1441,"title":1442,"description":1443},{"noIndex":10},"GitLab-Architektur für den Enterprise-Maßstab planen","Klare Entscheidungen für Deployment, Runner-Kapazität, Verfügbarkeit, Notfallwiederherstellung und Pipeline-Performance im großen Maßstab.","how-to-design-gitlab-for-enterprise-scale","de-de/blog/how-to-design-gitlab-for-enterprise-scale",[58,1447,1448],"DevSecOps platform","kubernetes","BlogPost","MP8OWX7Qe3j1cQRqeDYH4ghpIdRzAmQUqOR70oJzeHw",[1452,1459,1466],{"title":1453,"heroImage":1454,"category":9,"description":1455,"authors":1456,"slug":1458,"externalUrl":6},"Die Top 10 GitLab-Workflow-Hacks, die du kennen musst","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099361/Blog/Hero%20Images/Blog/Hero%20Images/lightvisibility_lightvisibility.png_1750099361252.png","Eine Produktmanagerin von GitLab nennt ihre Lieblingstricks, um schnell und effizient durch die GitLab DevSecOps-Plattform zu navigieren und die Zusammenarbeit im Team zu fördern.",[1457],"Amanda Rueda","top-10-gitlab-workflow-hacks-you-need-to-know",{"title":1460,"heroImage":1461,"category":9,"description":1462,"authors":1463,"slug":1465,"externalUrl":6},"Migration von Jenkins zu GitLab leicht gemacht","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663019/Blog/Hero%20Images/AdobeStock_519147119.jpg","In diesem Schritt-für-Schritt-Leitfaden erfährst du, warum und wie du ganz einfach von Jenkins zu GitLab migrieren kannst.",[1464],"Fernando Diaz","jenkins-to-gitlab-migration-made-easy",{"title":1467,"heroImage":1468,"category":9,"description":1469,"authors":1470,"slug":1471,"externalUrl":6},"Microservices-Architektur: Definition und Vorteile","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749662898/Blog/Hero%20Images/microservices-explosion.jpg","Entdecke die Welt der Microservices-Architektur: Funktionsweise, Vorteile & Unterschiede zu traditionellen Architekturen für flexible & effiziente Anwendungen.",[713],"what-are-the-benefits-of-a-microservices-architecture",1790764789415]