• Keine Ergebnisse gefunden

11_12 Factor Apps

N/A
N/A
Protected

Academic year: 2022

Aktie "11_12 Factor Apps"

Copied!
20
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung

unter dem Förderkennzeichen 16OH22005 gefördert.

Die Verantwortung für den Inhalt dieser Veröffentlichung liegt beim Autor/bei der Autorin.

(2)

Wir bilden Zukunft.

12 Factor App

(3)

Wir bilden Zukunft.

Einleitung

Die 12 Factor App ist eine vom PaaS-Anbieter Heroku entwickelte Methodik für die Entwicklung von Cloud- Anwendungen, vor allem für PaaS-Lösungen

Sie besteht aus 12 Prinzipien, die

– deklarative Formate für Automatisierung

– eine klare Abgrenzung zur darunterlegenden Technologie haben – Maximale Portierbarkeit ermöglichen

– In modernen Cloud-Umgebunden bereitgestellt werden

– Minimale bis keine Unterschiede zwischen Entwicklungs- und Produktivumgebung haben

– Continuous Deployment ermöglichen

– Ohne (signifikante) Änderungen skaliert werden können

(4)

Wir bilden Zukunft.

Einleitung

 Die 12 Prinzipien sind

1. Codebase

2. Dependencies 3. Config

4. Backing Services 5. Build, Release, Run 6. Processes

7. Port Binding 8. Concurrency 9. Disposability 10. Dev/prod arity 11. Logs

(5)

Wir bilden Zukunft.

1 – Codebase

 Der Code einer 12 Factor App wird immer von einem Versionskontrollsystem verwaltet

 Zu einer Codebase gehört immer eine

Anwendung. Ein Code wird nicht genutzt, um mehrere verschiedene Anwendungen

bereitzustellen

 Ein Deploy ist eine ausgeführte Instanz der Anwendung

(6)

Wir bilden Zukunft.

2 – Dependencies

 Eine 12 Factor App deklariert Abhängigkeiten explizit

 Sie hängt niemals implizit von vorhandenen Systemressourcen ab

– All Abhängigkeiten werden lokal in der Anwendung installiert

 Abhängigkeiten werden in einem Dependency Manifest, einer deklarativen Konfiguration,

festgehalten

 Dieses Vorgehen macht die Anwendung

unabhängig von Betriebssystem und anderen Einflüssen

(7)

Wir bilden Zukunft.

3 – Config

 Die Konfiguration ist das einzige, das zwischen verschiedenen Deployments unterschiedlich ist

 Konfiguration muss strikt vom Code getrennt werden

– Das ermöglicht es, Code in verschiedenen

Umgebungen deployen zu können, ohne Änderungen an der eigentlichen App vornehmen zu müssen

 Konfiguration wird in Umgebungsvariablen abgelegt

– Diese können leicht konfiguriert werden und sind technologieunabhängig

(8)

Wir bilden Zukunft.

4 – Backing Services

 Ein Backing Service ist ein externer Dienst, der über ein Netzwerk genutzt wird

 Der Zugriff findet mittels URL aus der Konfiguration statt

 Es findet keine Unterscheidung zwischen

Diensten auf anderen oder lokalem Rechner statt

(9)

Wir bilden Zukunft.

5 – Build, release, run

 Das Deployment einer Anwendung besteht aus drei Schritten

– In der Build-Phase wird der Code in ein ausführbares Artefakt transformiert

– Während der Release-Phase wird dieses Artefakt mit der Konfiguration zu einem Release kombiniert

– In der Run-Phase wird das Release in der Zielumgebung ausgeführt

 Es gibt eine strikte Trennung der Phasen

– Z.B. kann der Code eines Releases nicht angepasst werden

 Jedes Release hat eine eindeutige Kennung

(10)

Wir bilden Zukunft.

6 – Processes

 Eine Anwendung wird als ein oder mehrere Prozesse ausgeführt

 Im einfachsten Fall handelt es sich um eine einfache Skript-Datei; bei komplizierteren Setups können mehrere Prozesse gestartet werden

 Jeder Prozess ist stateless und teilt sich keine Daten mit anderen Prozessen

– Keine Dateien schreiben

– Speicherung aller Daten in Backing Services

(11)

Wir bilden Zukunft.

7 – Port Binding

 Viele Anwendungen basieren darauf, in einem Web-Container ausgeführt zu werden

 Bei einer 12 Factor App bringt die Anwendung selbst den HTTP-Server mit

– Sie ist self contained, basiert nicht auf externen Abhängigkeiten

– Gilt auch für andere Netzwerkdienste

 Der genutzte Port wird über die Konfiguration gesetzt

(12)

Wir bilden Zukunft.

8 – Concurrency

 Die Prozesse einer 12 Factor App sind First Class Citizens; sie sind in sich geschlossen,

repräsentieren eine komplette Anwendung oder einen strikt separierten Teil davon

 Jedem Prozess wird ein Typ zugewiesen

