23. November 2022

Die Twelve-Factor App Teil 2: Erstellen, Freigeben, Ausführen, Prozesse, Anschlussbindung, Gleichzeitigkeit

AuthorAna Novokmet
Kategorien

Automatisierte Konfiguration, optimale Komptabilität mit dem Betriebsystem, bedarfsgerechte Cloudnutzung und flexible Skalierbarkeit sind wichtige Kriterien bei der Web-App Entwicklung. Die Twelve-Factor App Methode berücksichtig diese Faktoren, um die Entwicklung objektiv und effizient umzusetzen. Doch was genau ist die „The Twelve-Factor App” Methode? Dies haben wir in einem Libelle IT Glossar Beitrag erklärt.

Im ersten Teil unserer Blogreihe zur Twelve-Factor App Methode: „Die Twelve-Factor App Teil 1: Codebase, Dependencies, Config Backing Services“ haben wir die ersten vier Faktoren genauer beleuchtet. Im zweiten Teil schauen wir uns die nächsten vier Faktoren Build, Release & Run, Prozesse, Bindung an Ports und Nebenläufigkeitan.

Zusammengefasst lauten ihre Grundsätze wie folgt:

  • V. Build, release, run: Streng getrennte Build- und Run-Phasen
  • VI. Prozesse: Ausführen der Anwendung als ein oder mehrere zustandslose Prozesse
  • VIII. Bindung an Ports: Dienste über Port-Bindung exportieren
  • IX. Nebenläufigkeit: Skalierung über das Prozessmodell

Faktor 5: Build, release, run

Der fünfte der 12-Faktor-App-Aspekte umfasst drei kritische Schritte: Build, Release und Run, obwohl einige zusätzlich einen Design-Schritt als erste Stufe des Prozesses vorsehen. In dieser zusätzlichen Entwurfsphase sollten die Abhängigkeiten, ihr Paketierungsmechanismus und die Art und Weise, wie sie mit der Anwendung verbunden werden, definiert werden.

Das Ergebnis der Build-Phase ist ein ausführbares Artefakt, das aus dem Code-Repository erstellt wird. Der Ansatz „ein Build, mehrere Deployments" erfordert, dass es versioniert ist und überall ordnungsgemäß funktioniert. Der Build wird in der folgenden Release-Phase mit der Konfiguration kombiniert, die dann an die Cloud-Umgebung geliefert wird. Da der ursprüngliche Build mit einer bestimmten Konfiguration kombiniert wird, muss jede Version einzigartig sein. Wenn ein Problem auftritt, ist es außerdem einfach, zu einer früheren Version zurückzukehren.

In der Ausführungsphase schließlich stellen die Cloud-Anbieter in der Regel eine Laufzeitumgebung zur Verfügung, die für die Aufrechterhaltung des Betriebs der Anwendung verantwortlich ist, während sie ihre Leistung bewertet und ihre Protokolle sammelt.

Das Hauptziel besteht darin, alle Phasen zu isolieren, die Bereitstellungsgeschwindigkeit zu erhöhen und die Anwendungstests zu automatisieren, was alles mit Hilfe von Cloud-Diensten erreicht werden kann. (Quelle)

Abbildung 1 (Referenz)

Faktor 6: Prozesse

Gemäß dem 12-Faktoren-Modell sollte eine Anwendung als einzelner zustandsloser Prozess oder in Ausnahmefällen als mehrere zustandslose Prozesse, die sich nichts teilen, betrieben werden. Die Share-Nothing-Architektur (SNA) stellt eine verteilte Rechnerarchitektur dar, die aus zahlreichen isolierten Knoten besteht. Diese Knoten teilen sich nicht denselben Speicher, wodurch mögliche Konflikte zwischen ihnen reduziert werden (z. B. Probleme beim Versuch, bestimmte Daten gleichzeitig zu aktualisieren).

Da Cloud-Prozesse kommen und gehen, kann alles, was in ihnen gemeinsam genutzt wird, auch wieder verschwinden, was zu einer Kaskade von Katastrophen führen kann. Bei der Bearbeitung einer Anfrage kann die Anwendung einen temporären Zustand erzeugen und verwenden, aber diese Daten müssen dann verschwunden sein, wenn der Verbraucher eine Antwort erhält. Um es klar zu sagen: Ein Zustand kann existieren, aber er kann nicht von der Anwendung verwaltet werden, und er muss von externen Sicherungsdiensten bereitgestellt werden, wenn er dauerhaft sein soll.

Es könnte von Vorteil sein, einige Lösungen von Drittanbietern als Backing-Service für den Sitzungsstatus der Anwendung oder zum Zwischenspeichern von Daten zu verwenden. Dies geschieht, um zu vermeiden, dass Prozesse Daten austauschen, die eng miteinander verbunden sind. (Quelle)

Faktor 7: Bindung an Ports

Eine Cloud-native Anwendung gilt als völlig eigenständig und muss nicht in einen externen Anwendungsserver oder Container eingefügt werden. Dieser Faktor der Port-Bindung besagt, dass ein Dienst oder eine Anwendung durch eine Portnummer und nicht durch einen Domänennamen im Netz spezifiziert wird. Da er auch verschiedene Netzkomponenten unterhält, übernimmt der Cloud-Anbieter die Portzuweisung für die Anwendung.

Obwohl ein Cloud-Anbieter einen Web-Container anbieten könnte, ist es recht unwahrscheinlich, dass er es zulässt, dass zahlreiche Anwendungen im selben Container gehostet werden. Dies macht eine 1:1-Zuordnung zwischen der Anwendung und dem Anwendungsserver zu jeder Zeit erforderlich. Schließlich wird eine Anwendung, die eine externe Portbindung unterstützt, unglaublich stark und kann leicht als Backing-Service für eine andere Anwendung verwendet werden. (Quelle)

Faktor 8: Nebenläufigkeit

Indem jeder Arbeitstyp einem Prozesstyp zugewiesen wird, kann eine Anwendung so entwickelt werden, dass sie eine Vielzahl von Arbeitslasten unter Verwendung des Zwölf-Faktoren-Modells bewältigen kann. Durch die Einbeziehung der Gleichzeitigkeit können verschiedene Segmente einer Anwendung bei Bedarf skaliert werden, um die Anforderungen zu erfüllen.

Die vertikale Skalierung, bei der zusätzlicher Arbeitsspeicher, CPUs oder andere Ressourcen eingesetzt werden, wird nicht mehr als zeitgemäß angesehen. Die Hauptidee besteht darin, mehrere Prozesse zu erzeugen und die Last der Anwendung auf diese zu verteilen. Mit dieser Technik kann die Anwendung horizontal skaliert werden, d. h. eine Anwendung wird durch das Hinzufügen zusätzlicher Instanzen von Maschinen vergrößert, anstatt die Ressourcen zu erhöhen und die gesamte Anwendung zu skalieren. (Quelle)

Abbildung 2 (Referenz)

Sie arbeiten in der IT oder interessieren sich für Themen rund um die IT? Dann besuchen Sie gerne unseren Blog für weitere Themen und folgen Sie uns auf Facebook und LinkedIn.


Empfohlenene Artikel
22. Dezember 2022 Libelle IT-Glossar Teil 22: Was ist DevOps?
30. November 2022 Die 12-Faktor-App Teil 3: (Einweggebrauch, Dev-Prod-Vergleichbarkeit, Logs, Admin-Prozesse)

Alle Blogartikel