2011. július 12., kedd

Mi is az a Google App Engine (GAE)?

A GAE lehetővé teszi, hogy a webfejlesztéssel kapcsolatos járulékos teendőket a minimálisra csökkentsük (pl: szerver és adatbázis adminisztráció) a Google infrastruktúrájának felhasználásával. A fejlesztői környezetből (pl: Eclipse) feltöltjük az alkalmazást és már használhatjuk is. Nincs szükség a szerverek karbantartására, mégis könnyen skálázható a növekvő forgalom függvényében.

Az AppEngine jelenleg már több programozási nyelvet támogat (Python, Java, Go), de ez a blog csak a Java lehetőségeivel foglalkozik. A szolgáltatás alap funkciói ingyenesek, néhány ezres felhasználószámig (kb 40000 regisztrált, ebből napi néhány 100 aktív) nem érjük el a napi limiteket. A szolgáltatás 2008 óta működik (a Java 2009 óta), de még most is vannak hiányosságai (auto backup, túlzott CPU fogyasztás), amellyek nélkül azért még lehet használni, de apróbb trükkök szükségesek lehetnek.

A rengeteg extra funkció mellett nagyon sok korlátozással találkozunk a szerviz használata során. Ezek nagy része ésszerű keretek között mozog (pl: 30 másodperces max válaszidő), de vannak olyanok amik hiányozni fognak és előbb utóbb fizetnünk kell érte (pl: Always-On JVM). Bár a lehetőségek széles köre csábító, gyakorlatilag a Google-hoz kötjük az alkalmazásunkat, ha ezt a környezetet választjuk. A költöztetés egyszerűen megoldható lenne a megírt kód miatt, de az alap szolgáltatások hiányát pótolnunk kellene (felhasználókezelés, memcache, email, képkezelés). A Google egyéb szolgáltatásait (plusone, adsense, analytics, webmester eszközök) elérnénk a költözés után is, de az integráció és a kódból kezelés hiányozna. Nem beszélve arról, hogy az AppEngine valószínűleg a GoogleBot-tal is barátságban van, legalábbis az AppEngine webalkalmazásunkban történő változásokat szinte azonnal lereagálja a bot.

Ezek ellenére mégis miért érdemes használni?

Java-s AppEngine szolgáltatások:

- JDO/JPA adatbáziskezelés: a relációs adatbázisoktóül eltérő módon objektum alapú adatkezelés történik
- Blobstore: feltöltött nagyobb méretű fájlok kezelése
- Capabilities API: a különféle API-k ideiglenes leállását kezelhetjük vele
- Channel API: állandó kapcsolat az alkalmazás és a google szerverek között (pl: GWT)
- Images API: képek kezelése, módosítása
- Mail API: levél küldés és fogadás
- Memcache API: adatok gyorsabb elérése (pl: adatbázis helyett memóriából, ha már volt lekérdezés és nem változott)
- Task Queue API: háttér vagy sorba állítható processekhez
- URL Fetch API: külső URL-ek feldolgozása (pl: RSS feed)
- Users API: A Google felhasználóinak és OpenId felhasználók kezelése, a regisztráció és az authentikáció egyszerűsítése
- XMPP API: az azonnali üzenetküldéshez (pl: chat)

A közeljövőben várható szolgáltatások(roadmap):
http://code.google.com/intl/hu-HU/appengine/docs/roadmap.html

Az AppEngine-ről bővebben:
http://en.wikipedia.org/wiki/Google_App_Engine
http://code.google.com/intl/hu-HU/appengine/docs/whatisgoogleappengine.html

Heti rendelkezésre állás:
http://code.google.com/status/appengine



A blog írása során a továbbiakban a fenti szolgáltatások használatával és az ezek kapcsán felmerülő problémákkal foglalkozom. A posztok nem adnak majd copy-paste megoldásokat inkább csak ajánló/kedvcsináló jelleggel mutatom be az adott részt a szervizkönyv implementációján keresztül. Az aktuálisan körüljárt témára igyekszem bőséges forrásmegjelölést adni, így könnyedén felépíthető egy alap GAE alkalmazás, ha a Java alapjaival tisztában vagyunk.




Nincsenek megjegyzések:

Megjegyzés küldése