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.