copyright Christos Georghiou www
DevOps-Backups: Herausforderungen und bewährte Methoden
Ein ausreichendes und gutes Backup in DevOps-Umgebungen umfasst einerseits die benötigten Daten und anderseits den Status der Systeme, die zur Umgebung gehören.
Bei der Entwicklung einer Backup-Strategie für DevOps-Umgebungen geht es letztlich um den gesamten Unternehmenserfolg. Der Plan muss sich am geschäftlichen Bedarf orientieren, Kosten und Risikotoleranz ins richtige Verhältnis bringen und auch die Fähigkeiten der Mitarbeiter berücksichtigen. Letztlich muss ein Backup-Plan für DevOps zum optimalen Grad an Automation führen. Das meint jedenfalls Edwin Zhang, Senior Director Engineering und Experience Design für Cisco DevNet, Ciscos Unterstützungsprogramm für Entwickler.
Am besten fange man damit an, darüber nachzudenken, warum und wann Sicherungsabläufe anfallen, schlägt Zhang vor.
„Man braucht Backups, um Systemausfälle, Angriffe auf die digitale Sicherheitsarchitektur oder katastrophale Zwischenfälle zu kompensieren“, erklärt er. „In solchen Situationen ist es das Wichtigste, Daten und Systeme schnell und genau wieder herzustellen, so dass das Geschäft weiterlaufen kann.“
Auch in DevOps-Umgebungen gelten die bekannten grundlegenden Backup-Prinzipien, dazu aber einige besondere Überlegungen.
Backup-Arten und Herausforderungen bei der Integration
Die größte Herausforderung bei der erfolgreichen Implementierung und Durchführung des DevOps-Backups liegt in der Tatsache, dass es sich um eine laufende Betriebsumgebung handelt. DevOps-Umgebungen sind reich an hochdynamischen Microservices, die auf einem weit verteilten System eng verbundener Rechenressourcen, Daten, Applikationen und Services laufen.
Oft verteilen sich Anwendungen und Services auf mehrere Regionen und werden von mehreren Kunden gleichzeitig benutzt. Dann ist es essentiell, zwei Typen von Backup-Prozessen in Erwägung zu ziehen: das Backup persistenter Daten und das Backup des Systemstatus.
Persistente Backups haben mit Daten-Storage-Systemen zu tun, die Daten auch dann behalten, wenn der Strom abgeschaltet wird. Gesichert werden so Datenbanken, statische Ressourcen und Nachrichten. Backups des Systemstatus umfassen den Status des Clusters, der Microservices und der Daten-Pipelines.
Beide Backup-Arten erfordern einige Anstrengung beim Implementieren. Man brauche sie aber, um ein System gegebenenfalls wieder zum Laufen zu bringen, betont Zhang.
Eine weitere wichtige Herausforderung besteht darin, den Backup-Prozess erfolgreich in die DevOps CI/CD-Pipeline zu integrieren. Sie kombiniert die Techniken kontinuierliche Integration und kontinuierliche Auslieferung von Softwarekomponenten. Dieser Schritt sichert die voneinander abhängigen Komponenten einer Applikation, beispielsweise ihre aktuelle Produktionsversion, ihre Konfigurationen und Datenbanken.
„Abhängig vom DevOps-Tool, das verwendet wird, kann das sehr komplex sein“, sagt Mahadeva Bisappa, Principal Architect beim Dienstleister SPR, der professionelle Services anbietet.
Die CI/CD-Pipeline hat das traditionelle Wasserfall-Vorgehen bei der Softwareentwicklung mehr oder weniger vollständig ersetzt und ermöglicht es, alle Abläufe gleichzeitig abzuwickeln.
Bietet das DevOps-Tool keine einfache Möglichkeit, Backup-Schritte zu integrieren, bedeutet das eine externe Abhängigkeit. Diese müssen Organisationen koordinieren und mit jedem geplanten weiteren Release ausführen.
„Andenfalls könnte ein Schritt vergessen werden und am Ende ein veraltetes Backup dabei herauskommen“, sagt Bisappa.
Am besten ist es für ein zuverlässiges DevOps-Backup-System, den Backup-Prozess direkt in die CI/CD-Pipeline zu integrieren, die alle abhängigen Komponenten sichert. Das sollte vor der Bereitstellung neuer Veränderungen an der Software geschehen, rät Bisappa.
Automatisierung und die Rolle der Cloud
In einem gut definierten DevOps-Prozess sollten Backups ein automatisierter Schritt innerhalb der CI/CD-Pipeline sein.
„Der DevOps-Ingenieur, der für das Release zuständig ist, wäre dann für diesen Schritt verantwortllich“, schlägt Bisappa vor.
Allerdings könnte es sein, dass Ingenieure Unterstützung von den Systemadministratoren und Datenbank-Admins brauchen. Das hängt von den zu sichernden Daten und davon ab, wer sie handhabt.
Die Cloud ist nicht nur für DevOps eine populäre Plattform, sondern für alles, was eine Organisation sichert, hostet oder verbraucht.
„Die Cloud ist agil, man kann auf ihr schnell ein globales System einrichten und skalieren, das dauert nur Minuten bis Stunden. Dem stehen die Wochen und Monate gegenüber, die es dauert, eine On-Premises-Umgebung aufzubauen“, gibt Bisappa zu bedenken.
Alle wichtigen Cloud-Plattformen bieten Backup- und Restore-Fähigkeiten für alle Produkte und Dienste auf ihrer Plattform an. Das geschieht entweder durch automatische Backups, On-Demand-Backups oder beides. Allerdings bedeutet das nicht immer auch die Sicherung aller Daten. Anwender sollten sich jedenfalls genau informieren, in welchem Umfang die Sicherung der Daten des Anwenders in den Offerten des Cloud-Providers enthalten sind. Gegebenenfalls müssen sie Zusatzprodukte oder externe Services heranziehen, um ihre Daten zuverlässig und datenschutzkonform zu sichern. Auch die Integration des Backups mit dem DevOps-Prozess bedarf noch weiterer Entwicklungsanstrengungen.
„Diese Entwicklungen übernimmt entweder der Cloud-Plattform-Anbieter nativ oder die Funktionen kommen von Drittanbietern als Plug-ins, die in die Umgebung integriert werden“, erklärt Bisappa.