XII. Admin-Prozesse

Admin/Management-Aufgaben als einmalige Vorgänge behandeln

Die Prozess-Formation ist das Bündel von Prozessen zur Erledigung der üblichen Aufgaben einer App (wie die Abarbeitung von Web-Requests) während sie läuft. Daneben möchten Entwickler oft einmalige Administrativ- oder Wartungsaufgaben an der App erledigen, wie zum Beispiel:

Einmalige Administrationsprozesse sollten in einer Umgebung laufen, die identisch ist zu der Umgebung der üblichen langlaufenden Prozesse. Sie laufen gegen einen Release und benutzen dieselbe Codebase und Konfiguration wie jeder Prozess, der gegen einen Release läuft. Administrationscode wird mit dem App-Code ausgeliefert um Synchronisationsprobleme zu vermeiden.

Dieselben Techniken zur Isolation von Abhängigkeiten sollten für alle Prozessarten verwendet werden. Wenn zum Beispiel ein Ruby-Web-Prozess das Kommando bundle exec thin start verwendet, dann sollte eine Datenbankmigration bundle exec rake db:migrate verwenden. Wenn ein Python-Programm Virtualenv nutzt, sollte es sein mitgeliefertes bin/python sowohl zum Start des Tornado Webservers als auch für alle manage.py Admin-Prozesse verwenden.

Die Zwölf Faktoren bevorzugen Sprachen, die eine REPL Shell direkt mitbringen. Das erleichtert das Starten von einmal auszuführenden Skripten. In einem lokalen Deploy rufen Entwickler einmal auszuführende Admin-Prozesse direkt über ein Shell-Kommando im Checkout-Verzeichnis der App auf. In einem Produktions-Deploy können Entwickler ssh oder andere Kommando-Fernsteuerungs-Mechanismen benutzen, die die Ausführungsumgebung dieses Deploys für das Starten eines solchen Prozesses bereitstellt.