Die Twelve-Factor App ist eine Methodik für Cloud-Native- und SaaS-Anwendungen, die Adam Wiggins von Heroku 2011 auf 12factor.net veröffentlichte. Zu ihren Faktoren gehören eine Codebase mit vielen Deploys, explizit deklarierte Abhängigkeiten, Konfiguration in Umgebungsvariablen, Backing Services als angehängte Ressourcen, strikt getrenntes Build, Release, Run, zustandslose wegwerfbare Prozesse, Dev/Prod-Parität und Logs als Event-Streams. Das Ziel sind portable, horizontal skalierbare Dienste.
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