Google App Engine: mina erfarenheter

Fö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:


gae dashboard

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?

  1. [...] Några svenska exempel är Slurpbox, Todolistr och Onlinr. Clas Rydergren har implementerat Frisims feedCache på Google App Engine och skrivit ett intressant inlägg om sina erfarenheter av det på Frisims utvecklingsblogg. [...]

  2. [...] appspot | user-saved public links | iLinkShare 2 votesTwrts – Small, Readable Stock Chart URL’s>> saved by iLoVePiNk1414 8 days ago6 votesPyAMF 0.3.1 Released>> saved by tastypopsicle 16 days ago4 votesGoogle App Engine很可能被屏蔽>> saved by betoh 22 days ago5 votesAnother Meeting with Probono.net>> saved by konno110 26 days ago1 votesGoogle App Engine: mina erfarenheter>> saved by ZShadow 26 days ago1 votesGoogle App Engine – 5G支持Python免费虚拟主机>> saved by rshigeta 29 days ago2 votesHow the Olympics brings us all together>> saved by ibytimi 29 days ago1 votesTous Les Jours 2008.07.25>> saved by d92766 31 days ago4 votesExperiments and thoughts on Google App Engine>> saved by OutilsWeb 54 days ago3 votesYahoo Boss Google App Engine Mashup>> saved by liliamurray 54 days ago3 votesCan making social media a spectator sport move it to the …>> saved by Hybernaut 54 days ago3 votesUpdate: Please star Issue 404 to bring OpenID to Google App Engine>> saved by claudioforghieri 60 days ago4 votesAnnouncing ResolveRef on Google App Engine>> saved by itmarayricardo 62 days ago5 votesUsing Komodo Edit as an IDE for Google App Engine>> saved by rolandgladden 66 days ago1 votes>> saved by Rakeweru 78 days ago3 votesIntroducing uBoggle!>> saved by librarising79 96 days ago4 votesCustom Star Wars Tantive Attack Diorama by appspot>> saved by jpoprocks 97 days ago5 votesGoogle App Engine üzerinden YouTube’a nasıl erişilir?>> saved by gregp01 100 days ago2 votesZope3 on App Engine – Redux>> saved by naturana 102 days ago2 votesRietveld Code Review Tool>> saved by mccloud 104 days ago1 votesGoogle AppEngine SDK update>> saved by keith0718 109 days ago5 votesVeeee.. İşte Yuil (:>> saved by borisbez 113 days ago3 votesappspot 果然终于还是被封>> saved by timbeil 140 days ago2 votesGoogle AppEngine for web hosting>> saved by WorldPictures 143 days ago1 votesMedia AppSpot Keyword Social Follows Spy Live Searching for One of …>> saved by JoshJay24824 148 days ago4 votesReading FriendFeed Room Directory>> Oh find yourself a room …>> saved by Yurk 150 days ago5 votesGoogle AppEngine for web hosting>> saved by Rogue45 151 days ago4 votes#080808 | Blog: Junyu: How the mash-up was created 俊煜:当我们搞 …>> saved by wolfninja914 152 days ago1 votesGoogle Apps Engine被GFW了?>> saved by shigome 153 days ago2 votesAppSpot Spy Follows Social Media for Live Keyword Searching>> saved by KrazzyChan 158 days ago6 votesHugo’s Blog, Mengelmoes, and a Free Stay at Caledon Spa>> saved by yanusen 162 days ago2 votes080808>> saved by JohnnyHuh 165 days ago2 voteshttp://sampullara.appspot.com/yuil/ is better than CUIL. Good job …>> saved by gixxerchic 181 days ago2 votes最新消息,Google AppEngine很可能被屏蔽>> saved by shippoluver 183 days ago2 votesКак предотвратить клонирование сайта?>> saved by vsiva 192 days ago4 votesEmulating a long-running process (and a scheduler) in Google App …>> saved by mayinkay 197 days ago2 votesAppengine as a service backend for a mobile application>> saved by wintersej 199 days ago3 votesGoogle AppEngine Now Lets You Have 10 Apps>> saved by misagi4179 214 days ago3 votesURL-info.appspot.com – Get More Info About Websites>> saved by highschoolmusicgal 219 days ago3 votesGoogle Treasure Hunt>> saved by malukuhooligan 225 days ago4 votesProject releases and Xero in Nielsen’s Top 10 App list>> saved by janeblue 252 days ago2 votesWeekly news on Brands and Internet Monitoring>> saved by raijsr 252 days ago1 votesGoogle App Engine – 5G支持Python免费虚拟主机>> saved by breathingjuice 253 days ago3 votesDaily Links>> saved by jkleske 253 days ago2 votesBOSS,the engine of the search engines>> saved by punisherm4 260 days ago [...]