XII. Zarządzanie aplikacją

Uruchamiaj zadania administracyjne jako jednorazowe procesy

Formacja jest zestawem procesów używanych przez aplikację podczas jej działania (np. obsługi zapytań z sieci). Do często wykonywanych zadań administracyjnych należą:

Pojedyncze zadania powinny być uruchamiane w identycznym środowisku jak długoterminowe procesy aplikacji. Działają w ramach tego samego wdrożenia, używając tego samego kodu i konfiguracji jak każdy inny działający proces. Kod zadania administracyjnego musi zostać dołączony do kodu aplikacji by uniknąć problemów z synchronizacją.

Te same techniki izolacji zależności powinny być używane dla wszystkich typów procesów. Dla przykładu, jeśli proces sieciowy Ruby używa polecenia bundle exec thin start, wtedy do migracji bazy danych powinno się użyć bundle exec rake db:migrate. Podobnie program napisany w Pythonie używający Virtualenv powinien używać dołączonego bin/python by uruchomić zarówno webserver Tornado lub manage.py do procesów zarządzania.

Aplikacja 12factor zaleca używanie języków programowania, które udostępniają powłokę REPL oraz takich w których można łatwo uruchomić pojedynczy skrypt. W środowisku lokalnym developerzy uruchamiają zadania zarządzające aplikacją poprzez bezpośrednie wywołanie polecenia w konsoli w katalogu roboczym aplikacji. We wdrożeniu produkcyjnym, developer może użyć ssh lub innego mechanizmu służącego do zdalnego wykonywania poleceń, by uruchomić ten sam proces.