Superhuman reduziert seine Build-Zeit mit Semaphore von 22 Minuten auf 8 Minuten.

  • ⛔️️ Verschiedene Tools, die für den CI-Prozess verantwortlich sind
  • ⛔️ Ein langsamer und kostspieliger Feedback-Zyklus
  • ✅ Ein Tool für alles
  • ✅ Ein schnellerer und kostengünstigerer Feedback-Zyklus

Probieren Sie Semaphore aus

Die Herausforderung

Superhuman ist stolz darauf, der schnellste E-Mail-Client der Welt zu sein, und möchte diesen Wert der Geschwindigkeit auch für alle internen Tools leben. Vor Semaphore waren das Testen und die Bereitstellung zu langsam. Das Team hinter Superhuman nutzte Wercker für das Backend (das vor einigen Jahren von Oracle übernommen wurde). Ihr Frontend-CI-Dienst nutzte das „Old-School-Modell“ der Abrechnung nach Spitzenparallelität, und sie hatten außerdem einen weiteren CI-Dienst, um die Builds für den Desktop-Client auszuführen.

Superhuman benötigte einen Dienst, der:

  1. Von Grund auf so entwickelt wurde, dass es schnell ist.
  2. macOS-Code-Signierung unterstützen kann.
  3. Die tatsächliche Nutzungszeit berechnet, nicht die Spitzenparallelität.
  4. Ein hohes Maß an Spitzenparallelität bietet.
  5. Auf E-Mails reagiert, wenn sie Kontakt aufnehmen.

Die Lösung

Das Superhuman-Backend ist in Go geschrieben. Wenn Code in einen Branch gepusht wird, erstellt Semaphore Builds und führt die Tests aus. Wenn die Tests auf ‚master‘ oder ’staging‘ bestehen, erstellt Semaphore Docker-Images, lädt diese in das Google Container Registry hoch und rollt sie schrittweise in ihrem Google Container Engine-Cluster aus.

Das Frontend ist in JavaScript geschrieben. Wenn Code in einen Branch gepusht wird, führt Semaphore Zen (einen von einem ihrer Ingenieure entwickelten Test-Runner) aus, um alle Tests durchzuführen. Zen kompiliert den Code, lädt ihn auf S3 hoch und startet 600 AWS Lambda-Instanzen, um die Tests parallel auszuführen (der Semaphore-Worker koordiniert dies). Wenn die Tests in den Branches ’staging‘ oder ‚production‘ bestehen, erstellt Semaphore automatisch ein Bundle und lädt es in den Google Cloud Storage hoch.

our solution

Die Ergebnisse

Semaphore bietet eine deutlich bessere Leistung, die Maschinen sind nicht überlastet und es können viele Builds parallel ausgeführt werden. Es ist auch wesentlich günstiger als das alte Modell, bei dem Kapazitäten und Ressourcen für 10 parallele Jobs reserviert werden mussten (was 80 % der Zeit verschwendet und 10 % der Zeit nicht ausreicht).

✔️ Bessere Leistung

✔️ Die Maschinen sind nicht überlastet

✔️ Viele Builds parallel ausführen

✔️ Günstiger als das alte Modell

Branche

Jobsuche & Rekrutierung

Technologie-Stack

Go

Javascript

Docker

GKE

Aws Lambda

Star us on GitHub