12. Adminisztrációs folyamatok
Futtasson adminisztrációs/menedzsment feladatokat egyszeri folyamatként¶
A folyamat kialakítása azoknak a folyamatoknak az összessége, amelyeket az alkalmazás rendszeres üzleti feladatainak ellátására használnak (például webkérések kezelése) futás közben. Különösen a fejlesztők gyakran szeretnének egyszeri adminisztratív vagy karbantartási feladatokat elvégezni az alkalmazásban, például:
- Adatbázis migrációk futtatása (pl.
manage.py migrate
Django-ban,rake db:migrate
Rails-ben). - Konzol futtatása (amelyet REPL shell-ként is ismernek), hogy tetszőleges kódot futtassanak vagy ellenőrizzék az alkalmazás modelleit az élő adatbázissal. A legtöbb programozási nyelv biztosít REPL-t a parancssori interpreter futtatásával argumentumok nélkül (pl.
python
vagyperl
) vagy bizonyos esetekben külön parancs használatával (pl. irb Ruby-hoz, rails console Rails-hez). - Az alkalmazás tárolójába bevésett egyszeri futtatandó parancsok futtatása (pl. php scripts/fix_bad_records.php).
Az egyszeri adminisztratív folyamatokat ugyanabban a környezetben kell futtatni, mint az alkalmazás rendszeres hosszú ideig futó folyamatai. Az adott kiadás ellen futnak, ugyanazt a kódbázist és konfigurációt használva, mint bármely más folyamat a kiadás ellen futtatott folyamatok közül. Az adminisztratív kód együtt kell szállítani az alkalmazáskóddal a szinkronizációs problémák elkerülése érdekében.
Ugyanazokat a függőségizolációs technikákat kell alkalmazni minden folyamat típusra. Például, ha a Ruby webfolyamat a bundle exec thin start
parancsot használja, akkor az adatbázis migrációhoz a bundle exec rake db:migrate
parancsot kell használni. Hasonlóképpen, egy Python programnak, amely Virtualenv-t használ, a Tornado webszerver futtatásához és a manage.py
adminisztratív folyamatokhoz a vendored bin/python-t
kell használnia.
A Tizenkét tényező erősen preferálja azokat a programozási nyelveket, amelyek beépített REPL shell-t biztosítanak, és könnyen lehet egyszeri futtatandó scripteket futtatni. Helyi telepítés esetén a fejlesztők közvetlen parancssori parancsot hívnak meg az alkalmazás ellenőrzött könyvtárában található egyszeri adminisztratív folyamatok futtatásához. Termelési telepítés esetén a fejlesztők az ssh-t vagy más távoli parancskiváltási mechanizmust használhatják, amit a telepítési környezet biztosít, hogy ilyen folyamatot futtassanak.