Elosztott szoftverrendszerek kutatása
Szerkesztő:Csébfalvi Balázs
Szerkesztő elérhetősége:cseb@iit.bme.hu

Téma galéria megtekintése

Elosztott szoftverrendszerek
(Grid, SOA, Cloud) modellezése


A kutatás célja

 

A mai elosztott szoftverrendszerek kialakításánál fontos szerepet töltenek be a Grid, SOA és a Cloud technológiák, azonban fizikai megvalósításuk rendkívül sok hardvererőforrást és időt igényel. A kutatás célja elosztott szoftverrendszerek fejlesztésének és tesztelésének elősegítése klaszter alapú szuperszámítógépen végrehajtott szimulációk segítségével, hogy a felmerülő költségeket és időt minimalizálni tudjuk.

A nagy számítási teljesítmények olyan, korábban nem alkalmazott algoritmusok felhasználását, tökéletesítését is lehetővé teszik, melyek elképzelhetetlenek lennének hatalmas számítási kapacitás felhasználása nélkül. Ilyen például annak vizsgálata, hogy a gömböcből mely testek származtathatóak a természetben is előforduló kopási folyamatokkal. A számítási és feldolgozási teljesítmények növelése szempontjából a Grid technológia által biztosított párhuzamos feldolgozás egyre nagyobb jelentőséget kap. A sokmagos feldolgozó egységek elterjedésével, és a különböző gyorsító kártyák megjelenésével új algoritmusok kifejlesztésére van szükség.

A Service Oriented Architecture (SOA) technológia lehetővé teszi, hogy különböző platformokon, operációs rendszereken és programnyelveken megvalósított alkalmazások webszolgáltatásokon keresztül kommunikálhassanak egymással. A technológiának nagy jelentősége van heterogén banki környezetben, ahol az alkalmazások egymással történő integrációjának segítségével jelentős költségmegtakarítás érhető el. Ugyancsak fontos terület az elektronikus közigazgatás, ahol az egyes szakrendszerek nagyfokú függetlensége miatt hardveres és szoftveres különbségek alakultak ki, amelyek jelentősen megnehezítik a közigazgatási célként megfogalmazott egykapus elektronikus ügyintézés megvalósítását. Egy szuperszámítógépen kialakított SOA rendszer szimulációjával mind banki rendszerek, mind az elektronikus közigazgatás modellezhető lenne anélkül, hogy a tényleges rendszert költséges módon meg kellene építeni.

A Cloud computing (Számítási felhő) rendszerek képezik a jövő számítástechnikai rendszereinek alapját, mivel az erőforrásokat (memória, CPU, virtuális gépek, stb.) dinamikusan, a terhelés függvényében képesek allokálni. Ennek köszönhetően a rengeteg energiát felemésztő hatalmas szerverparkok fogyasztása jelentős mértékben javítható, hiszen mindig csak a szükséges mennyiségű fizikai hardver van bekapcsolt állapotban. Jelenleg számos Cloud megoldás létezik, azonban ezek a technológia fiatalsága miatt rendkívül sok kutatási kihívást indukálnak. Ezek közé tartozik a sokféle Cloud megoldás egységesítése, közös kezelése, illetve az erőforrások kiosztását optimalizáló algoritmusok kidolgozása a különböző igényeknek és célfüggvényeknek megfelelően.

Bármelyik technológiát (Grid, SOA, Cloud computing) is vesszük alapul, rengeteg közös kutatási feladat adódik. Mindegyik elosztott rendszerarchitektúrát tételez fel, amely architektúra fizikai megvalósítása rendívül költséges. Ennek köszönhetően sokkal hatékonyabb az architektúra szuperszámítógépen történő szimulációja, ahol megvizsgálható a rendszer működése különböző terhelések és ütemezési algoritmusok mellett, tesztelhető a heterogén implementációk együttműködése. Ezen túlmenően kialakítható egy egységes metamodell, amely segítségével az elosztott szoftverrendszerek platformfüggetlen módon leírhatók és a platformfüggő implementációk automatikusan előállíthatók. További kihívásokat jelent az elosztott alkalmazások funkcionális és nem-funkcionális tesztelése, amelyet szintén megkönnyíthet egy ilyen egységes metamodell megléte.

 

