Wie das GitLab QA-Team das GitLab Performance Tool verwendet

Eine Übersetzung des Artikels wurde vor Beginn des DevOps Practices and Tools- Kurses erstellt .




Wir haben eine Reihe von Initiativen gestartet, um die Leistung von GitLab zu verbessern, und wir brauchten ein neues Benchmark-Tool.

Leistungstests sind ein komplexer Prozess, der sich von anderen Testarten unterscheidet. Um Ergebnisse zu erzielen, werden hier dedizierte Ressourcen, spezielle Ansätze und Tools benötigt. Als ich in das Unternehmen eintrat und das erste Mitglied dieses Teams wurde, bestand meine Aufgabe darin, die entstehenden Bemühungen zur Verbesserung der Produktivität in größerem Maßstab zu übertragen. Zu diesem Zweck haben wir ein neues Tool mit dem einfachen Namen GitLab Performance Too l (GPT) erstellt.

Wir freuen uns, die Veröffentlichung von GPT bekannt zu geben. In diesem Beitrag beschreiben wir, wie wir GPT zum Testen der GitLab-Leistung verwenden und wie Sie damit Ihre Umgebungen testen können.

Schauen Sie sich jedoch zuerst an, womit wir es verwenden.

Referenzarchitekturen und Testdaten


Nach unserer Erfahrung ist der schwierigste Teil beim Testen der Leistung nicht das Testen selbst, sondern das Einrichten der richtigen Umgebungen und Testdaten.

Eine der Initiativen ist daher die Entwicklung von GitLab-Referenzarchitekturen , die eine große Anzahl von Benutzern bewältigen können. Wir möchten diese Architekturen verwenden, um unsere empfohlenen Konfigurationen zu standardisieren und Kunden leistungsstarke, skalierbare und leicht zugängliche GitLab-Bereitstellungen bereitzustellen.

Für ein solches Tool benötigen wir realistische Testdaten, z. B. große Projekte mit Commits und Zusammenführungsanforderungen. Für die erste Iteration haben wir das Projekt von GitLab selbst übernommen.

Nachdem wir die Testumgebungen eingerichtet und ausgeführt hatten, waren wir bereit, sie mit dem GPT zu testen.

Was ist das GitLab Performance Tool (GPT)?


Mit GPT können verschiedene Auslastungstests für den GitLab-Benchmark ausgeführt werden. Sie müssen lediglich herausfinden, welchem ​​Durchsatz die Testumgebung standhalten kann (in Form von Anforderungen pro Sekunde), und die Vorbereitung der Testdaten sicherstellen.

GPT wurde auf der Basis eines der führenden Tools für Lasttests entwickelt - k6 . Hier sind einige der GPT-Funktionen:

  • Eine große Anzahl sofort einsatzbereiter Tests, die verschiedene GitLab-Endpunkte abdecken und die Möglichkeit bieten, eigene Tests hinzuzufügen. In der Dokumentation finden Sie eine Beschreibung der abgeschlossenen Tests . Dort werden häufig neue Tests hinzugefügt.
  • , GitLab .
  • .
  • .
  • , time to first byte ( ), .

Das talentierte Load Impact- Team hat k6 entwickelt , das den Kern des GPT bildet. Wir haben schnell erkannt, dass wir das Rad nicht neu erfinden müssen, da k6 die meisten unserer Anforderungen erfüllt: Es ist in Go geschrieben, weshalb es sehr produktiv und Open Source ist. Vielen Dank an das Team nicht nur für die Entwicklung von k6, sondern auch für die Zusammenarbeit mit uns.

Wie verwenden wir GPT?


GPT wird in mehreren automatisierten GitLab CI-Pipelines verwendet, um schnelles Feedback zum Betrieb von GitLab zu geben. CI-Pipelines von Referenzarchitekturen arbeiten mit der neuesten Vorabversion und werden in der Regel täglich oder wöchentlich ausgeführt. Unmittelbar nach dem Testen analysieren wir die Ergebnisse, um Probleme zu finden. Wir veröffentlichen die neuesten Ergebnisse im GPT-Wiki gemäß unserem Transparenzwert .

GPT wird auch in der Benchmarking-Pipeline verwendet, um zu sehen, wie sich die Leistung von GitLab von Release zu Release ändert. Diese Ergebnisse sind wichtig, da sie ein Bild einer verbesserten Leistung zeigen. Benchmark-Vergleichsergebnisse sind auch im GPT-Wiki verfügbar .

Mithilfe von GPT konnten wir verschiedene Engpässe in der Leistung von GitLab identifizieren und gemeinsam mit Entwicklern Verbesserungen priorisieren. Dieser Prozess hat sich ausgezahlt und wir freuen uns darauf, die Leistung mit jeder Version von GitLab zu verbessern. Zum Beispiel zeigte Release 12.6 in allen Bereichen einige bemerkenswerte Verbesserungen , von denen wir einen Rückgang von 92% erzielten! Sie können die erkannten Probleme in unserem Bug-Tracker sehen .

Wie können Sie GPT verwenden?


Wir haben lange entschieden, dass wir die gleichen Open Source-Prinzipien wie für unser Hauptprodukt befolgen möchten. Daher haben wir uns bei der Erstellung des GPT auf alle Benutzer konzentriert und nicht darauf, es zu einem ausschließlich internen Produkt zu machen. Deshalb erlauben wir anderen nicht nur, es zu benutzen, sondern ermutigen es auch! Dies ist sowohl für uns als auch für unsere Kunden von Vorteil, da wir Feedback aus verschiedenen Blickwinkeln erhalten, über die wir nicht nachgedacht haben. Einige Beispiele hierfür sind die Verbesserung der Richtlinien für empfohlene bandbreitenbasierte Spezifikationen oder die Verbesserung der Offline-Verwendung von GPT für Benutzer mit privaten Clouds .

Wenn Sie GPT für sich selbst verwenden möchten, beginnen Sie am besten mit der Dokumentation. Wie bereits erwähnt, besteht der größte Aufwand für die Verwendung von GPT darin, die entsprechenden Umgebungen vorzubereiten. In der Dokumentation werden sowohl dieser Punkt als auch die direkte Verwendung von GPT erläutert.

GPT in Aktion


Nachdem wir über das GPT gesprochen haben, ist es Zeit, es in Aktion zu zeigen. So wird der Auslastungstest für die List Group Projects-API mit einer 10k-Referenzarchitektur ausgeführt : asciinema.org/a/O96Wc5fyxvLb1IDyviTwbujj8 Weitere Informationen zu den Ergebnissen finden Sie in der GPT- Dokumentation .






Was weiter


Unser Ziel ist es, GitLab in Bezug auf die Leistung zum besten seiner Klasse zu machen. Und wir stehen erst am Anfang dieser Reise. Wir freuen uns, dass wir die Qualität des Kundenservice verbessern können, indem wir ihnen zusätzliche Tools zur Verfügung stellen.

Einige unserer Pläne für zukünftige Versionen umfassen die Erweiterung der Testabdeckung der GitLab-Funktionalität, der Einstiegspunkte (API, Web, Git), die Erweiterung der Arbeit an Referenzarchitekturen, Testdaten und Benutzerverhaltensmustern, um sie repräsentativer und realistischer zu gestalten.

Teilen Sie Ihr GPT- Feedback und / oder Ihre Vorschläge im GPT- Projekt-Repository mit! Wir freuen uns über Ihre Ideen und Vorschläge.



Ansible: Schnellstart.



All Articles