Zum Inhalt springen
Bartl

Designherleitung

Vom gewünschten Betriebserlebnis zum gemeinsamen Startpfad.

Bartl begann nicht mit einem neuen Orchestrator. Am Anfang stand die Frage, wie sich eine zustandsbehaftete Anwendung verhalten müßte, damit Wiederherstellung kein selten geprobter Sonderfall bleibt.

Komplexität verschwindet nicht. Sie wird einmal in einen ausführbaren Vertrag gelegt, statt bei jedem Start erneut vom Menschen verlangt zu werden.

Das gewünschte Erlebnis

Think iPhone.

Eine Anwendung sollte sich so selbstverständlich wieder in Betrieb nehmen lassen wie ein Telefon. Der Nutzer beschreibt nicht die interne Operation. Das System erkennt die vorliegende Situation und führt den zulässigen Pfad aus.

Neues Gerät ohne vorhandenen Zustand

-> initialisieren

Ersatzgerät mit Sicherungsstand

-> wiederherstellen

Neueres System mit älterem Zustand

-> migrieren

Unvereinbarer Zustand

-> sicher anhalten

Ein mentales Bild, kein Architekturbeweis

Bartl bildet weder die interne Architektur eines iPhone nach noch übernimmt es dessen geschlossene Betriebsumgebung. Das Bild setzt die Erwartung an die Bedienbarkeit. Unterschiedliche Ausgangslagen sollen nicht unterschiedliche Runbooks verlangen. Die konkrete technische Antwort von Bartl entsteht erst aus den Beobachtungen darunter.

Die Reise

Das Muster verdichtete sich über mehrere Betriebsfragen.

Die Form änderte sich, der Kern blieb gleich. Installation, Änderung und Wiederherstellung sollten nicht als getrennte Welten behandelt werden.

  1. 2022

    Die Ausgangsfrage

    Wie würde ein Kaufmann IT heute entwerfen, wenn Einfachheit, verläßlicher Betrieb und Wiederherstellbarkeit vom Ergebnis her gedacht werden? Das iPhone lieferte das mentale Bild.

  2. 2023

    Das Betriebsziel

    Produktionsänderungen sollten reproduzierbar, prüfbar und unabhängig von der ausführenden Person werden. Weniger unterschiedliche Verfahren wurden zum Qualitätsmerkmal.

  3. 2025

    Das wiederkehrende Muster

    Im Betrieb kundenspezifischer, zustandsbehafteter Stacks zeigte sich dieselbe Entscheidung immer wieder. Vorhandener Zustand, Sicherungsstand und Versionen bestimmen den nächsten Schritt.

  4. 2026

    Der offene Schnitt

    Der Anwendungs-Startpfad wurde als technischer Baustein von Bartl beschrieben und mit einer ausführbaren WordPress-Referenz von seinem ursprünglichen Produktkontext gelöst.

Fünf Beobachtungen

Die Gestaltung beginnt bei Bedingungen, die sich nicht wegplanen lassen.

  1. Wert entsteht in Produktion.

    Builds, Artefakte und Pläne sind Mittel. Erst eine erreichbare und fachlich richtige Anwendung erbringt die beabsichtigte Leistung.

  2. Veränderung ist unvermeidlich.

    Software, Datenformate, Abhängigkeiten und Zielumgebungen bleiben nicht dauerhaft in derselben Version.

  3. Fehler sind unvermeidlich.

    Auch gute Prävention beseitigt weder Ausfälle noch unvollständige Änderungen oder beschädigte Eingaben vollständig.

  4. Seltene manuelle Abläufe sind nicht verläßlich.

    Ein Recovery-Runbook, das nur im Notfall gebraucht wird, driftet vom regelmäßig ausgeführten Produktionspfad weg.

  5. Jedes zusätzliche Glied hat einen Preis.

    Zwischen Absicht und Ergebnis wachsen mit jeder Übergabe kognitive Last, Fehlerfläche und schwer erkennbare Nebenwirkungen.

Design-Druck

Aus den Beobachtungen folgen vier Anforderungen.

Fehler lassen sich nicht vollständig verhindern.
Recovery muß Teil des Designs sein.
Ein selten ausgeführter Recovery-Pfad driftet.
Regelmäßige Änderungen sollen die Wiederherstellung mitprüfen, etwa durch eine Ersatzinstallation aus einer Sicherung.
Manuelle Genauigkeit skaliert nicht.
Der Pfad muß ausführbar, prüfbar und reproduzierbar sein.
Zusätzliche Steuerungsebenen verlängern die Wirkungskette.
Der Mechanismus muß nahe an Anwendung und Zustand bleiben.

Der Designauftrag

Zustandsänderung und Wiederherstellung mit möglichst wenigen unterschiedlichen Mechanismen ausführen. Normalstart und Recovery dürfen dabei keine getrennten Wahrheiten entwickeln.

