NetAcademia

A legjobbakat tanítjuk!

Hogy kerülhetjük el a "szoftverpusztulást"? 12Factor app: 8. Párhuzamos folyamatok

2018. január 11. 10:00 - Plesz Gábor

Előző fejezet: 7. Hálózati port hozzárendelés

Következő fejezet: 9. Eldobhatóság

Szolgáltatásunkat a nagyobb terheléshez -az állapot nélküli- folyamat modellünknek köszönhetően méretezzük át menet közben.

Minden számítógépes program futtatása egy vagy több folyamatként (process) jeleníthető meg. A webes alkalmazások sokféle folyamat végrehajtási formát ölthetnek. Például a PHP folyamatok az Apache által a háttérben indított alfolyamatokként (child process) futnak, a kérések mennyiségéhez igazodva. A Java folyamatok épp az ellenkezőleg, a JVM egy méretes főfolyamatot (uberprocess) szolgáltat, ami induláskor a rendszer (CPU és memória) erőforrásainak egy jelentős részét lefoglalja, és a párhuzamosságot belső szálakkal kezeli. Mindkét esetben a futó folyamat(ok) csak minimális szinten láthatók az alkalmazás fejlesztője szemszögéből.

A skálázást fejezzük ki folyamatokban, a terhelés sokféleségét pedig fejezzük ki folyamattípusokban.

Tizenkét tényezős alkalmazás esetén a folyamatok elsőrendű állapolgárok. A folyamatok a tizenkét tényezős alkalmazásban nagyon erősen másolják a unix világ folyamat modeljét ami szolgáltatás daemon-okat futtat. Ezt a modellt felhasználva a fejlesztő a különböző terhelésekhez különböző típusú folyamatokat rendelve építheti fel az alkalmazását. Például a HTTP kéréseket kiszolgálhatják web folyamatok, a hosszú ideig futó háttérfeladatokat pedig kiszolgálhatják munkavégző (worker) folyamatok.

Ez nem zárja ki az egyes folyamatok saját belső párhuzamos tevékenységét (multiplexing) több szálon a futó viruális gép (VM) belsejében, vagy a Twisted, az EventMachine vagy Node.js vagy hasonló környezetekben található az aszinkron/eseményvezérelt felépítést. De a virtuális gép (VM) alapú rendszer maga csak egyféle nagy lehet (függőleges skálázással a gépet tudjuk alatta megnövelni), így az alkalmazásnak képesnek kell lennie a különböző folyamatokat több gépre leosztva futni, amenniyben párhuzamos (vízszintes) skálázódásra van szükség.

A folyamatmodell kíválósága akkor ragyog fel igazán, ha a megnövekedett terhelésre válaszul az egyszerre kiszolgáló folyamatok számát meg kell növelni (vizszintesen kell skálázni). A tizenkét tényezős alkalmazás semmit sem megosztó, párhuzamosan (vízszintesen) építhető természetének köszönhetően a párhuzamos végrehajtási kapacitás növelése egyszerű és megbízható művelet. A különböző folyamattípusok együttese és ezen belül az egyes folyamattípusokból futó folyamatok számát szokás folyamatkialakításnak hívni.

A tizenkét tényezős alkalmazás sosem démonizál vagy ír PID állományt. Helyette az operációs rendszer folyamatvezérlőjére támaszkodik (mint a systemd, vagy az elosztott folyamatvezérlő felhős környezetben, vagy a Foreman-hoz hasonló eszközök fejlesztési környezetben) a kimeneti adatfolyam vezérléséhez, a bedőlt folyamatokra adott válaszhoz és a felhasználó által kezdeményezett újraindítások és leállások kezeléséhez.

The Twelve-Factor App: VIII. Concurrency

Szólj hozzá!

A bejegyzés trackback címe:

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

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.

Nincsenek hozzászólások.