Die Container von Semaphore sorgen für Stabilität bei AppSignal

  • ⛔️️ Instabile Builds
  • ⛔️ Build-Agents schwer zu konfigurieren und zu debuggen
  • ⛔️ Ruby-Gem-Build-Zeit 14 Minuten
  • ⛔️️ JRuby-Build-Zeit 7 Minuten
  • ⛔️ Verwirrende Benutzeroberfläche
  • ⛔️ ‚Gemischte‘ Support-Erfahrung
  • ✅ Zuverlässige Builds
  • ✅ Nahtlose Container-Unterstützung
  • ✅ 6,5 Minuten Ruby-Gem-Build ⬇️ 2,2x schneller
  • ✅ 1,5 Minuten JRuby-Build ⬇️ 4,5x schneller
  • ✅ Intuitive Benutzeroberfläche
  • ✅ Schneller Support

Probieren Sie Semaphore aus

Die Herausforderung

Das AppSignal-Team sah sich den Einschränkungen ihrer alten CI-Tools ausgeliefert. Die Builds waren instabil. Die Entscheidung, einen Wechsel vorzunehmen, fiel, als sie von ihrem bisherigen CI-Anbieter nicht die benötigte Unterstützung erhielten. „CircleCI hat irgendwo in ihrem Stack eine Änderung vorgenommen, die unseren Build ständig zum Scheitern brachte,“ erklärt Tom de Bruijn, Entwickler bei AppSignal. Doch das Problem beschränkte sich nicht nur auf einen CI-Anbieter. Tom fährt fort: „Wir hatten ein ähnliches Problem mit TravisCI. Die Builds waren unzuverlässig, und diese Probleme traten nur bei TravisCI auf.“

Aufgrund der häufigen Build- und Testfehler begann der Wert des CI-Setups des Teams zu schwinden. Erstens ging viel Zeit damit verloren, Builds erneut auszuführen, um herauszufinden, ob ein Fehler tatsächlich vorlag. Zweitens steckte Tom viel Mühe in das Debugging der fragilen Builds. Drittens und am wichtigsten: Die zufälligen Fehler verdeckten echte Probleme. Wie Tom beschreibt: „Fehlschlagende Tests schlichen sich ein. Wenn der Build immer oder zufällig fehlschlägt, schaut man sich das Build-Ergebnis irgendwann nicht mehr an.“

Zusätzlich zu den Problemen mit ihrem vorherigen CI-Setup fand das Team die Benutzeroberfläche schwer zu bedienen. „Die Leute haben sich in der Workflow-UI von CircleCI verloren“, berichtet Tom. Das führte dazu, dass das Team den Aufbau von fortgeschrittenen Workflows, die die Build-Zeiten hätten verbessern können, vermied. Zudem erzeugte die Vielzahl an unterschiedlichen Jobs viele Benachrichtigungen in Slack, wodurch es schwierig war, festzustellen, wann eine vollständige Reihe von Jobs für einen Pull Request abgeschlossen war. „Das Team dachte, die Builds wären fertig, bevor sie es tatsächlich waren“, erinnert sich Tom.

Insgesamt benötigte AppSignal von ihrer neuen CI/CD-Lösung:

✔️ Vollständige Kontrolle über die Ausführungsumgebung

✔️ Einsatz von wartungsarmen SaaS-Build-Agents

✔️ Unterstützung durch schnellen Kundenservice

✔️ Einfache Modellierung des gesamten Workflows

Die Lösung

Toms wichtigster Ratschlag für alle, die einen Wechsel des CI-Anbieters in Erwägung ziehen, ist, die Testumgebung auf Container umzustellen. Semaphores nahtlose Unterstützung für Docker-Container ermöglichte es dem AppSignal-Team, den Workflow schnell zu portieren. Der Server-Testcontainer des Teams, aus AppSignals eigener, privater Docker-Hub-Sammlung, gab ihnen die volle Kontrolle über die Laufzeitumgebung und schützte sie vor externen Änderungen.

Alle Jobs im Workflow sind in einem Modell zusammengefasst. „Die Workflow-UI ist besser“, sagt Tom, „ich muss den Leuten nicht mehr zeigen, wo sie den gesamten Workflow sehen können, zum Beispiel.“ Durch die einfachere Workflow-Modellierung treffen Slack-Benachrichtigungen nur noch für abgeschlossene Workflows ein – nicht mehr für jeden einzelnen Job wie zuvor.

Durch die verbesserte Benutzererfahrung mit Semaphore konnte das Team das Parallelisieren ihres Workflows voll ausnutzen. „Wir haben mehr Builds aufgeteilt, sodass separate Teile parallel laufen können.“ Semaphores hochwertige Dokumentation war dabei äußerst hilfreich. „Die meisten Antworten auf meine Fragen finde ich in der Dokumentation,“ schließt Tom.

Ein weiterer wichtiger Aspekt der Lösung sind die geringen Wartungsanforderungen. Semaphore stellt Build-Agents nach Bedarf bereit. Dadurch müssen die AppSignal-Ingenieure keine Zeit und Ressourcen für die Einrichtung und Wartung der Agents aufwenden.

AppSignal Workflows
AppSignal workflow in Semaphore

Die Ergebnisse

Toms Einschätzung der Ergebnisse? „Das Ausführen der Ruby-Gem-Builds auf Semaphore funktioniert perfekt, ohne zufällige Fehler, und es ist viel schneller erledigt.“ Die Beseitigung instabiler Builds führt direkt zu einer Zeitersparnis. Indirekt steigert die erhöhte Zuverlässigkeit die Produktivität des Teams noch weiter.

Auch die abgelaufene Zeit und die CPU-Zeit jedes Build-Zyklus haben sich radikal verbessert. Zum Beispiel dauerte der Build des Ruby-Gems bei AppSignal früher etwa 14 Minuten (85 Minuten CPU-Zeit). Jetzt dauert es nur noch 6,5 Minuten (40 Minuten CPU-Zeit). Auch die JRuby-Builds wurden beschleunigt: 7 Minuten mit der alten Lösung, und nur 1 Minute 30 Sekunden mit Semaphore.

„Der Build ist sofort schneller mit dem Standard-Maschinentyp“, bemerkt Tom. „Wir haben alle unsere Projekte von CircleCI auf Semaphore umgestellt und haben auch begonnen, die TravisCI-Builds für unsere Integrationen auf Semaphore zu migrieren.“

AppSignal ist ein führender europäischer Anbieter von Echtzeit-APM (Application Performance Monitoring), der 2012 gegründet wurde.

Das remote arbeitende Team entwickelt ein Überwachungstool für Anwendungen, das Fehlererfassung, Performance-Tracking, Serverüberwachung, Metrik-Dashboards und Anomalieerkennung in einer einzigen Benutzeroberfläche vereint. Durch die Kombination dieser Funktionen ermöglicht AppSignal seinen Nutzern, klare und fokussierte Einblicke zu gewinnen.

AppSignal integriert sich in eine Vielzahl von Sprachen, die im Web verwendet werden: Ruby, Elixir, Node.js und JavaScript, und wird derzeit von über 1.000 Teams eingesetzt.

Hauptsitz

Informationstechnologie

Unternehmensgröße

11-50 Mitarbeiter

Engineering-Team

6 Personen

Technologie-Stack

Ruby on Rails

MongoDB

Javascript

React

Star us on GitHub