Das Zwölf-Faktor-Prinzip im Cloud-native-Ansatz

Cloud basierte Anwendungen erstellen

Der moderne Ansatz Cloud-native-Computing bedeutet für dich als Unternehmer ein hohes Maß an Flexibilität. Damit trägst du der Tatsache Rechnung, dass heutzutage Ideen nicht monatelang im Hinterzimmer diskutiert werden können, sondern möglichst schnell auf dem Markt erprobt werden müssen. Auch die Ansprüche der Nutzer an die von dir zur Verfügung gestellten Systeme sind gewachsen. User erwarten schnelle Reaktionsfähigkeit, innovative Tools und vor allem keine Ausfallzeiten. Mit Systemen, die in und für die Cloudumgebung konzipiert wurden, bist du auf all das bestens vorbereitet.

Was sind die Vorteile des Zwölf-Faktor-Prinzips

Eine in der IT-Branche sehr weit verbreitete Methode, um eine cloudbasierte Anwendung zu erstellen, ist das Zwölf-Faktor-Prinzip. Die folgenden zwölf Faktoren bilden eine solide Grundlage für die Entwicklung deiner Vision. Systeme, die nach diesem Prinzip konzipiert wurden, können schnell bereitgestellt werden, lassen sich jederzeit ergänzen und reagieren flexibel auf aktuelle Marktanforderungen.

Das Zwölf-Faktor-Prinzip:

1. Codebasis

Jeder Microservice basiert auf einem eigenen Programm-Code, der jeweils unabhängig gespeichert und verwaltet wird. Von diesem Programm-Code können beliebig viele Services gleichzeitig erstellt werden.

2. Abhängigkeiten

Jeder Microservice kann unabhängig angepasst und verändert werden. So musst du bei Änderungswünschen oder Optimierungen nicht das gesamte System anfassen. Abhängigkeiten müssen explizit deklariert und isoliert werden, damit bei Änderungen keine Überraschungen auftreten.

3. Konfiguration

Konfiguriert wird nie ein spezifisches System, sondern umgebungsunabhängig. Damit ist sicher, dass deine Services in der Cloud überall laufen können.

4. Unterstützende Dienste

Deine Services wie beispielsweise Cashes, Nachrichtenbroker oder Datenspeicher werden als angehängte Ressourcen behandelt. Damit sind sie von der Anwendung entkoppelt und somit austauschbar.

5. Build, Release, Run

Die Phasen der Erstellung und der Nutzung eines Services werden durch den Release-Prozess strikt voneinander getrennt. Dadurch werden in der Cloud keine Entwicklungswerkzeuge mehr benötigt und dein Service auf das minimal Nötige reduziert – das erhöht die Sicherheit und spart Kosten im Betrieb.

6. Stateless

Um einen Service jederzeit austauschen oder skalieren zu können, müssen Services selbst ohne gespeicherte Zustände funktionieren. Nur so ist ein Zero-Downtime-Update ohne Datenverluste möglich.

7. Bindung an Ports

Dienste müssen durch das Binden an Netzwerk-Ports bereitgestellt werden, um dadurch die Isolation von anderen Microservices zu erreichen. So stellst du sicher, dass deine Anwendung in der Cloud skaliert werden kann.

8. Parallelität

Wenn die Kapazität erhöht werden muss, kannst du sie horizontal über mehrere identische Services hinweg hochskalieren. Dies ist die größte Stärke der Cloud-native Architektur – automatische Anpassung an die gerade erforderliche Leistung.

9. Austauschbarkeit

Microservices können schnell gestartet und problemlos gestoppt werden. Diese Austauschbarkeit macht es möglich, bei einem Service-Ausfall in kürzester Zeit einen Ersatz bereit zu stellen oder hoch und herunter zu skalieren, wie es gerade nötig ist.

11. Logs

Logs sollten als „event stream“ behandelt und archiviert werden. In einer Cloud-native-Anwendung dient dafür nicht mehr die klassische Log-Datei, sondern ein über Netzwerk-Ports angebundener Service. Die zentrale Erfassung aller Logs des gesamten Systems ermöglicht dem DevOps-Team Fehler zu erkennen, noch bevor Störungen im Betrieb auftreten.

12. Admin-Prozesse

Du solltest Admin-Aufgaben wie Datenbank-Updates als einmalige, unabhängige Vorgänge auslegen. Während ein Deploy den Produktionscode des Microservice automatisch in Betrieb nimmt, werden administrative Aufgaben von diesem Prozess unabhängig ausgelöst. Der notwendige Programm-Code für diese Aufgaben ist im Produktionscode mit enthalten, die Ausführung erfolgt aber davon unabhängig.