Kihagyás

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 vagy perl) 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.