Wczoraj wieczorem czasu ( w Polsce to był już chyba ranek ) google pokazało światu swoja najnowszą zabawkę dla programistów Google App Engine. Krótko mówiąc pozwala to na hostowanie aplikacji napisanych w pythonie na serwerach google, korzystanie z BigTable, biblioteki do obsługi użytkowników gmail. Ponieważ aplikacje siedzą w piaskownicy nie mogą zapisywać żadnych informacji na dysk (jedyny sposób to Datastore ) oraz kontaktować się z siecią ( tutaj google dało FetchURL, dzięki któremu możemy ściągać informacje po HTTP (port 80 i 443).
Udało mi się nawet zarejestrować i mam konto ( Google do testowania udostępniło 10000 kont ), ale potestuje je sobie wieczorem. Ponadto można sobie ściągnąć SDK i pobudować aplikację offline ;)
Teraz kilka moich spostrzeżeń. Całe SDK to w gruncie rzeczy biorąc zlepek kilku frameworków pythonowych ( właściwie to wycinki jednego ;)) . Mamy więc aplikację WSGI odpowiedzialną za mapowanie url-i ( mapujemy url-e za pomocą wyrażeń regularnych) do RequestHandlerów, które to obsługują poszczególne widoki. Jako język templatów google poleca templaty Django ( przez "większość" uważane za zbyt ubogie ), do obsługi formularzy biblioteki newforms z Django. Budowa modeli dla DataStore też jest bardzo podobna do tego w jaki sposób robi to Django. Ale jeżeli komuś się to nie podoba to może użyć własnego frameworka opartego na WSGI ( w FAQ-u opisane jest jak użyć Django 0.96 ). Na serwerach google jest zainstalowany Python 2.5 i oprócz bibiolteki standardowej jest Django 0.96, PyYaml oraz WebOb.
Dzięki temu że cały storage jest oparty na BigTable (które się podobno bardzo dobrze skaluje) nie wydaje mi się aby konieczne były mechanizmy cachowania w stylu memcache, itp. Sesje mogą być trzymane w BigTable, wyrenderowane strony - w BigTable, itp, itd. DataStore oferuje prosty język zapytań GQL podobny w strukturze do SQL-a przy czym z kilkoma ograniczeniami ( nie można robić join-ów), oraz mechanizm dostępu analogiczny do słownika (put, get)
Czasami zdarza mi się flame-ować na grupach na temat czy django dobrze się skaluje ( niektórzy twierdzą że się nie skaluje i nie da sie z nim nic większego zrobić ) . Jak widać po kilku modyfikacjach ( które nie zmieniają wizji całej ramówki) w samej architekturze całego serwisu, jest to możliwe.
Tak więc drodzy państwo Start Your Engines :)