Kihagyás

6. Folyamatok

Az alkalmazás az végrehajtási környezetben egy vagy több folyamatként fut.

A legegyszerűbb esetben a kód egy önálló szkript, a végrehajtási környezet egy fejlesztő helyi laptopja telepített nyelvi futtatókörnyezettel, és a folyamat a parancssorból indul (például python my_script.py). A másik végletben egy összetett alkalmazás gyártási telepítése sok folyamattípust használhat, amelyek nulla vagy több futó folyamattá instanciálódnak.

A tizenkét tényezős folyamatok állapotmentesek és nem osztanak meg semmit. Az összes tartós adatot egy állapotfüggő háttértárolóban kell tárolni, általában adatbázisban.

A folyamat memóriaterülete vagy fájlrendszere rövid ideig, egyetlen tranzakcióban használható gyorsítótárazásra. Például letölthetünk egy nagy fájlt, feldolgozhatjuk és elmenthetjük a művelet eredményét az adatbázisban. A tizenkét tényezős alkalmazás soha nem feltételezi, hogy bármilyen gyorsítótárazott adat (memóriában vagy lemezen) elérhető lesz egy későbbi kérés vagy feladat során - a minden típusú futó folyamatok közül nagy az esély arra, hogy egy későbbi kérést másik folyamat kezel. Még akkor is, ha csak egyetlen folyamat fut, egy újraindítás (amit a kódtelepítés, a konfigurációváltozás vagy a végrehajtási környezet a folyamat másik fizikai helyére mozgatása vált ki) általában törli az összes helyi (pl. memóriát és fájlrendszert) állapotot.

Az asset packager-ek, mint például a django-assetpackager, a fájlrendszert használják gyorsítótárként a fordított erőforrásokhoz. Egy tizenkét tényezős alkalmazás inkább a fordítást a build szakaszban végzi el. Asset packager-ek, mint például a Jammit és a Rails asset pipeline, konfigurálhatók úgy, hogy az erőforrásokat a build szakaszban csomagolják.

Néhány webes rendszer "sticky sessions"-re támaszkodik - azaz a felhasználói munkamenet adatokat a folyamat memóriájában gyorsítótározza, és a jövőbeli kéréseket ugyanattól a látogatótól ugyanahhoz a folyamathoz irányítja. A "sticky sessions" megsértik a tizenkét tényezőt, és soha nem szabad használni vagy támaszkodni rájuk. A munkamenetállapot adatok jó jelöltjei egy olyan adattárolónak, amely időkorlátozást kínál, például a Memcached vagy a Redis.