CaaS és FaaS platformok robusztusságának vizsgálata és teljesítményanalízise

OData támogatás
Konzulens:
Dr. Sonkoly Balázs
Távközlési és Médiainformatikai Tanszék

Napjainkban a három alapvető felhő szolgáltatás (IaaS, PaaS és SaaS) mellett több új modell is megjelent. Ezek közül egyik a konténerizációra épülő CaaS (Container as a Service, magyarul konténer szolgáltatás). Ez a modell a microservice architektúra elterjedésével jelent meg, mivel természetes igény mutatkozott a konténerizált alkalmazások felhőben való fejlesztésére és futtatására. Az egyik legelterjedtebb ilyen rendszer a nyílt forráskódú Kubernetes, melynek egyik legnagyobb előnye az automatikus skálázás.

Később egy új fejlesztési paradigma is elterjedt, ami a konténerizációra épül, viszont annál egy magasabb absztrakciós szintet nyújt. Ez a Function as a Service (függvény szolgáltatás, röviden FaaS). Ebben a modellben az alkalmazások rövid lefutású, eseményvezérelt és állapotmentes függvényekből állnak. A fejlesztők ezáltal csak az üzleti logika (vagyis a függvények) implementálására kell koncentráljanak, a többit elvégzi a FaaS platform. A Kubeless egy ilyen rendszer, mely nyílt forráskódú és Kubernetes alapokra épül.

Dolgozatomban ennek a két rendszernek a teljesítményét hasonlítom össze felhasználói élmény szempontjából. A felhő rendszereknél nagyon fontos, hogy az alkalmazások képesek legyenek alkalmazkodni a változó terheléshez, mivel ez közvetlenül kihat a kiszolgálási időre, vagyis ezáltal a felhasználói élményre. Munkám során ezért is választottam az automatikus skálázás vizsgálatát a Kubernetes és a Kubeless rendszerek összehasonlításához.

Kialakítottam egy mérési környezetet a rendszerek teszteléséhez, melyben telepítettem a két rendszert, valamint Python és Bash nyelven egy olyan paraméterezhető tesztelő programot készítettem, melynek segítségével automatizáltam a mérések elvégzését.

A két rendszer összehasonlítását többfajta terhelési karakterisztikájú méréssel végeztem. Ezek úgy lettek kialakítva, hogy jól jellemezzék egy valós rendszer terhelését különböző helyzetekben. A mérések között van lineárisan és exponenciálisan növekedő terhelés, mellyel a rendszerek alkalmazkodóképességét vizsgálom, valamit egy olyan "dombszerű" is ahol először nő, majd csökken a terhelés. Ez utóbbi a visszaskálázás gyorsaságának mérésére szolgál. A méréseknél különböző, automatikus skálázást befolyásoló, beállításokkal vizsgálom a Kubeless és Kubernetes közti különbségeket, valamit ezen beállítások módosításának hatásait. A mérések kiértékelését egy általam készített Python program segítségével végeztem, mely a mérés közben keletkezett logokból diagramokat generál.

Az eredményekből kiderül, hogy a Kubeless sokkal jobban teljesít a Kuberneteshez képest. Mind a három terhelési karakterisztikánál sokkal kisebb volt az átlagos késleltetési idő. A lineáris és "dombszerű" méréseknél a Kubernetes is kifejezetten jól teljesített, azonban az exponenciális esetben a Kubeless egyértelműen jobb volt. Az eredményekből megállapítottam azt is, hogy az automatikus skálázási beállítások módosítása a legtöbb esetben javított a rendszerek teljesítményén, azonban volt olyan eset is ahol, bizonyos szempontból, rontott rajta.

Letölthető fájlok

A témához tartozó fájlokat csak bejelentkezett felhasználók tölthetik le.