# The Twelve-Factor App

[Best practices](https://12factor.net) für die Entwicklung von Software as a Service (SaaS)

- Nicht nur geeignet für das Deployment in die Cloud

- Möglichst reibungsloser Übergang zwischen Entwicklung und Betrieb (Continuous Deployment)

- Einfache Skalierung im laufenden Betrieb

???

Bild:

    (FaaS: Serverless Computing)

    SaaS: Software-aaS (Programmfenster)
    PaaS: Platform-aaS (Windows-Logo)
    IaaS: Infrastructure-aaS (Computer)
---

# The Twelve-Factor App
#### Die 12 Faktoren

.column[
##### 1. Codebase

Eine im Versionsmanagementsystem verwaltete Codebase, viele Deployments

##### 2. Abhängigkeiten

Abhängigkeiten explizit deklarieren und isolieren
]

.column[
##### 3. Konfiguration

Die Konfiguration in Umgebungsvariablen ablegen

##### 4. Unterstützende Dienste

Unterstützende Dienste als angehängte Ressourcen behandeln
]

---

# The Twelve-Factor App
#### Die 12 Faktoren

.column[
##### 5. Build, release, run

Build- und Run-Phase strikt trennen

##### 6. Prozesse

Die App als einen oder mehrere Prozesse ausführen
]

.column[
##### 7. Bindung an Ports

Dienste durch das Binden von Ports exportieren

##### 8. Nebenläufigkeit

Mit dem Prozess-Modell skalieren
]

---

# The Twelve-Factor App
#### Die 12 Faktoren

.column[
##### 9. Einweggebrauch

Robuster mit schnellem Start und problemlosen Stopp

##### 10. Dev-Prod-Vergleichbarkeit

Entwicklung, Staging und Produktion so ähnlich wie möglich halten
]

.column[
##### 11. Logs

Logs als Strom von Ereignissen behandeln

##### 12. Admin-Prozesse

Admin/Management-Aufgaben als einmalige Vorgänge behandeln
]

---

# The Twelve-Factor App
#### … und CALM(S)

.column[
#### Culture

 1. Codebase  
 5. Build, release, run  
 6. Prozesse

#### Automation

 2. Abhängigkeiten  
 3. Konfiguration  
 4. Unterstützende Dienste  
 9. Einweggebrauch  
 12. Admin-Prozesse  
]

.column[
#### Lean

 8. Nebenläufigkeit

#### Measurement

 7. Bindung an Ports  
 10. Dev-Prod-Vergleichbarkeit  
 11. Logs
]

---
