Wie wir GitLab CI-Status mit W... Notiz
RSS GitLab

Wie wir GitLab CI-Status mit WebSockets aufgeladen haben

GitLab reduzierte die API-Aufrufe für CI-Job-Status-Updates erheblich um 92,56 %, von 45 Millionen auf 3,4 Millionen täglich. Zuvor verwendete die Job-Header-Komponente Polling und führte alle 30 Sekunden eine Netzwerkanfrage durch, unabhängig von Datenänderungen. Dies führte zu Verzögerungen für die Benutzer und Belastungen der Datenbank. Das Team wechselte zu GraphQL-Subscriptions über WebSockets, einem ereignisgesteuerten Ansatz. Diese Änderung ermöglicht sofortige Updates, wenn sich der Job-Status ändert, wodurch unnötiger Netzwerkverkehr vermieden wird. Die Anzahl der Netzwerkaufrufe pro 15 Minuten sank von 547.145 auf 39.670. Benutzer erleben jetzt eine Echtzeit-Status-Sichtbarkeit. Diese Optimierung führte nicht zu einer erhöhten CPU-Auslastung oder Betriebsraten. GitLab plant, alle Polling-Mechanismen im gesamten Produkt durch GraphQL-Subscriptions zu ersetzen. Ziel ist es, sofortiges Feedback während des gesamten CI/CD-Workflows zu geben.