Twelve-Factor App

Details
Auch bekannt als

12-Factor App

Kernkonzepte:

Codebase

Eine Codebase unter Versionskontrolle, viele Deploys; eine Eins-zu-eins-Beziehung zwischen App und Codebase

Abhängigkeiten

Abhängigkeiten explizit deklarieren und isolieren; niemals auf implizite, systemweite Pakete verlassen

Konfiguration in der Umgebung

Konfiguration (Credentials, Hostnamen, deploy-spezifische Werte) in Umgebungsvariablen ablegen, strikt vom Code getrennt

Backing Services

Datenbanken, Queues, Caches und SMTP als angehängte Ressourcen behandeln, austauschbar allein über die Konfiguration ohne Codeänderung

Build, Release, Run

Die drei Phasen strikt trennen; Releases sind unveränderlich und nur anfügbar, jedes Release hat eine eindeutige ID

Zustandslose, wegwerfbare Prozesse

Die App als einen oder mehrere zustandslose, nichts teilende Prozesse ausführen; Zustand nur in Backing Services halten. Robustheit durch schnellen Start und sauberes Herunterfahren maximieren (Disposability)

Port-Binding

Den Dienst durch Binden an einen Port exportieren; die App ist eigenständig und benötigt keinen zur Laufzeit eingespeisten Webserver

Nebenläufigkeit

Horizontal über das Prozessmodell skalieren, Prozesse als erstklassige Bürger behandeln

Dev/Prod-Parität

Entwicklung, Staging und Produktion so ähnlich wie möglich halten — kleine Lücken bei Zeit, Personal und Werkzeugen

Logs als Event-Streams

Logs als zeitlich geordnete Event-Streams nach stdout behandeln; die Ausführungsumgebung übernimmt Routing und Speicherung

Admin-Prozesse

Administrations- und Verwaltungsaufgaben (Migrationen, REPLs) als einmalige Prozesse in einer mit den Langläufern identischen Umgebung ausführen

Schlüsselvertreter

Adam Wiggins (Heroku, 12factor.net, 2011)

Wann zu verwenden:

  • Entwurf oder Review von Cloud-Native- und SaaS-Anwendungen im Hinblick auf Portabilität und Skalierbarkeit

  • Festlegen von Deployment-, Konfigurations- und Zustandslosigkeits-Konventionen für eine containerisierte oder PaaS-Last

  • Onboarding von Entwicklern auf das Twelve-Factor-Vokabular (Config-in-Env, angehängte Ressourcen, Build/Release/Run)

  • Einen LLM anweisen, einen deploybaren, umgebungsportablen Dienst zu erstellen statt eines maschinengebundenen

Verwandte Anker:

Kritik:

  • Kevin Hoffman, "Beyond the Twelve-Factor App" (O’Reilly, 2016) — hält das ursprüngliche Set für moderne Cloud-Plattformen für unvollständig und schlägt eine überarbeitete Fifteen-Factor-Methodik vor, die API First, Telemetry und Authentication and Authorization als eigenständige Faktoren ergänzt

Aktueller Stand:

  • Das kanonische Dokument auf 12factor.net trägt den Stand "Last updated 2017" und blieb rund acht Jahre unverändert; ein Trainingsdaten-Prior bedient höchstwahrscheinlich diesen eingefrorenen Text von 2011/2017

  • Salesforce/Heroku starteten eine offizielle Twelve-Factor-Modernisierungsinitiative (Brian Hammons, 10. Feb. 2025), ein Open-Source-Vorhaben, das die Prinzipien für Container, Kubernetes und Serverless überarbeitet und einen neuen Faktor Identity vorschlägt