Tartalmi leírás és technikai megközelítés

 

A Grid technológia megnyitotta a lehetőséget a nagy számítási teljesítményt kihasználó algoritmusok előtt. Ezen algoritmusok optimalizációja akkor valósítható meg legjobban, ha az algoritmusokat működés közben is ki lehet próbálni, mivel így mérhetővé válnak a szűk keresztmetszetek, azonosíthatóvá válnak a beavatkozási pontok. Ennek megfelelően a kutatás során már meglévő párhuzamosított algoritmusok további optimalizálására is sor kerülhet, továbbá olyan új algoritmusokat lehet kialakítani, amelyeket azonnal optimalizálni is lehet. További optimalizálási lehetőséget rejt magában az, hogy a szuperszámítógép CPU és GPGPU számítási egységgel is rendelkezik, amelyek egymástól eltérő számítási modelleken alapulnak és erejük kiaknázásához újfajta gondolkodásra, újfajta ötletekre van szükség, hiszen a korábbi algoritmusok nem vették figyelembe ezt a hibrid számítási kapacitási lehetőséget. A kutatások során tehát már meglévő algoritmusok átalakítására fog sor kerülni, illetve új algoritmusok és módszerek kidolgozása is meg fog történni. Jelenleg is számos gyakorlati alkalmazási terület szerepel a kutatások között, mint például az épületek statikai vizsgálata vagy például a gömböcből természetes módon kopással származtatható testek. Ezek kiváló lehetőséget biztosítanak algoritmusok optimalizálására és új algoritmusok létrehozására. Már meglévő grides alkalmazások vizsgálatának elvégzése során ki fog derülni, hogyan migrálhatók azok egy ilyen komplex szuperszámítógépes rendszerre, és a tapasztalatok alapján olyan módszertanokat és ajánlások megfogalmazására is sor kerül, amelyek segítségével más alkalmazások könnyen átalakíthatóvá válnak egy ilyen környezetre, illetve új alkalmazások írásánál lesz egy jól meghatározott szempontrendszer, amely betartásával hibrid számítási kapacitások kihasználásával még hatékonyabb megoldások készíthetők.

A SOA technológia mára elég éretté vált ahhoz, hogy akár vállalati, akár banki, akár közigazgatási környezetben alkalmazhatóvá váljon. Egy szuperszámítógépen felépített elosztott SOA szoftverrendszer modelljén számos szimuláció és vizsgálat elvégezhető, amelyre valós fizikai körülmények között nem lenne lehetőség. A kutatás során azt vizsgáljuk meg, hogy miként lehet egy szuperszámítógépen egy SOA rendszert felépíteni, amelyen azután további kutatási feladatok megoldására kerülhet sor. Ehhez először egy olyan általános platformfüggetlen SOA metamodellt kell kialakítani, amelyben leírt SOA rendszerek implementációi automatikusan előállíthatók szuperszámítógépre is. Ez azt jelenti, hogy különböző operációs rendszereket, keretrendszereket is támogatni kell, amelyeket a szuperszámítógép segítségével futtatni lehet. Ez nyitást jelent a Cloud megoldások felé is, így a két technológia szorosan összekapcsolódik egymással. Miután a SOA rendszermodell implementációja telepíthetővé válik a szuperszámítógépre, elkezdődhet a funkcionális és nem-funkcionális aspektusok vizsgálata. Ebbe beletartozik az, hogy hogyan lehet elosztott szolgáltatásokból álló szoftverrendszereket funkcionálisan tesztelni, hogyan lehet a teszteseteket automatikusan generálni, hogyan lehet ezeket összesíteni és felügyelni. További vizsgálat tárgyát képezi az, hogy a biztonsági aspektusokat hogyan lehet betartani, illetve a webszolgáltatások által jelentett teljesítményigény többletet hogyan lehet mérni és becsülni a különböző paramétertípusok és webszolgáltatás-szabványok engedélyezettségének függvényében. Az eredmények alapján meghatározhatók olyan tervezési módszerek és ajánlások, amelyeket elosztott SOA rendszerek kialakításakor és fejlesztésekor célszerű követni.