Die Entdeckung

Wie die Anwendung startet.

Du installierst oder startest die Anwendung. Sie stellt selbst fest, was zu tun ist:

  • Sind ihre Daten bereits vorhanden, verwendet sie diese.
  • Andernfalls stellt sie die neueste Sicherung wieder her.
  • Ist kein Backup-Speicher konfiguriert oder gibt es noch keine Sicherung, startet sie mit den Ausgangsdaten der Anwendung.
  • Ist die Software neuer als die Daten, führt sie die notwendige Aktualisierung durch.

Du mußt diese internen Schritte weder auswählen noch von Hand ausführen.

Für regelmäßige Updates können wir die neuere Version als Ersatzinstallation aufbauen, statt die laufende Installation zu verändern. Der Ersatz stellt die Sicherung wieder her und aktualisiert die Daten mit demselben Verfahren. Jedes solche Update übt damit auch die Wiederherstellung.

Das ist eine Betriebsentscheidung, kein anderer Anwendungsmechanismus. Wir wählen die Version und den Ort, an dem sie laufen soll; die Anwendung bestimmt die Schritte.

Die Ersatzinstallation ändert das Ziel und erfordert die Umschaltung des Dienstes darauf, aber keine weitere Schnittstelle für Initialisierung oder Wiederherstellung.

Pseudocode für die Bartl-Startentscheidung
until serving():
    local = observe_local_state()
    if local.exists:
        engine version vs local.version:
            equal:    serving()
            engine >: migrate(local)
            engine <: abort("downgrade")
    else:
        backup = observe_backup()
        if backup.valid: restore(backup)
        else:            init()
Entscheidungslogik interaktiv ausprobieren

Was direkt folgt

Der gemeinsame Pfad verändert die Form des Betriebs.

  • weniger unterschiedliche Betriebsprozeduren und geringere kognitive Last
  • Sicherungsstände, die vor ihrer Verwendung technisch geprüft werden
  • Migrationen, deren Entscheidung und Ergebnis beobachtbar bleiben

Komposition

Der Startmechanismus und multiplied single tenancy lösen verschiedene Probleme.

Multiplied single tenancy bedeutet ein eigener Stack je Kunde, wiederholt nach demselben Bauplan. Die Isolation vervielfacht zunächst die Zahl der Betriebsobjekte. Der Startvertrag macht ihren Anwendungs- und Zustandslebenszyklus wiederholbar. Flottensteuerung kann die Wiederholung koordinieren; diese Topologie ist keine Voraussetzung für Bartl.

Single tenancy

Isolation

  • ein Kunde und ein Zustandsraum je Stack
  • getrennte Fehler- und Compliance-Grenzen
  • zusätzliche Infrastruktur- und Betriebsobjekte

Bartl-Startmechanismus

Wiederholbarer Lebenszyklus

  • derselbe Startvertrag je Stack
  • ein Pfad für Initialisierung, Restore und Migration
  • keine Mandantentrennung und keine Flottensteuerung

Fleet management

Konsistenz in der Vielzahl

  • Versionen und Rollouts über die Stacks steuern
  • Abweichungen und Ergebnisse sichtbar machen
  • manuelle Einzelpflege vermeiden

Zusammen wird eine belastbare Betriebsform möglich.

Getrennte Stacks können einen kleineren Blast Radius, eigene Daten- und Compliance-Grenzen sowie kundenbezogene Releases und Migrationen erhalten. Der gemeinsame Startvertrag macht ihre Lebenszyklen wiederholbar. Flottensteuerung kann Versionen und Rollouts koordinieren; ihr Nutzen muß ihre Kosten und geteilten Steuerungsrisiken rechtfertigen.

Der gemeinsame Startpfad beseitigt weder die Ressourcen- noch die Betriebskosten zusätzlicher Stacks. Er reduziert die Zahl unterschiedlicher Verfahren. Wie deren Wiederholung koordiniert wird, hängt von Umfang und Betriebsanforderungen ab, nicht von einer universellen Fleet-Management-Pflicht.

Saubere Trennung

Die Herleitung erklärt das Warum. Der Anwendungsvertrag präzisiert einen Baustein.

Bartl umfaßt Anwendung, Infrastruktur und Verantwortung für den vollständigen Service. Der kanonische Rahmen steht in README.md und der dort verlinkten Philosophie. Diese Seite erklärt den Startmechanismus; die technische Spec erläutert dessen Anwendungsvertrag, statt ganz Bartl zu definieren. Zielbereitstellung, sichere Aktivierung und der vollständige Recovery-Prozeß brauchen zusätzliche ausführbare Verfahren und eigene Nachweise.

Kanonischen Rahmen und Verträge lesen (EN)