NetAcademia

A legjobbakat tanítjuk!

Hogy kerülhetjük el a "szoftverpusztulást"? 12Factor app: 6. Folyamatok

2016. július 15. 08:00 - Plesz Gábor

Előző fejezet: 5. Előállítás, telepítés, futtatás
Következő fejezet: 7. Hálózati port hozzárendelés

Az alkalmazást egy vagy több állapot nélküli folyamatként futtassuk.

Az alkalmazás a futtatókörnyezetben egy vagy több folyamatként fut.

A legegyszerűbb esetben maga a kód egy különálló script, a futtatókörnyezet pedig a feljesztő helyi laptopja rajta a nyelvi környezettel és a folyamatot parancssorból indítjuk (például így: python my_script.py). A skála másik végén egy kifinomult rendszer éles telepítése több folyamattípust használhat, létrehozva nulla vagy több folyamatot.

A tizenkét-tényezős alkalmazásfejlesztés folyamatai állapotmentesek és nem osztanak meg semmit. Minden nem átmeneti adatnak állapotnyilvántartó háttérszolgáltatásban a helye, tipikusan valamilyen adatbázisban.

A memóriaterületet vagy az állományrendszert rövid egy-tranzakciós átmeneti gyorsítótárként (cache) használhatjuk. Például, letöltünk egy nagy állományt, feldolgozzuk és az eredményt tároljuk az adatbázisban. A tizenkét tényezős alkalmazás sosem tételezi fel, hogy akár gyorsítás céljából valami a memóriában vagy lemezre mentve elérhető a jövöben egy másik kérés kiszolgálásakor vagy egy jövőbeni feladat végrehajtásakor  - mivel minden folyamattípusból több létezhet, és nagy a valószínűsége, hogy a jövőbeni kérést már egy másik folyamat fogja kiszolgálni. Még akkor is, ha csak egy folyamatunk van, az újraindítás (ezt kiválthatja új kód telepítés, konfiguráció változás, vagy éppen a futtatókörnyezet áthelyezheti a folyamatot egy másik fizikai elérésre) általában mindent helyi állapotot (mint például a memória és az állományrendszer) eltöröl.

Az Asset packagerek (mint a Jammit vagy a django-compressor) az állományrendszert használják a lefordított elemek gyorsítótárazásához. A tizenkét-tényezős alkalmazásfejlesztés azt javasolja,
hogy ezeket a fordításokat az előállítási szakasz (BUILD) során tegyük meg, hasonlóan a Rails asset pipeline-hoz.

Egyes webes rendszerek "post-it munkamenetek"-re támaszkodnak, vagyis gyorsítótárazzák a felhasználó munkamenetének az adatait az alkalmazás folyamatához rendelt memóriában, és elvárják, hogy az azonos látogató jövőbeni kéréseit ugyanehhez a folyamathoz irányítsuk. Ez ellenkezik a tizenkét-tényezős alkalmazásfejlesztés elveivel, ilyet sosem szabad használni vagy sosem szabad erre a működésre támaszkodni. A munkamenet állapotának adataihoz a jó jelölt egy olyan adatbázis, ami lejárati időt is kínál az adatokhoz, ilyen például a Memcached vagy a Redis.

The Twelve-Factor App: VI. Processes

2 komment

A bejegyzés trackback címe:

http://netacademia.blog.hu/api/trackback/id/tr798890118

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.