Haptiq Backups

Im Rahmen unserer Maintenance-Pakete und Service Level Agreements (SLA) betreuen wir seit vielen Jahren diverse WordPress Projekte für Kundinnen und Kunden. Neben Wartung, individuellem Support oder Uptime Monitoring gehören selbstverständlich auch regelmässige, automatisierte Backups mit dazu.

Bisher verwendeten wir für die Backups eine über die Jahre gewachsene Kombination aus eigenen Scripts, WP-CLI Befehlen und teils Plugins. Dies hat zwar funktioniert und sich grundsätzlich bewährt, aber auch einige Tücken die sich je länger je mehr bemerkbar machten und die wir nun verbessern wollten. In den letzten Monaten haben wir uns deshalb etwas Zeit genommen, um unsere Backupstrategie zu überarbeiten und zu vereinheitlichen.

Ziele

Nachdem wir die bisherigen Schwachpunkte identifiziert hatten, leiteten wir daraus ab, was unsere zukünftige Backup-Lösung erfüllen sollte:

  1. Vereinheitlichung: Backups aller Seiten sollen gleich funktionieren, um die Wartung zu vereinfachen und zukünftige Verbesserungen für alle Kunden einspielen zu können
  2. Performance: inkrementelle Sicherung nur der geänderten Daten, statt jedes mal erneut eine komplette Kopie zu übertragen
  3. Sicherheit: durchgängige Verschlüsselung bei Speicherung (at-rest) und Übertragung (in-transit) nach modernen Standards
  4. Team-Verfügbarkeit: alle im Team sollen jederzeit selbständig auf alle relevanten Sicherungen Zugriff haben und diese in einem Notfall wiederherstellen können
  5. Flexible Konfiguration: sinnvolle Defaults für die meisten Seiten, aber möglichst flexibel konfigurierbar an die Anforderungen verschiedener Hostingumgebungen

Technische Umsetzung

Nach den ersten Abklärungen und einigen Tests, landeten wir bei Restic, einem Open Source Backup Tool, welches sehr mächtig und trotzdem relativ einfach in der Anwendung ist und diverse Konfigurationsmöglichkeiten bietet.

Restic bot uns alles, was wir benötigen, inklusive der Möglichkeit inkrementeller Backups (kopiert nur was neu hinzugekommen oder geändert wurde), Deduplikation (sorgt dafür, dass keine redundanten Daten kopiert werden), SSH und SFTP um die Sicherungen extern zu speichern und Verwendung von sicheren, modernen Verschlüsselungsstandards (AES-256).

Für unseren Einsatzzweck haben wir dann ein eigenes Bash Script entwickelt, welches per cronjob regelmässig ausgeführt wird und alle Funktionen steuert, von der Backup-Planung über den Export der Datenbanken via WP-CLI bis hin zum Hochladen der Snapshots auf unseren externen Speicher. Über eine relativ simple Konfigurationsdatei lassen sich die Standardwerte übersteuern und z.B. die Häufigkeit oder Aufbewahrungsdauer der Backups an die Anforderungen jeder Seite anpassen.

Nachdem wir die neue Lösung zuerst eine Weile mit eigenen Projekten getestet hatten, wurde sie sukzessive bei Kundenprojekten eingeführt, und die Ergebnisse können sich sehen lassen. Die inkrementellen Backups erlauben es uns, viel häufigere Sicherungen durchzuführen und länger aufzubewahren, ohne dass dafür nennenswert mehr Speicherplatz benötigt wird. Und nicht nur das, der Traffic den wir jede Woche hin und her schieben hat sich sogar – trotz der viel häufigeren Snapshots – um ein Vielfaches reduziert, da nur noch geänderte Daten übertragen werden müssen.

Für unsere Wartungsarbeiten öffnete uns das ebenfalls ganz neue Möglichkeiten. Da heute alle Projekte dieselbe einheitliche Struktur verwenden, können wir uns viel einfacher kleine Helfer bauen, die uns die tägliche Arbeit einfacher machen. Zum Beispiel haben wir uns einen Weekly Status Report gebaut, der uns jeden Montagmorgen automatisch einen Überblick über den Zustand aller Backups gibt, oder ein Helferscript mit dem wir Seiten im Handumdrehen aus einem Backup lokal aufsetzen und innert weniger Minuten einsatzbereit sein können.

Open Source ❤️

Wir lieben Open Source und haben uns vorgenommen in Zukunft mehr von unserer Arbeit zu teilen. Deshalb haben wir den gesamten Code dazu auf Github released.

Bitte beachte, dass es sich um ein internes Tool handelt, welches exakt auf unsere Bedürfnisse zugeschnitten und daher sicher eher «opinionated» ist. Wir können keine Gewähr für die Funktionalität übernehmen. Falls du aber nach einer Backuplösung suchst, ähnliche Anforderungen hast oder einfach ein wenig Inspiration brauchst, freuen wir uns über jegliches Feedback, Inputs und nehmen auch gerne Pull Requests entgegen.

Github – Haptiq Backups

Claudio Rimann ist einer der Gründer der Haptiq GmbH. Selbständig seit 2011. Background im Marketing und Print-Design. Autodidakt. Designer aus Leidenschaft. Unrehabilitierbarer Digital-Junkie. Twitter, LinkedIn, Blog