Google App Engine: mina erfarenheter
Posted in Osorterad on juli 21st, 2008 by Clas – 2 CommentsFör mitt senaste lilla projekt har jag använt Google App Engine (GAE) för första gången. GAE är Googles svar på ”cloud computing” och innebär att din webbtjänst körs på datorer hos Google, och att Google som tillhandahåller databasutrymme i sin ”Datastore”. Koden som körs på GAE måste vara skriven i Python, vilket är ett språk som jag inte provat tidigare.
För att skapa sin GAE-webbtjänst så använder man enklast GAE-SDK vilket är en version av GAE som du laddar hem och kör på din egen dator. SDK:n innehåller en webbserver, en Python-tolk och en lokal version av Googles Datastore. SDK:n gör att du kan skapa och testa din webbtjänst utan att ladda upp något hos GAE. När du utvecklat klart, eller i alla fall har något som du tror fungerar, så är det bara att ladda upp till GAE med hjälp av ett SDK-script. När koden är uppladdad så är din webbtjänst online, och kan kommas åt den på en appspot.com-adress. När jag provat så har exakt samma fel uppstått ”online” på GAE som i min SDK, och tvärt om, vilket innebär att jag har kunnat ”debugga” i min SDK utan problem. Det går också bra att uppdatera sin uppladdade kod hos GAE genom att enkelt göra en ”update” på den kod som du tidigare laddat upp. Ändringar som du gjort i en ”update” syns direkt online på GAE vilket är väldigt trevligt.
Utöver att programspråket Python blev en ny bekantskap, så kräver även databasen – den Google kallar för Datastore – lite nytt ”tänk”. Datastore, till skillnad från en vanligt MySQL-databas, är en distribuerad databas. För att den ska fungera effektivt (vilket Google kräver att den gör) så har frågespråket som kan användas begränsats. Det är bara en liten delmängd av normala SQL-frågor som kan utföras. Är du van att ställa avancerade SQL-frågor så kräver användandet av Datastore att du ofta tänker en extra gång innan du kan göra samma sak i GAE. Användandet av Datastore har givit mig en liten inblick i hur ett distribuerat system fungerar, vilket var intressant för mig som bara kört mot en dator i taget tidigare.
Överlag så är jag väldigt imponerad av GAE som utvecklings- och test-miljö. GAE fungerar otroligt bra för små snabba kodhack. Det finns möjlighet att ha flera versioner av sin kod (men bara en version av databasen) samtidigt. Du kan snabbt ”switch:a” mellan vilken version din besökare ser, och du kan se felmeddelanden som genereras för varje version. Detta gör det enkelt att även testa sin webbtjänst online, i realtid, om man skulle behöva det.
När en eller flera versioner av din webbtjänst är uppladdad kan du se versioner, loggar på felmeddelanden, statistik och resursutnyttjande i din GAE-portal. I GAE-portalen kan du också titta på och modifiera data i din Datastore. GAE-portalen ser ut såhär:

Har du ett eget domännamn som du kan kontrollera DNS-inlägget för så är det också enkelt att via GAE-portalen, och via Google Apps(!) fixa till så att domänen eller en subdomän kan användas till din webbtjänst. Adressen blir då ett alternativt sätt att nå webbtjänsten, istället för på appspot.com-adressen. Fördelen med att ha en egen domän pekande mot GAE är att du inte blir beroende av att någon bra och passande appspot-adress är ledig. Det spelar helt enkelt ingen roll vad din webbtjänst kallas internt hos GAE.
GAE har, precis som Googles andra tjänster, en blogg, App Engine-bloggen. Där hittar du en del intressant material, bland annat länkar till ett antal föreläsningar om GAE. Google har också en sajt för Open Source-projekt som finns på GAE. Listan med projekt hittar du under Google Groups.
Jag är väl inte så jätteförtjust i Python som webbscript-språk, men för mitt projekt så har det fungerat okej. Jag har, på grund av min tjänsts funktion, valt att inte använda något av de ramverk som Google erbjuder för att separera HTML och logik (bl.a. Django). Det som irriterade mig mest under utvecklingens gång var problem med teckenkodning och svenska tecken i URL:er; men det mest gick att lösa genom envist surfande på diverse Python-hjälp-sidor.
Tyvärr har jag dåligt med information om svenska webbtjänster som idag kör på GAE. Det jag sett som finns skrivet om GAE på svenska bloggar sträcker sig som längst till några uppladdade demo-projekt. Jag känner till ett undantag, förutom min feedCache, och det är Joakims ToDoListr. Känner du till fler svenska projekt som utvecklas just nu eller som finns uppladdade på GAE?



