Defintion „12-Factor Framework“ Was ist die Twelve-Factor App?

Autor / Redakteur: Mandarina / Stephan Augsten |

Wenn Software für einen Nutzer individuell hergestellt und über die Cloud geliefert wird, bezeichnet man dies als „Software as a Service“. Die Twelve-Factor App ist eine Methode, mit der diese Softwarelösungen praxisorientiert und passgenau gestaltet werden können.

Anbieter zum Thema

Laut dem vierten Prinzip unterscheidet eine 12-Factor App nicht zwischen lokalen und Drittanbieter-Diensten. Sie alle sind nur lose gekoppelte Ressourcen, die sich bei Bedarf austauschen lassen.
Laut dem vierten Prinzip unterscheidet eine 12-Factor App nicht zwischen lokalen und Drittanbieter-Diensten. Sie alle sind nur lose gekoppelte Ressourcen, die sich bei Bedarf austauschen lassen.
(Bild: 12factor.net)

Anforderungen an SaaS

Software as a Service (SaaS) hat in der Regel ganz bestimmte Anforderungen zu erfüllen. Hierzu zählen unter anderem:

  • automatisierte Konfiguration
  • optimale Kompatibilität mit dem Betriebssystem, das genutzt werden soll
  • bedarfsgerechte Cloudnutzung
  • flexible Skalierbarkeit

Eine Software beziehungsweise Web App wird heute besonders nach diesen Kriterien projektiert und von den Anwendern auch bewertet. Die Twelve-Factor App ist ein Instrument – sprich Framework und Methode –, um diese objektiv und effizient umzusetzen.

Umfassend einsetzbares Instrument

Die Methode der zwölf Faktoren wurde grundsätzlich für den flexiblen Einsatz konzipiert. Sie ist für die Entwicklung einer Vielfalt von Apps geeignet. So wurde zum Beispiel darauf geachtet, dass sie unabhängig von der gewählten Programmiersprache zum Einsatz kommen kann. Auch die Elemente, die in die App integriert werden wie zum Beispiel Datenbanken, können bei einer Twelve-Factor App individuell eingebaut und genutzt werden.

Erfahrungen aus vielen App-Entwicklungen

Die Entwickler des 12-Factor-Frameworks sind Experten, die an vielen App-Entwicklungen mitgewirkt haben. Die Apps wurden für die Cloud Application Platform Heroku konzipiert, die auf einer leistungsstarken Infrastruktur basiert und mit unterschiedlichen Programmiersprachen genutzt werden kann. Die Heroku Cloud bietet den Entwicklern und Anwendern einen wichtigen Vorteil: Als Open-Source-Projekt ist eine effiziente Entwicklungsarbeit durch Experten von jedem Ort auf der Welt aus möglich.

Die Apps für die Heroku-Plattform wurde in sechsstelliger Anzahl konzipiert und auch in ihren Anwendungen sowie bezogen auf die Skalierbarkeit kritisch beurteilt. So konnte mit jeder neu entwickelten SaaS-App der Erfahrungsschatz der Entwickler weiter ausgebaut werden, wovon die Kunden von Apps, die als Twelve-Factor-App konzipiert wurden, nachhaltig profitieren.

Zielsetzung war es, eine App so zu entwickeln, dass sie bedarfsgerecht konzipiert und auch unkompliziert anpassbar ist sowie verschiedene beteiligte Entwickler bei der App-Konzeption gut miteinander arbeiten können. Auch das Kosten-Nutzen-Verhältnis der jeweiligen App sollte dabei natürlich optimal gestaltet werden können.

Exaktheit ist das A und O

Eine Twelve-Factor App ist vor allem dadurch gekennzeichnet, dass sie eine klare Struktur hat, dass sie konstruktive Entwicklungsarbeit ermöglicht und dass sie lösungsorientierte Ansätze für unterschiedliche Einsatzfelder zu bieten hat. Auch die Benutzerfreundlichkeit ist in diesem Zusammenhang ein wichtiges Kriterium einer erfolgreichen Arbeit im Rahmen der modernen App-Entwicklung. Zudem sorgt ein gemeinsames Vokabular für eine gemeinsamen App-Entwicklung, die auch später noch für weitere Entwicklungsarbeit genutzt werden kann.

Die 12 Faktoren im kompakten Überblick

Die 12 Faktoren sind eine Checkliste, anhand derer das komplexe Anforderungsprofil der Twelve-Factor-App genau überprüft werden kann. Präsentiert wurde die Methode zuerst von Adam Wiggings, einem Experten für professionelles und passgenaues Webdesign.

  • I. Codebasis: Das Fundament bildet ein Code, der zentral verwaltet und für verschiedene Versionen genutzt werden kann.
  • II. Abhängigkeiten: Abhängige Elemente können ein System beeinträchtigen, weswegen sie benannt und möglichst isoliert werden.
  • III. Konfiguration: Konfigurationsmöglichkeiten sowie unterstützende Dienste werden grundsätzlich in der Umgebung beziehungsweise als Ressourcenanhang geführt.
  • IV. Unterstützende Dienste: Jeder Dienst, der von einer App für ihre normale Verwendung benötigt wird, ist als angehängte Ressource zu betrachten. Die App unterscheidet nicht zwischen lokalen und Drittanbieter-Diensten.
  • V. Build, Release, Run: Die Phase des Erstellens und der Nutzung der App werden strikt separiert.
  • VI. Prozesse: Eine App sollte in Form eines einzelnen oder mehrerer zustandsloser Prozesse laufen.
  • VII. Port-Anbindung:Werden Dienste genutzt, werden diese über Ports professionell angebunden und exportiert.
  • VIII. Nebenläufigkeit: Nebenläufigkeit wird durch das Skalieren individueller Prozesse ermöglicht.
  • IX. Verfügbarkeit: Für Benutzerfreundlichkeit und hohen Komfort sorgt es gleichermaßen, dass die Software as a Service schnell gestartet und individuell gestoppt werden kann.
  • X. Dev/Prod-Parität:Bei der Twelve-Factor-App wird angestrebt, dass Development (Entwicklung), Überprüfung und Produktion möglichst ähnlich umgesetzt werden. Dies dient nicht nur einer soliden Kostenreduzierung rund um die Entwicklungsarbeit der Experten. Auch eine bessere Vergleichbarkeit und optimal nutzbare Erfahrungswerte sowie das konsequente Entwickeln agiler Lösungen sind die Folge.
  • XI. Logs: In den einzelnen Anwendungen sollten Logs als Ereignisstrom behandelt werden.
  • XII. Admin-Prozesse: Administrative Prozesse sollten grundsätzlich als einmalige Aktion behandelt werden.

All diese Maßnahme, die die Twelve-Factor-App und die ihr zugrundeliegende Methode charakterisieren, sind auch wichtig für die Nachvollziehbarkeit der Entwicklungsarbeit und das Adaptieren beziehungsweise Weiterentwickeln für neuen Lösungen mit optimalem Praxisbezug.

Kritik an der Twelve-Factor App

Wie oben bereits erwähnt, wurde die 12-Faktor-Methode im Rahmen der Entwicklungsarbeit für die Heroku-Plattform (eine PaaS / Platform as a Service) konzipiert. Die Kritik hebt genau darauf ab, dass die Apps nur im Rahmen dieses Projekts entwickelt wurden und das Konzept daher zu einseitig und nicht plattformübergreifend nutzbar sei.

(ID:46305673)