A Cloud technológiák a virtualizáció révén lehetővé teszik, hogy alkalmazásainkat különböző operációs rendszereket futtató virtuális gépeken futtassuk. A kutatás tárgyát elsősorban a privát Cloud rendszerek képezik, mivel ezek számítanak nagyobb prioritásúnak a vállalatok esetén, hiszen így a kényes adatok a vállalat kezében maradnak. Azonban egy Cloud üzemeltetése számos kihívást jelent. Ahogy a SOA rendszereknek is számos implementációja létezik, privát Cloud kialakítására is számos megoldás létezik. Célszerű ezeket a megoldásokat egységesíteni, és egy egységes keretrendszert kialakítani, amelyben platformfüggetlen módon lehet leírni a kívánt Cloud rendszer architektúráját. Egy ilyen keretrendszer kialakításához számos Cloud implementációt meg kell vizsgálni, hogy a közös, platformfüggetlen elemeket azonosítani lehessen. Ez képezi tehát a kutatás első fázisát. Miután egy egységes keretrendszer kialakult, a Cloud rendszer platformfüggetlen modellezésével implementációspecifikus szoftverkonfigurációk állíthatók elő, amelyek azután egy szuperszámítógépre telepítve tesztelhetővé válnak. További előnye ennek a megoldásnak, hogy a különböző Cloud implementációk mind funkcionális, mind nem-funkcionális szempontból összehasonlíthatóvá válnak működés közben is. Ezáltal egy egységes Cloud értékelési szempontrendszer alakítható ki, amely segítségével előre meghatározott igényeknek megfelelően lehet majd kiválasztani az optimális Cloud implementációs rendszert.

A Cloud technológia fiatalságából adódik, hogy az erőforrások kiosztására írt ütemezési algoritmusok nagyon kezdetlegesek, ezáltal nagyon pazarlóak is lehetnek. A kutatások során meg kell vizsgálni a már létező algoritmusokat, és értékelni kell őket abból a szempontból, hogy mennyire alkalmasak éles környezetben történő alkalmazásra. Ezen kívül olyan új algoritmusokat is ki kell dolgozni, amelyek az erőforrások ütemezését hatékonyabban megoldják. Például feleslegesen ne kelljen bekapcsolni egy olyan szervergépet, amely sok áramot fogyaszt, ha a már bekapcsolt állapotban lévő gépeken van szabad erőforrás. Ennek a feladatnak a megoldásához nagyon pontos mérésekre van szükség, amelyek a rendszer aktuális állapotát és kihasználtságát pontosan jelzik az ütemező felé, illetve statisztikákra van szükség az alkalmazások tipikus viselkedéséről különböző terhelési viszonyok mellett. Ezek a kérdések egy szuperszámítógép segítségével sokkal gyorsabban és költséghatékonyabban megoldhatók, mint számos egymással hálózatba kötött egyszerű PC felhasználásával. A szuperszámítógépen tehát könnyebb kipróbálni és optimalizálni az ütemezési algoritmusokat.

Akár a Grid, akár a SOA, akár a Cloud technológiát is tekintjük, mindegyik esetén szükség van egy egységes architekturális leírásra, amellyel az elosztott szoftverrendszer modellezhető. Ugyan ez a három technológia egymástól különböző alapelvekre épül, mégis mindegyik elosztott szoftverrendszernek tekinthető. A kutatás során tehát a már kialakított Grid, SOA és Cloud rendszereket leíró metamodelleket célszerű megvizsgálni, hogy milyen módon egységesíthetőek egy nagy globális elosztott metamodellbe. Egy ilyen általános rendszerleíró metamodell nagyon erős alapokat adhat a fejlesztésekhez, és időtálló megoldás lehet abban az esetben, ha újabb elosztott technológiák jelennek meg. Meg kell vizsgálni azt is, hogy a Grid, SOA és Cloud technológiák hogyan egészítik ki egymást, hogyan lehet őket szimbiózisba hozni. Erre is kiváló megoldást nyújt a szuperszámítógép.

 

