Zum Inhalt springen

Ein Mechanismus für den gesamten Lifecycle deiner Anwendung.

Egal, was der Ausgangspunkt ist - du bist betriebsbereit.

Der vollständige Decision Tree.

until serving():
    if local state exists:
        engine version vs state version:
            equal:    serving()
            engine >: migrate()
            engine <: abort("downgrade")
    else:
        if fetch_backup(): restore(backup)
        else:              init()

serving(): run app, schedule backups

Ein Design Pattern für Application Lifecycle. Der Mechanismus verzweigt anhand dessen, was er vorfindet - nicht anhand der angeforderten Operation.

Wie viele Kunden betroffen?

Wie schnell wieder online?

Wie viel Datenverlust?

Bartl macht die Antworten zu automatischen Konsequenzen deines Betriebs.

Nicht durch etwas Zusätzliches - sondern indem fünf separate Prozeduren durch einen einheitlichen Mechanismus ersetzt werden.

Automatisiere Disaster Recovery -> Installation kommt gratis.

Füge Version Detection hinzu -> Upgrades kommen gratis.

Führe es auf einem anderen Server aus -> Migration kommt gratis.

Halte das Backup portabel -> Souveränität kommt gratis.

Disaster, Kostendruck, Vertragsende, Neugier: der Grund für den Wechsel ändert nicht die Operation. Der Zeitrahmen auch nicht - ob dreißig Sekunden oder dreißig Tage, es ist derselbe Restore. Das ist Wechselfähigkeit.

Für wen das ist

  • Du betreibst Anwendungen in Produktion und brauchst Recovery, die sich mit jedem Deployment selbst probt.
  • Du brauchst Datenisolation und separate Compliance-Grenzen pro Kunde.
  • Du willst den Betrieb linear skalieren - der N-te Stack bringt Arbeit, nicht Komplexität.
  • Du willst deinen Provider zu deinen Bedingungen verlassen, in deinem Zeitrahmen.