12 Punkte von xguru 2020-04-06 | 1 Kommentare | Auf WhatsApp teilen
  • Für alle PRs sind Code-Review und bestandene Tests erforderlich

  • Gemergter Code wird nur während der nordamerikanischen Arbeitszeiten deployt (damit Probleme im Fall der Fälle behoben werden können)

  • Etwa 12 reguläre Releases pro Tag

  • Für jedes Deployment wird eine verantwortliche Person festgelegt

  1. Release-Branch erstellen

  2. Auf Staging deployen und manuelle Tests durchführen

  3. Auf internes Slack (Dogfooding-Tier) deployen, danach Canary-Deployment (es werden nur 2 % des gesamten Traffics dorthin geroutet)

  4. Schrittweises Deployment auf 10, 25, 50, 75 und 100 Prozent

Zur Risikokontrolle werden die Deployment-Verantwortlichen geschult, damit sie alle Schritte überwachen und die Kommunikation übernehmen.

Probleme sollen so schnell wie möglich erkannt werden, dann wird der verursachende PR identifiziert, entfernt und ein neuer Build deployt.

Wenn ein Problem erst in Produktion auftritt und bis dahin nicht entdeckt wurde, wird vor der Untersuchung zunächst ein Rollback durchgeführt.

In der Anfangszeit des Unternehmens, als nur 10 EC2-Instanzen betrieben wurden, bestand das Deployment einfach aus rsync.

Vor dem Produktions-Deployment gab es nur eine einzige Staging-Stufe, und nach den Tests wurde sofort deployt.

Mit der wachsenden Zahl an Kunden wurde rsync allein zunehmend unzureichend.

→ Wechsel zu einem vollständigen parallelen Pull-basierten System

Anstatt den neuen Build per Skript auf die Server zu kopieren, holen alle Server den Build gleichzeitig ab, sobald sie durch eine Änderung des Consul-Schlüssels ein Signal erhalten.

→ Atomic Deploy mit getrennten Hot-/Cold-Ordnern

Beim Deployment wird der neue Code in das Cold-Verzeichnis kopiert, das den neuen Code noch nicht aktiv verwendet, während der bestehende Dienst weiterhin aus dem Hot-Verzeichnis ausliefert.

Sobald auf dem Server kein aktiver Prozess mehr läuft, werden Hot- und Cold-Verzeichnis vertauscht, sodass der neue Code sofort ausgeliefert wird.

1 Kommentare

 
xguru 2020-04-06

Consul by Hashicorp https://www.consul.io/

Da das Slack-Backend aus PHP/Hacklang besteht, das auf HHVM läuft, scheint dieser Hot/Cold-Austausch möglich zu sein.

https://www.quora.com/What-is-the-tech-stack-behind-Slack