A várt eredmények összefoglalása

 

A kutatás eredményeként elosztott szoftverrendszerek leírására és szimulációjára alkalmas egységes környezet kerül kialakításra, emellett sokmagos feldolgozóegységekre és gyorsító kártyákra optimalizált algoritmusok jönnek létre.

Amennyiben egy rendszert a kialakított egységes környezetben leírunk, a rendszer modelljéből automatikusan előállítható a rendszer szuperszámítógépen történő szimulálására alkalmas szoftverkonfiguráció. A konfigurációt betöltve a szuperszámítógépbe megvizsgálhatók az egyes elosztott technológiák viselkedései különböző környezetekben, különböző terhelési körülmények között, különböző ütemezési algoritmusok mellett.

A szuperszámítógépre feltelepített SOA tesztkörnyezetben interoperabilitási, valamint funkcionális és nem-funkcionális tesztek eredményei is meg fognak jelenni. Ezek alapján eldönthető, hogy mely SOA eszközök kompatibilisek egymással, illetve olyan módszerek jönnek létre, amelyek segítségével komplex elosztott szoftverrendszerek funkcionális tesztelése megvalósítható. A SOA rendszerekben megvalósított szolgáltatások jóval nagyobb teljesítményigényűek, mint a hagyományos távoli eljáráshíváson alapuló technológiák, így a szuperszámítógépen futó szimulációban végrehajtott teljesítménymérések alapján kialakítható egy teljesítménymodell, amely segítségével tetszőleges SOA rendszerben becsülhetővé válik a szolgáltatások válaszideje illetve a rendszer áteresztőképessége.

A szuperszámítógépen megvalósított Cloud rendszerekben kipróbálhatók a kutatás során kifejlesztett ütemezési algoritmusok, amelyek segítségével a memória, a processzoridő és egyéb erőforrások kiosztása hatékonyabbá tehető. A mérések eredményeként meghatározható, hogy mely körülmények között milyen ütemezési algoritmusokat célszerű Cloud rendszerek esetén bevetni. Az egységes leíró környezet eredményeként platformfüggetlen módon modellezhető egy Cloud rendszer felépítése, a modell alapján pedig a különböző Cloud implementációkra automatikusan előállítható konfigurációk készíthetők. Ennek segítségével könnyebbé válik a Cloud-ra írt alkalmazások migrációja más Cloud platformokra, illetve a különböző platformok egységesen menedzselhetővé válnak. További előnyös eredménye ennek a megoldásnak, hogy a Cloud rendszerek tesztelése is automatizálhatóvá válik.

A szuperszámítógép speciális Grid csomópontként is tud szolgálni, amely nemcsak a hagyományos CPU számítási kapacitást, hanem GPGPU számítási kapacitást is magában foglal, ezáltal újfajta és hatékonyabb párhuzamos algoritmusok futtatására és kipróbálására biztosít lehetőséget. A kutatás során kialakított algoritmusokat a szuperszámítógépen futtatva megvizsgálható az algoritmusok hatékonysága illetve felderíthetők az algoritmusokban található szűk keresztmetszetek, ezáltal még tovább javítható az algoritmusok működése. A kutatás eredményeként tehát új elveken alapuló algoritmusok jönnek létre, amelyek egy hibrid CPU-GPGPU grides környezetben hatékonyan alkalmazhatók.

 

Az elérni kívánt eredmények jelentősége és alkalmazásai

 

A kutatás eredményeinek számos gyakorlati hasznosítása lehetséges, mivel a Grid, a SOA és a Cloud computing is a modern elosztott szoftverrendszerek alapjait képezik.