– Z.B. web für HTTP(S)-Dienste

 Die Unabhängigkeit erlaubt einfache Skalierung

(13)

Wir bilden Zukunft.

8 – Concurrency

 Grafische Darstellung dreier Prozesstypen und deren unterschiedlicher Skalierung

(14)

Wir bilden Zukunft.

9 – Disposability

 Prozesse einer 12 Factor App sind disposable – sie können zu jedem Moment gestartet oder

gestoppt werden

– Dadurch können sie schnell und flexibel provisioniert werden, was automatische Skalierung ermöglicht

 Ziel von Prozessen sollte es sein, die Startzeit möglichst gering zu halten

 Weiterhin sollten sie auf Prozesssignale reagieren und sich beenden, sobald vom Betriebssystem angezeigt

(15)

Wir bilden Zukunft.

10 – Dev/prod arity

 Bei vielen Anwendungen gibt es große Unterschiede zwischen Entwicklung und Produktion, vor allem in den Bereichen

– Zeit; Entwickler arbeiten an Code, der erst Tage, Wochen oder gar Monate braucht, bis er in die Produktion geht

– Personal; Entwickler entwickeln, Operators deployen – Tools; lokale Entwicklung nutzt andere Technologien

als die Produktivumgebung

(16)

Wir bilden Zukunft.

10 – Dev/prod arity

 Bei einer 12 Factor App werden diese Unterschiede minimiert oder eliminiert

 Dadurch wird das Verhalten der Anwendung vorhersagbar

 Auch Backing Services sollten in allen Phasen des Lebenszyklus die gleichen sein

(17)

Wir bilden Zukunft.

11 – Logs

 Logs ermöglichen es, das Verhalten sichtbar zu machen und zu verstehen

 In viele Umgebungen werden Logs in Dateien geschrieben

– Dies ist aber nur ein Ausgabeformat

– Eigentlich handelt es sich bei Logs um einen Stream von zusammengefassten, zeitlich sortierten Events – Meisten liegen diese in einem Textformat vor, mit

einem Eintrag pro Zeile

(18)

Wir bilden Zukunft.

11 – Logs

 Für eine 12 Factor App gilt diesbezüglich: sie kümmert sich nicht um das Bereitstellen,

Verwalten oder Speichern von Logs

– 12 Factor Apps schreiben ihre Logs auf Standard Out (stdout)

– In der Entwicklung können diese Ausgaben dann in der lokalen Konsole gesehen werden

– In Deployment-Umgebungen werden wie abgefangen und in ein zentrales Logging-System übertragen

(Grafana, Netdata, …)

(19)

Wir bilden Zukunft.

12 – Admin processes

 Neben den Prozessen, die die Anwendung ausmachen, müssen auf auch administrative Tätigkeiten durchgeführt werden

– Schwer zu automatisierende Setup-Aufgaben – Audits im laufenden Betrieb

– REPL-Arbeiten

 Diese Aufgaben werden in sogenannten One Off-Prozessen ausgeführt

– Dabei wird die gleiche Umgebung und die gleiche Konfiguration wie für die ausgeführte Instanz genutzt

(20)

Wir bilden Zukunft.

Zusammenfassung

 Die Prinzipien der 12 Factor App ermöglichen es, Anwendungen so zu entwickeln, dass sie umgebungsunabhängig deployed und einfach skaliert werden können

 Während dieses Prinzip aus dem PaaS-Bereich kommt, ist es generell ein guter Wegweiser für Cloud-Anwendungen

 Verbindung mit Automatisierung und

Containerisierung werden viele Schwierigkeiten klassischer Softwareentwicklung umgangen

Referenzen

ÄHNLICHE DOKUMENTE

Das SDJ hatte 2016 einen CS von 0,83, was fast dem Wert des Journal of the American Dental Association, also des US­Pendants zum SDJ, entspricht. Zudem kann man auf Scopus seinen

Methods: The 48 study participants were given face-to-face instructions for goFOOD Lite and were asked to record 2 pictures (1 recording) before and 2 pictures (1 recording) after

Inherited deficiency of the third component of complement associated with recurrent pyogenic infections, circulating immune complexes, and vasculitis in a Dutch family. Mixed

 Large number of observed (manifest) variables should be explained by a few un-observed (latent)

The binding sites con tain nonpolar residues form ing hydrophobic pockets that bind to hydrophobic peptide stretches of 6 to 10 residues in substrate proteins.. The binding sites have

(12) Komponenten: Hier siehst du alle Elemente, die dein aktueller Bildschirm enthält und kannst Elemente umbenennen oder löschen.. (13) Eigenschaften: In diesem Bereich kannst

Wenn Sie die Bearbeitung abgeschlossen haben, tippen Sie auf den Kreis mit den drei Punkten (vorletztes Symbol von rechts oben) und wählen aus dem aufgeklappten Menü..

Vitamin C trägt zu einer Verminderung von Müdigkeit und Erschöpfung, zum Schutz der Zellen vor oxidativer Belastung und zu einer normalen Funktion des Immunsystems bei..