Semaphore halbiert die Zeit vom Push bis zur Bereitstellung für die anspruchsvollen Builds von Channable
😔 Vor Semaphore:
- ⛔️ 30 Minuten Haskell-Builds
- ⛔️ Unterdimensionierte Build-Agenten
- ⛔️ Verlust an Parallelisierungsbeschleunigung
- ⛔️ Produktivität durch Kontextwechsel verloren
- ⛔️ Warten auf Git-Klone
😄 Nach der Einführung von Semaphore:
- ✅ 10 Minuten Haskell-Builds ⬇️ 3x
- ✅ Leistungsstarke Build-Agenten
- ✅ Mehr parallele Kompilierung
- ✅ Weniger Workflow-Störungen
- ✅ Lokaler Git-Cache
Probieren Sie Semaphore aus
Die Herausforderung
Der Workflow des Channable-Teams erlaubt es nur, Merges in den Master-Branch durchzuführen, nachdem das CI-System den Merge-Commit überprüft hat. Wenn in der Zwischenzeit ein weiterer Merge in den Master erfolgt, werden die Ergebnisse der anderen Merge-Commit-Bauten ungültig. „Lange Wartezeiten beim CI sind frustrierend“, erklärt Robert Kreuzer, Mitgründer und CTO. „Wenn es zu lange dauert, macht man in der Zwischenzeit etwas anderes, und wenn man sich erinnert, nach dem Build zu schauen, hat jemand anderes bereits in den Master gemerged, sodass man von vorne anfangen muss.“ Darüber hinaus führen lange Build-Zeiten zu mehr Kontextwechseln, weshalb das Team bestrebt war, ihre CI/CD-Pipeline zu beschleunigen.
Channable hatte einige spezifische Probleme mit ihrer bestehenden CI-Lösung, Travis. Erstens waren die Wartezeiten, bis Jobs gestartet wurden, lang und es gab keine Sichtbarkeit, was die Verzögerung verursachte. Zweitens umfasst die Pipeline von Channable das Kompilieren von Haskell-Code zu nativen Binärdateien, was CPU-intensiv ist. Das Team stellte fest, dass Builds auf Travis-Maschinen wesentlich langsamer waren als auf ihren eigenen Workstations.
Die exzessiven Warte- und Pipeline-Ausführungszeiten wurden im Kontext von Produktionsproblemen besonders deutlich. Vom Pushen eines Hotfixes bis zur Bereitstellung konnten leicht 20 Minuten vergehen, was, wie Robert hervorhebt, „eine sehr lange Zeit für einen kritischen Bug ist, um in der Produktion zu bleiben.“
„Für CPU-intensive Pipelines ist es definitiv das richtige Werkzeug für den Job.“

Robert Kreuzer
Mitgründer und CTO
Insgesamt benötigte Channable ihre neue CI/CD-Lösung, um
✔️ Wartezeiten für in der Warteschlange befindliche Builds zu verkürzen
✔️ Schnellere Build-Maschinen für CPU-intensive Kompilierung zu nutzen
✔️ Schnelles, lokales Caching für bandbreitenintensive Git-Operationen zu gewährleisten
„Der Semaphore-Cache war sogar besser als erwartet, sehr schnell und einfach zu bedienen“

Robert Kreuzer
Mitgründer und CTO
Die Lösung
Das Channable-Team prüfte eine Reihe von Lösungen, darunter AppVeyor, Azure DevOps, BitBucket Pipelines, CircleCI, Cirrus, CodeShip, Concourse, GitLab CI und SourceHut Builds. Die Verfügbarkeit von Mehrkern-Build-Maschinen und das flexible sowie benutzerfreundliche Caching hoben Semaphore als bevorzugte Lösung hervor.
„Der größte Einfluss für uns war die Verfügbarkeit von größeren Mehrkern-VMs“, sagt Robert. „Besonders die Haskell-Kompilierung und unser Test-Suite konnten erheblich vom zusätzlichen Parallelismus profitieren.“ Semaphore bietet drei Varianten von Linux-Maschinen an. Jeder Job in einer Pipeline läuft auf einem separaten Build-Agenten. Für den CPU-intensiven Haskell-Kompilierungsschritt wählte Channable die leistungsstärkste 8-Kern-Variante, um die Geschwindigkeit zu maximieren.
Weitere Verbesserungen gegenüber der alten Lösung ergaben sich durch Caching. Die erste Art des Caching, die die Leistung steigerte, ist Semaphores lokaler Git-Cache. Dieser Cache reduzierte die Zeit für das Klonen von Git-Repos erheblich. Die zweite Art des Caching, die im Workflow verwendet wird, beschleunigte die Pipeline von Channable und reduzierte den Download-Verkehr. Semaphore stellt einen Cache für jedes Projekt bereit. Der Cache ist in jedem Pipeline-Job verfügbar. Der Channable-Workflow speichert selten veränderte Abhängigkeiten nach dem ersten erfolgreichen Build jedes Tages. Caching ist in jedem Job standardmäßig verfügbar, daher war die Konfiguration des Builds einfach. „Der Semaphore-Cache war sogar besser als erwartet“, fasst Robert zusammen, „sehr schnell und einfach zu verwenden“.


Die Ergebnisse
Semaphore plant Jobs in einem Pool von bis zu 50 Build-Maschinen pro Organisation, was eine zehnfache Steigerung im Vergleich zum leistungsstärksten beworbenen Plan von Travis darstellt. Mit mehr Agenten zur Ausführung von Jobs und leistungsstärkeren Agenten für die größten Jobs hat sich die neue CI/CD-Lösung wie erwartet ausgezahlt. Wie Robert zusammenfasst: „Der insgesamt erzielte Leistungsvorteil im Vergleich zu Travis hatte das erwartete Ergebnis: Wir haben die Zeit vom Push bis zum Ergebnis etwa halbiert.“ Ein großer Teil der Einsparungen kam von dem Hochleistungs-Build-Agenten, der für die CPU-intensive Haskell-Kompilierung verwendet wurde. Die Zeit für einen vollständigen Rebuild der nativen Binärdateien (mit allen Abhängigkeiten im Cache) sank von 30 Minuten unter Travis auf etwa 10 Minuten mit Semaphore.
Insgesamt erhielt das Team die gewünschten Verbesserungen bei der Vorlaufzeit und Produktivität. „Die Zeit bis zur Bereitstellung (vom Mergen eines PRs bis zur Bereitstellung des Pakets) sank aufgrund kürzerer Wartezeiten“, berichtet der CTO, „was die Bereitstellungen weniger störend für den gesamten Workflow machte.“
“Kurze Wartezeiten in der Warteschlange, schnelle Builds, eine elegante Caching-Lösung.”

Robert Kreuzer
Mitgründer und CTO
Channable entwickelt eine SaaS-Lösung für E-Commerce-Unternehmen, um ihre Produkte oder Dienstleistungen an verschiedene Marktplätze, Vergleichsmaschinen und Affiliate-Plattformen zu senden. Die von dem über 100 Mitarbeiter starken Unternehmen entwickelte Plattform hat sich zur Nummer eins im Bereich Produktfeed-Management in den Niederlanden entwickelt. Das Channable-Team konzentriert sich auf Benutzererfahrung, Leistung und die Maximierung der verfügbaren Kanalintegrationen, um den Bedürfnissen der Nutzer gerecht zu werden.
www.channable.com
Branche
eCommerce
Engineering-Team
35 Personen
Technologie-Stack
Python
Haskell
Nix
JavaScript
Echte Ergebnisse. Echte Wirkung. 🎯📈