A hatékony CPU-GPGPU algoritmusok kiválóan alkalmazhatók a számításigényes területeken, mint például a gyógyszerkutatás vagy az éghajlatkutatás. A CPU általánosabb számítások végrehajtását teszi lehetővé, a GPGPU pedig speciálisabb feladatok megoldására alkalmas, azonban a GPGPU fizikailag nagyságrendekkel gyorsabb, mint a CPU hardver. A két megoldás előnyeit ötvözve hatékonyabb algoritmusok hozhatók létre, amelyek elősegíthetik a gyógyszer- és éghajlatkutatásokat, illetve egyéb grides környezetben alkalmazott nagy számításigényű feladatokat, mint például a CERN részecskegyorsító eredményeit kiértékelő számítások.

A SOA rendszerek szimulációjával egy bank vagy vállalat informatikai rendszerének szolgáltatásai modellezhetővé válnak, ezáltal felderíthetők a szolgáltatások közötti függőségek, megvizsgálhatók a teljesítményviszonyok, és komplex funkcionális illetve nem-funkcionális tesztesetek alakíthatók ki. Ennek köszönhetően a bank vagy vállalat elosztott rendszerének hatékonysága javítható, és olyan változtatások is kipróbálhatóvá válnak, amelyek a valós fizikai változtatások esetén jelentős költséget igényelnének.

A SOA rendszerek szimulációja hasznosítható közigazgatási szinten is. Modellezhetővé válnak az egyes szakrendszerek által kibocsátott szolgáltatások, illetve az elektronikus közigazgatási infrastruktúra. Ezen a szimulált infrastruktúrán kipróbálhatók az elektronizált közigazgatási folyamatok, megvizsgálhatók azok gyenge pontjai és szűk keresztmetszetei, így javítható azok hatékonysága. Ezen kívül a különböző jogi és biztonsági előírások teljesülése is ellenőrizhetővé válik, valamint a rendszerben lévő redundanciák is felderíthetővé válnak.

A vállalati elosztott informatikai rendszereket folyamatosan Cloud technológiára migrálják, mivel Cloud alapokon rugalmasan kezelhető az erőforrások kiosztása, ezáltal költségek és energia is jelentősen megtakarítható. A vállalatok az adataik biztonsága érdekében általában privát Cloud-okat alakítanak ki, azonban itt fontos szempont az, hogy ne kössék le magukat egyetlen Cloud platform mellett. Ebben segíthet a kutatások eredményeként előálló egységes Cloud leíró metamodell, amely platformfüggetlenséget biztosít a Cloud implementációk között. Ugyancsak a kutatások eredményeként állnak elő azok az algoritmusok, amelyek hatékony erőforrás-kiosztást tesznek lehetővé Cloud környezetben, ezek az algoritmusok pedig beépíthetők a nyílt forráskódú Cloud rendszerekbe is.

 

A tehetséggondozás formája a kutatások során

 

A kutatási feladatokba B.Sc. és M.Sc. hallgatók bevonását tervezzük. Az egyes pontokhoz kapcsolódóan önálló laboratórium, szakdolgozat, illetve diplomatervezés téma felvételére lesz lehetőség. A tehetséges hallgatókat bíztatjuk, hogy a témában elmélyülve Tudományos Diákköri Konferencián is részt vegyenek.

 

Projekt előrehaladási jelentés

 

A cloud technológiák a virtualizáció révén lehetővé teszik, hogy alkalmazásainkat különböző operációs rendszereket futtató virtuális gépeken futtassuk. A kutatás tárgyát elsősorban a privát Cloud rendszerek képezik, mivel ezek számítanak nagyobb prioritásúnak a vállalatok esetén, hiszen így a kényes adatok a vállalat kezében maradnak.

Privát cloud kialakítására is számos megoldás létezik. Célszerű ezeket a megoldásokat egységesíteni, és egy egységes metamodellt és keretrendszert kialakítani, melyben platformfüggetlen módon lehet leírni a cloud rendszerek architektúráját. Ez képezte a kutatás első fázisát. A metamodell kialakításához számos cloud implementációt meg kellett vizsgálni, hogy a közös, platformfüggetlen elemeket azonosítani tudjuk. Ehhez helyben összeállítottunk Eucalyptus, OpenStack és CloudStack privát cloud infrastruktúrákat, melyeken a vizsgálatokat végeztük. A kutatás eredményeképp előálló metamodellt egy konferenciacikk formájában publikáltuk Egységes metamodell kialakítása privát IaaS cloud rendszerekhez címmel. A rendszerek összeállításában és a vizsgálatok elvégzésében két BSc tanulmányait végző hallgató is részt vett.

