Train4Business Azure–Az előadó szemével (2)

A szakmai nap első adatvezérelt alkalmazását Farkas Bálint írja meg mindenki szeme láttára, de tesz még mást is: PHP-t és Javát futtat az Azure-ban. Szóval, kedves Bálint…

Miért fontosak a szerepkörök? Nem mindegy, mi fut a virtuális gépen?

Ha Windowsra programozunk, akkor sem mindegy, hogy konzolos vagy grafikus alkalmazás, esetleg Windows szolgáltatás fejlesztésébe kezdünk. Mindháromnak más a célja. Hasonlóan az Azure szerepkörök is más-más célra alkalmasak. A Web Role-ok – nevükből is adódóan – ASP.NET webalkalmazások futtatására valók; az Azure a 80-as portot nyitja ki számukra, a Visual Studio Web Application-ként kezeli őket stb. A Worker Role-okat pedig nem webes vagy nem Microsoft alkalmazások elindítására találták ki. Segítségükkel bármilyen kódot futtathatunk vagy bármilyen EXE fájlt (pl. java.exe) elindíthatunk, céljuk a háttérben futó munkavégzés, külvilággal való kapcsolattartásuk módját teljes egészében mi határozzuk meg.

Miért jobb a várakozási sor, mint egy egyszerű webszolgáltatás-hívás?

A várakozási sor a webszolgáltatás-hívással ellentétben garantálja a kiszállítást. Ha a meghívott webszolgáltatás másik végén lévő alkalmazás éppen túlterhelt vagy lefagyott, akkor hívásunk „lyukra fut”. Még ennél is rosszabb, ha a távoli alkalmazás megkapja a hívásunkat (így mi azt hisszük, hogy minden rendben van), de annak végrehajtása közben ütközik problémába, így a kérés esetleg sosem kerül kiszolgálásra.

A várakozási sor megoldja ezeket a problémákat: egyrészt nem a saját alkalmazásunk áll mögötte, hanem az Azure platform egy kifejezetten erre a célra kitalált része, így nem fordul elő, hogy hívásunk elvész. Másrészt az sem okoz bajt, ha az üzenetet a sorból kivevő saját alkalmazásunk leáll annak feldolgozása közben. Ugyanis ha egy várakozási sorból valaki kivesz belőle egy elemet, akkor az nem egyből letörlődik, csak bizonyos időre láthatatlanná válik. Ha a végrehajtó alkalmazás problémába ütközik, akkor sosem fogja jelezni a várakozási sor számára a feldolgozás elkészültét; az üzenet bizonyos idő múlva újra láthatóvá válik, és ismét feldolgozza majd valaki. Ha pedig a végrehajtó alkalmazás sikeresen elkészült, akkor egy külön paranccsal ténylegesen kitörölheti az üzenetet a sorból.

Természetesen ez egy speciális alkalmazási terület. A várakozási sor általánosságban nem helyettesíti a webszolgáltatás-hívásokat, mert egy-egy üzenet csak kis mennyiségű adat sorrendhelyes átvitelére alkalmas, másra nem. Így tehát ha megbízható üzenetátvitelre van szükségünk, akkor használjunk várakozási sort (amit nem csak Azure-ban futó, hanem bármilyen más alkalmazásból is elérhetünk); egyéb kommunikációs szükségleteinkre ott a webszolgáltatás.

Ha jól értem, a blobjaim egy URL végén ülnek. Bárki letöltheti őket?

A blobok valóban egy URL-lel férhetők hozzá, de jogosultsági szintekkel természetesen szabályozható a hozzáférés. A blobok úgynevezett tárolókban kapnak helyet; egy tároló lényegében egy virtuális mappa, ebben tárolhatjuk blobjainkat és hozhatunk létre almappákat. Minden blob tárolóra háromféle jogosultsági szint adható meg: a publikus és listázható blob tárolókból bárki letölthet, illetve tartalmukat mappaszerűen ki is listázhatja; a „simán” publikus blob tárolókból szintén bárki letölthet, de csak a pontos URL ismeretében; végül a privát blob tárolókhoz csak az Azure portálról elérhető titkos kulcs ismeretében lehet hozzáférni. Így kényes fájljainkat privát tárolókba feltöltve azok biztonságban tudhatók.

Java az Azure-ban? Nem tart attól a Microsoft, hogy .NET helyett csupa alternatív technológiát használnak majd az ügyfelek/partnerek?

A Microsoft nem csak, hogy nem tart ettől a lehetőségtől, hanem aktívan támogatja is ezt. Ennek bizonyítékai a Javához és a PHP-hoz elérhető Azure SDK-k, melyeket a Microsoft partnercégekkel együttműködve fejlesztett ki és tett ingyenesen hozzáférhetővé. Továbbá elkészült az Azure Companion is, amellyel PHP alkalmazásainkat úgy tehetjük fel a felhőbe, hogy közben egy sor .NET kódot sem látunk, és számos más nyelv Azure-ban való használatáról is elérhetők leírások. Az Azure API-jai nyitottak, a tárolókhoz, menedzsmenthez stb. platformfüggetlen módon hozzá lehet férni.

A Windows Azure egy platform. A Microsoft saját eszközeivel – Visual Studio, .NET nyelvek – természetesen szorosabban integrált, mint más technológiákkal, de a felhő programozása szinte minden fejlesztő számára nyitott lehetőség.