Kehitin viime viikonloppuna ensimmäisen oikean Google App Engine -sovellukseni nimeltä Jaiku Echo. Se on melko yksinkertainen Facebook-sovellus, joka kaiuttaa käyttäjän jaikut Facebookiin status-päivityksiksi. Sovelluksella on tällä hetkellä kymmenkunta käyttäjää Facebookissa.

Google App Enginen suurin ongelma tämäntyyppisissä sovelluksissa on "crontabin" puuttuminen. Sovelluksilla ei ole mitään keinoa suorittaa toimintoja ajastetusti. Siksi joudun kutsumaan omalta palvelimeltani kerran minuutissa tiettyä URLia, jonka yhteydessä AppEngine-sovellus suorittaa tarvittavan taustakäsittelyn.

Tämäkin ratkaisu on ongelmallinen, sillä Google asettaa yhden HTTP-pyynnön aikarajaksi noin 30 sekuntia. Siinä ajassa ehtii käsitellä vain tietyn määrän asioita. Lisäksi kyseinen URL alkaa hälyttää Dashboardissa ikävästi punaisella (ks. kuva).

Jaiku Echo on koodattu siten, että se päivittää niin monta RSS-feediä kuin ehtii 30 sekunnissa, ja jatkaa sitten seuraavalla kerralla siitä mihin jäi. Tämä rajoittaa skaalautuuden aika tehokkaasti joihinkin satoihin käyttäjiin. Isommilla käyttäjämäärillä status-päivitykset alkavat tulla vasta kymmenien minuuttien viiveellä. Googlen pitäisikin ehdottomasti lisätä App Engineen joku keino suorittaa paljon URL Fetch -operaatioita skaalautuvasti vaikka siten, että niiden tulokset tallennettaisiin asynkronisesti data storeen sitä mukaa, kun ne valmistuvat.

Toinen kätevä apuväline olisi SUP-tuen lisääminen Jaikuun. Sen avulla ei tarvitsisi pollailla kaikkien käyttäjien feedejä jatkuvasti, vaan saisi luettelon muuttuneista feedeistä ja voisi pollata vain ne. Tällä tavalla Jaiku Echokin skaalautuisi luultavasti tuhansiin tai kymmeniin tuhansiin käyttäjiin.

Published 17.2.2009