Miután az egységes keretrendszer kialakult, a cloud rendszer platformfüggetlen modellezésével implementáció specifikus szoftverkonfigurációk állíthatók elő, illetve a különböző Cloud implementációk mind funkcionális, mind nem-funkcionális szempontból összehasonlíthatóvá válnak működés közben is.

A cloud technológia fiatalságából adódik, hogy az erőforrások kiosztására írt ütemezési algoritmusok nagyon kezdetlegesek, ezáltal nagyon pazarlóak is lehetnek. A kutatásunk során a telepített privát infrastruktúrákon megvizsgáltuk a már létező algoritmusokat, és értékeltük őket abból a szempontból, hogy mennyire alkalmasak éles környezetben történő alkalmazásra. Ebben a témában is született egy konferenciacikk Költséghatékonyság cloud alapú rendszerekben - Erőforrásallokáció privát IaaS cloudok esetén címmel.

A meglévő implementációk vizsgálata után olyan új algoritmusokat dolgoztunk ki, amelyek az erőforrások ütemezését a meglévő rendszereknél hatékonyabban oldják meg. Például feleslegesen nem kapcsolnak be egy nagy teljesítményű és áramigényű  szerver számítógépet, ha a már bekapcsolt állapotban lévő gépeken van még szabad erőforrás. Ebben a munkában egy végzős BSc hallgató is részt vett, aki a témával kapcsolatban szakdolgozatot is készített, melyet sikeresen megvédett.

 

Elosztott komponensrendszerek

A munkaszakasz során elosztott komponensrendszerek modellezésére is sor került. Olyan metamodell kialakítása történt meg, amely alkalmas webszolgáltatások és grides rendszerek modellezésére is, valamint a metamodell tovább bővíthető cloud rendszerek támogatásával is. Az elosztott komponensrendszerek modellezésének előnye, hogy a platformfüggetlen leírásból olyan együttműködő komponensek állíthatók elő automatizáltan, amelyek különböző technológiákkal és különböző szoftvergyártók eszközeivel vannak megvalósítva. A konkrét technológiára való leképzést kódgenerátorok végzik, amelyek az általános leírást képzik le speciális projektfájlokra, forráskódokra és konfigurációs fájlokra. Az generálás során elkészült termékek az egyes szoftvergyártók eszközeiben közvetlenül megnyithatók, fordíthatók, futtathatók és telepíthetők a gyártók megfelelő alkalmazásszervereire. Ebben a munkaszakaszban az Oracle JDeveloper fejlesztőkörnyezet és az Oracle WebLogic alkalmazásszerver, az IBM Rational Application Developer fejlesztőkörnyezet és a WebSphere Application Server alkalmazásszerver, valamint az Eclipse fejlesztőkörnyezet és a JBoss Application Server alkalmazásszerver támogatása készült el.

Az elosztott rendszerek további sajátossága, hogy a komponensek közötti adatcsere meglehetősen nagy overhead-et ró a kommunikációra. Ennek köszönhetően a távoli hívások sokkal lassabbak, mint a helyi hívások. A különböző middleware feladatok (megbízható üzenetküldés, titkosítás és digitális aláírás, tranzakciókezelés, stb.) még inkább hozzájárulnak ehhez a jelenséghez. A munkaszakaszban egy olyan teljesítménymodellt alakítottunk ki, amely a kommunikációs overhead-et modellezni képes, illetve referenciamérések alapján egy komponens interfészének ismeretében még a válaszidő overhead becslésére is alkalmas.

A munka szakmai tartalma kapcsolódik a "Új tehetséggondozó programok és kutatások a Műegyetem tudományos műhelyeiben" c. projekt szakmai célkitűzéseinek megvalósításához. A projekt megvalósítását a TÁMOP-4.2.2.B-10/1--2010-0009 program támogatja.
Infoblokk
ÚSZT