SlideShare a Scribd company logo
1 of 19
Download to read offline
Pogodzić Google App Engine
         z Django
            Rafał Jońca
         http:/jonca.vdl.pl/




          PyConPL 2008
      18-19 październik 2008
Zawartość
   Google App Engine
       Co to takiego? Jak działa?
       Zalety, wady, ograniczenia, rynek
   Django w App Engine
       Jak? Co otrzymamy? Jakie wersje Django?
       Projekty ułatwiające integrację
   Jedna aplikacja, dwa podejścia
       WebApp kontra Django GAE Helper
       Testy w Django GAE Helper
   Wnioski, wskazówki
Google App Engine
   Platforma dla aplikacji internetowych 
    zapewniająca:
       Łatwość konfiguracji i wdrożenia
       Wolność od zadań stricte administracyjnych
       Skalowalność
       Integracja z kontami Google (uwierzytelnianie)
       Obsługa danych statycznych
       Środowisko deweloperskie
       Bezpłatny startowy pakiet liczby odsłon i 
        przechowywanych danych
Architektura
                        Żądanie/odpowiedź


Interfejsy
                                                   System tylko
bezstanowe:
                                                   do odczytu:
zapytania HTTP,                Proces                  biblioteki
obrazy,                       maszyny
wysyłka maili                 wirtualnej
                              Pythona
                                                       aplikacja




Interfejsy
                  memcache                 DataStore
stanowe:
Możliwe zastosowania
       Własna witryna domowa
       Niewielkie witryny lub aplikacje tematyczne
       Proste witryny dla przedsiębiorstw nie działających 
        w obszarze WWW
       Tworzenie aplikacji wewnątrzfirmowych jako część 
        pakietu Google Apps*
                                           *
       Skalowalne aplikacje internetowe

    *
         ­ po okresie testowym
Wady GAE
●   Brak relacyjnej bazy danych (złączeń, grupowania)
●   Komunikacja ze światem zewnętrznym tylko przez 
    dostarczone API
●   Zamknięte środowisko wykonawcze
●   Ograniczenia rozmiarów danych
●   Uzależnienie się od rozwiązań jednego dostawcy
●   Brak długo działających procesów
●   Odmienna architektura trudna do zaakceptowania 
    dla dużych, istniejących projektów
WebApp
   GAE udostępnia bardzo prosty framework WebApp 
    zawierający:
       obsługę żądań opartą o bibliotekę WebOb
       mechanizm opisu modeli wzorowany na Django
       system szablonów z Django 0.96
   Dobry na start lub gdy tworzymy usługi sieciowe, 
    pełna swoboda
   Brak wielu mechanizmów z innych frameworków, 
    wymyślanie koła od nowa
Django w App Engine
   Użycie Django w GAE daje dostęp do:
       elastycznego mechanizmu odwzorowania adresów
       systemu luźno powiązanych aplikacji
       wygodnej obsługi memcache na poziomie widoków i 
                 *
        szablonów
       rozbudowanego systemu obsługi formularzy
       wielojęzyczności na poziomie statycznym
    
        sesji*
       testów funkcjonalnych wraz z obsługą danych 
        testowych*
       wielu aplikacji pomocniczych gotowych do użycia 
Czego ze standardowego
    Django nie dostaniemy?
   automatycznego panelu administracyjnego
   przeglądarki danych (GAE Admin oferuje własną)
   komentarzy
   mechanizmu contenttypes
   innych aplikacji wykorzystujących bazę danych
   brak również dostępu do zewnętrznych aplikacji 
    Django stosujących bazę danych (np. Satchmo)
Django w GAE bez
dodatkowego wspomagania
   W Google App Engine jest Django 0.96
   Wymaga zastosowania nieco bardziej złożonego 
    pliku main.py ­ dostępny na witrynie GAE
   Użycie Django 1.0 wymaga większej liczby 
    dodatkowych kroków:
       Najlepiej umieszczenia okrojonego Django w archiwum 
        ZIP
       Usunięcia z pamięci wczytanego Django 0.96 i 
        dołączenia nowszego przez zmianę ścieżek importu
Można prościej!
   Istnieją projekty wspomagające współpracę Django 
    i GAE, z czego najciekawsze są trzy:
       http://code.google.com/p/django­gae­helpers
            wykorzystamy go w dalszej części prezentacji
            wspierany przez pracowników Google
       http://code.google.com/p/app­engine­patch/
            bardzo podobny do pierwszego
            tworzony niezależnie
       http://code.google.com/p/django­gae2django/
            jeśli tworzyłeś aplikację django w GAE, dzięki temu 
             projektowi możesz jej użyć poza GAE, czyli w standardowym 
             Django z relacyjną bazą danych!
Google App Engine Helper
           for Django
   wykonywanie poleceń GAE za pomocą manage.py
   klasa User z Django dla użytkowników z kontami Google
   obsługa testów i wczytywania danych testowych
   obsługa wysyłania e­maili mechanizmem Django
   przekierowania błędów do modułu logging
   automatycznie usunięcie django wbudowanego w GAE i 
    zastąpienie dostarczonym jako django.zip
   obsługa sesji w BigTable i memcache
   obsługa cache
   gotowe pliki app.yaml i main.py
Instalacja GAE Helpers
   Pobierz kod z http://code.google.com/p/django­gae­
    helpers
   Po rozpakowaniu dołącz django.zip z Django 1.0
       Opis przygotowań dostępny na 
        http://code.google.com/appengine/articles/django10_zipi
        mport.html
   Zmodyfikuj plik app.yaml, podając własną nazwę 
    aplikacji
   Od tego momentu masz dostęp do większości 
    elementów Django 1.0!
Przykładowa aplikacja
              w WebApp
   Pobieramy App Engine SDK:
       http://code.google.com/appengine/downloads.html
   Tworzymy wymagane pliki i foldery
       Demo...
   Testujemy lokalnie
       Demo...
   Przesyłamy na serwery Google
...i w Django GAE Helper
   Wcześniejsza aplikacja napisana w Django
       Demo...
   Tworzenie testów i fixtures
       Demo...
   Aplikacja live
Warto czy nie warto?
   Dla znających Django       Django GAE Helper i 
    znacznie bardziej           App Engine Patch to 
    przyjazne środowisko        jednak spory monkey 
   Pomimo niezgodności         patching!
    modeli danych              Django GAE Helper nie 
    uzyskujemy wiele            jest dopracowany
    gotowych elementów i       Przesyłanie Django 1.0 
    dostęp do wielu             wraz z projektem
    dodatkowych aplikacji
                               Ułatwia migrację do 
   Łatwiejsze wyjście z        GAE tylko częściowo
    GAE
Przyszłość Django w GAE?
   Raczej niezachwiana, choć na bezpośrednią obsługę 
    wersji 1.0 musimy jeszcze poczekać
   Powstanie osobnego projektu GAEDjango?
       Jest Gaengo, ale nierozwijane...
   Modele zgodne z API ORM Django?
       Całkiem możliwe dzięki QuerySet refactor!
       Ale  nie  łudźmy  się  w  kwestii  uruchomienia  każdej 
        aplikacji  Django  bez  modyfikacji  modeli  ­  BigTable  to 
        wiele ograniczeń, potrzeba denormalizacji...
       ... choć liczba zmian będzie znacznie mniejsza
Kilka rad na zakończenie
   Używaj django.zip zamiast zwykłych plików
   Folder locale z django umieść poza archiwum
   ...to samo dotyczy szablonów
   Użyj łatki z issue 94 dla Django GAE Helper
   GAE automatycznie używa gzip  
   Jeśli to możliwe, używaj metod z QS zamiast GQL
   Jeśli możesz, nie używaj sesji, ale signed cookies
       ...ewentualnie sesji w memcache, ale są mniej pewne
   SDK to nie live, korzystaj z wbudowanego stagingu
Dziękuję za uwagę!
     Pytania?

More Related Content

Viewers also liked

The Italian Model Of The Inclusion. Dario Ianes. Edizioni Erickson. Italy
The Italian Model Of The Inclusion. Dario Ianes. Edizioni Erickson. Italy The Italian Model Of The Inclusion. Dario Ianes. Edizioni Erickson. Italy
The Italian Model Of The Inclusion. Dario Ianes. Edizioni Erickson. Italy www.erickson.it
 
Bibliografia soundscpe, sound, landscape
Bibliografia soundscpe, sound, landscapeBibliografia soundscpe, sound, landscape
Bibliografia soundscpe, sound, landscapeagata stanisz
 
WCCI 2008 Tutorial on Computational Intelligence and Games, part 2 of 3
WCCI 2008 Tutorial on Computational Intelligence and Games, part 2 of 3WCCI 2008 Tutorial on Computational Intelligence and Games, part 2 of 3
WCCI 2008 Tutorial on Computational Intelligence and Games, part 2 of 3togelius
 
Leadership.Mena
Leadership.MenaLeadership.Mena
Leadership.Menaagek2005
 
Sample Works
Sample WorksSample Works
Sample Worksxyndz
 
Bobcat by Noah
Bobcat by NoahBobcat by Noah
Bobcat by Noahvebrya
 
Learning Analytics and Linked Data Workshop at LAK12
Learning Analytics and Linked Data Workshop at LAK12Learning Analytics and Linked Data Workshop at LAK12
Learning Analytics and Linked Data Workshop at LAK12Hendrik Drachsler
 
Tech Success: Web/2.0 startup HOWTO
Tech Success: Web/2.0 startup HOWTOTech Success: Web/2.0 startup HOWTO
Tech Success: Web/2.0 startup HOWTOlyncis
 
Reaching net-generation learners with social technologies
Reaching net-generation learners with social technologiesReaching net-generation learners with social technologies
Reaching net-generation learners with social technologiesguestba21f9
 
Dia Chi Toa Nha Tai Thanh Pho Ho Chi Minh
Dia Chi Toa Nha Tai Thanh Pho Ho Chi MinhDia Chi Toa Nha Tai Thanh Pho Ho Chi Minh
Dia Chi Toa Nha Tai Thanh Pho Ho Chi MinhPhuc Nguyen Thanh
 
'The university as a hackerspace'
'The university as a hackerspace''The university as a hackerspace'
'The university as a hackerspace'Joss Winn
 
Greater Pittsburgh Arts Council 2008 Annual Meeting
Greater Pittsburgh Arts Council 2008 Annual MeetingGreater Pittsburgh Arts Council 2008 Annual Meeting
Greater Pittsburgh Arts Council 2008 Annual Meetingtwilhelm
 
Preparing in Isolation?!
Preparing in Isolation?!Preparing in Isolation?!
Preparing in Isolation?!Martin Rehm
 
Using Simulations to Evaluated the Effects of Recommender Systems for Learner...
Using Simulations to Evaluated the Effects of Recommender Systems for Learner...Using Simulations to Evaluated the Effects of Recommender Systems for Learner...
Using Simulations to Evaluated the Effects of Recommender Systems for Learner...Hendrik Drachsler
 
Przyjaźń międzyrodzinna
Przyjaźń międzyrodzinnaPrzyjaźń międzyrodzinna
Przyjaźń międzyrodzinnaagata stanisz
 

Viewers also liked (20)

βρασμός
βρασμόςβρασμός
βρασμός
 
The Italian Model Of The Inclusion. Dario Ianes. Edizioni Erickson. Italy
The Italian Model Of The Inclusion. Dario Ianes. Edizioni Erickson. Italy The Italian Model Of The Inclusion. Dario Ianes. Edizioni Erickson. Italy
The Italian Model Of The Inclusion. Dario Ianes. Edizioni Erickson. Italy
 
Vastu
VastuVastu
Vastu
 
Bibliografia soundscpe, sound, landscape
Bibliografia soundscpe, sound, landscapeBibliografia soundscpe, sound, landscape
Bibliografia soundscpe, sound, landscape
 
WCCI 2008 Tutorial on Computational Intelligence and Games, part 2 of 3
WCCI 2008 Tutorial on Computational Intelligence and Games, part 2 of 3WCCI 2008 Tutorial on Computational Intelligence and Games, part 2 of 3
WCCI 2008 Tutorial on Computational Intelligence and Games, part 2 of 3
 
Leadership.Mena
Leadership.MenaLeadership.Mena
Leadership.Mena
 
10 Sure Fire Tips
10 Sure Fire Tips10 Sure Fire Tips
10 Sure Fire Tips
 
Sample Works
Sample WorksSample Works
Sample Works
 
Bobcat by Noah
Bobcat by NoahBobcat by Noah
Bobcat by Noah
 
Zendframework Parte2
Zendframework    Parte2Zendframework    Parte2
Zendframework Parte2
 
Learning Analytics and Linked Data Workshop at LAK12
Learning Analytics and Linked Data Workshop at LAK12Learning Analytics and Linked Data Workshop at LAK12
Learning Analytics and Linked Data Workshop at LAK12
 
Tech Success: Web/2.0 startup HOWTO
Tech Success: Web/2.0 startup HOWTOTech Success: Web/2.0 startup HOWTO
Tech Success: Web/2.0 startup HOWTO
 
Reaching net-generation learners with social technologies
Reaching net-generation learners with social technologiesReaching net-generation learners with social technologies
Reaching net-generation learners with social technologies
 
Dia Chi Toa Nha Tai Thanh Pho Ho Chi Minh
Dia Chi Toa Nha Tai Thanh Pho Ho Chi MinhDia Chi Toa Nha Tai Thanh Pho Ho Chi Minh
Dia Chi Toa Nha Tai Thanh Pho Ho Chi Minh
 
TypeScript, Now.
TypeScript, Now.TypeScript, Now.
TypeScript, Now.
 
'The university as a hackerspace'
'The university as a hackerspace''The university as a hackerspace'
'The university as a hackerspace'
 
Greater Pittsburgh Arts Council 2008 Annual Meeting
Greater Pittsburgh Arts Council 2008 Annual MeetingGreater Pittsburgh Arts Council 2008 Annual Meeting
Greater Pittsburgh Arts Council 2008 Annual Meeting
 
Preparing in Isolation?!
Preparing in Isolation?!Preparing in Isolation?!
Preparing in Isolation?!
 
Using Simulations to Evaluated the Effects of Recommender Systems for Learner...
Using Simulations to Evaluated the Effects of Recommender Systems for Learner...Using Simulations to Evaluated the Effects of Recommender Systems for Learner...
Using Simulations to Evaluated the Effects of Recommender Systems for Learner...
 
Przyjaźń międzyrodzinna
Przyjaźń międzyrodzinnaPrzyjaźń międzyrodzinna
Przyjaźń międzyrodzinna
 

Similar to Pyconpl2008 - Pogodzić Google App Engine z Django

Google App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjachGoogle App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjach3camp
 
Co Ty wiesz o Magento?
Co Ty wiesz o Magento?Co Ty wiesz o Magento?
Co Ty wiesz o Magento?White Ducky
 
Integracja Django z Google Cloud Platform
Integracja Django z Google Cloud PlatformIntegracja Django z Google Cloud Platform
Integracja Django z Google Cloud PlatformFly on the cloud
 
Invitation on hybrisonuniversity_go-2
Invitation on hybrisonuniversity_go-2Invitation on hybrisonuniversity_go-2
Invitation on hybrisonuniversity_go-2Marek Nawa
 
Tworzenie niezależnego środowiska do developmentu aplikacji frontendowej
Tworzenie niezależnego środowiska do developmentu aplikacji frontendowejTworzenie niezależnego środowiska do developmentu aplikacji frontendowej
Tworzenie niezależnego środowiska do developmentu aplikacji frontendowejTomasz Borowski
 
Extjs & netzke
Extjs & netzkeExtjs & netzke
Extjs & netzkeGaldoMedia
 
Zastosowanie buildout przy wdrażaniu projektów opartych o framework Django
Zastosowanie buildout przy wdrażaniu projektów opartych o framework DjangoZastosowanie buildout przy wdrażaniu projektów opartych o framework Django
Zastosowanie buildout przy wdrażaniu projektów opartych o framework DjangoDominik Szopa
 
Zbyszek Rzepka: GameDev od zaplecza
Zbyszek Rzepka: GameDev od zapleczaZbyszek Rzepka: GameDev od zaplecza
Zbyszek Rzepka: GameDev od zapleczaGameDesire Academy
 
Optymalizacja Serwisów WWW
Optymalizacja Serwisów WWWOptymalizacja Serwisów WWW
Optymalizacja Serwisów WWWPaweł Harajda
 
Wtyczkowe Kompendium - WordUp Łódź #12
Wtyczkowe Kompendium - WordUp Łódź #12Wtyczkowe Kompendium - WordUp Łódź #12
Wtyczkowe Kompendium - WordUp Łódź #12Tomasz Dziuda
 
Django - webowy framework dla wymagających
Django - webowy framework dla wymagającychDjango - webowy framework dla wymagających
Django - webowy framework dla wymagającychKrzysztof Kreczko
 
Wtyczkowe Kompendium - WordUp Lublin
Wtyczkowe Kompendium - WordUp LublinWtyczkowe Kompendium - WordUp Lublin
Wtyczkowe Kompendium - WordUp LublinTomasz Dziuda
 
Wtyczkowe kompendium - WordUp Warszawa
Wtyczkowe kompendium - WordUp WarszawaWtyczkowe kompendium - WordUp Warszawa
Wtyczkowe kompendium - WordUp WarszawaTomasz Dziuda
 
WordUp Trójmiasto - Sage 9 w praktyce
WordUp Trójmiasto - Sage 9 w praktyceWordUp Trójmiasto - Sage 9 w praktyce
WordUp Trójmiasto - Sage 9 w praktyceDawid Urbański
 
SEO Surgery Polska #1 by Łukasz Rogala
SEO Surgery Polska #1 by Łukasz RogalaSEO Surgery Polska #1 by Łukasz Rogala
SEO Surgery Polska #1 by Łukasz RogalaAnton Shulke
 
Jak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayJak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayTomasz Dziuda
 
Word up łódź kwiecień 2015
Word up łódź   kwiecień 2015Word up łódź   kwiecień 2015
Word up łódź kwiecień 2015Tomasz Dziuda
 

Similar to Pyconpl2008 - Pogodzić Google App Engine z Django (20)

Google App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjachGoogle App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjach
 
Co Ty wiesz o Magento?
Co Ty wiesz o Magento?Co Ty wiesz o Magento?
Co Ty wiesz o Magento?
 
Integracja Django z Google Cloud Platform
Integracja Django z Google Cloud PlatformIntegracja Django z Google Cloud Platform
Integracja Django z Google Cloud Platform
 
Invitation on hybrisonuniversity_go-2
Invitation on hybrisonuniversity_go-2Invitation on hybrisonuniversity_go-2
Invitation on hybrisonuniversity_go-2
 
Tworzenie niezależnego środowiska do developmentu aplikacji frontendowej
Tworzenie niezależnego środowiska do developmentu aplikacji frontendowejTworzenie niezależnego środowiska do developmentu aplikacji frontendowej
Tworzenie niezależnego środowiska do developmentu aplikacji frontendowej
 
Extjs & netzke
Extjs & netzkeExtjs & netzke
Extjs & netzke
 
Zastosowanie buildout przy wdrażaniu projektów opartych o framework Django
Zastosowanie buildout przy wdrażaniu projektów opartych o framework DjangoZastosowanie buildout przy wdrażaniu projektów opartych o framework Django
Zastosowanie buildout przy wdrażaniu projektów opartych o framework Django
 
Feo w-joomla
Feo w-joomlaFeo w-joomla
Feo w-joomla
 
Zbyszek Rzepka: GameDev od zaplecza
Zbyszek Rzepka: GameDev od zapleczaZbyszek Rzepka: GameDev od zaplecza
Zbyszek Rzepka: GameDev od zaplecza
 
Optymalizacja Serwisów WWW
Optymalizacja Serwisów WWWOptymalizacja Serwisów WWW
Optymalizacja Serwisów WWW
 
Wtyczkowe Kompendium - WordUp Łódź #12
Wtyczkowe Kompendium - WordUp Łódź #12Wtyczkowe Kompendium - WordUp Łódź #12
Wtyczkowe Kompendium - WordUp Łódź #12
 
Django - webowy framework dla wymagających
Django - webowy framework dla wymagającychDjango - webowy framework dla wymagających
Django - webowy framework dla wymagających
 
Jaki framework wybrać
Jaki framework wybraćJaki framework wybrać
Jaki framework wybrać
 
Wtyczkowe Kompendium - WordUp Lublin
Wtyczkowe Kompendium - WordUp LublinWtyczkowe Kompendium - WordUp Lublin
Wtyczkowe Kompendium - WordUp Lublin
 
Wtyczkowe kompendium - WordUp Warszawa
Wtyczkowe kompendium - WordUp WarszawaWtyczkowe kompendium - WordUp Warszawa
Wtyczkowe kompendium - WordUp Warszawa
 
WordUp Trójmiasto - Sage 9 w praktyce
WordUp Trójmiasto - Sage 9 w praktyceWordUp Trójmiasto - Sage 9 w praktyce
WordUp Trójmiasto - Sage 9 w praktyce
 
SEO Surgery Polska #1 by Łukasz Rogala
SEO Surgery Polska #1 by Łukasz RogalaSEO Surgery Polska #1 by Łukasz Rogala
SEO Surgery Polska #1 by Łukasz Rogala
 
Środowisko PWA
Środowisko PWAŚrodowisko PWA
Środowisko PWA
 
Jak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayJak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training Day
 
Word up łódź kwiecień 2015
Word up łódź   kwiecień 2015Word up łódź   kwiecień 2015
Word up łódź kwiecień 2015
 

Pyconpl2008 - Pogodzić Google App Engine z Django

  • 1. Pogodzić Google App Engine z Django Rafał Jońca http:/jonca.vdl.pl/ PyConPL 2008 18-19 październik 2008
  • 2. Zawartość  Google App Engine  Co to takiego? Jak działa?  Zalety, wady, ograniczenia, rynek  Django w App Engine  Jak? Co otrzymamy? Jakie wersje Django?  Projekty ułatwiające integrację  Jedna aplikacja, dwa podejścia  WebApp kontra Django GAE Helper  Testy w Django GAE Helper  Wnioski, wskazówki
  • 3. Google App Engine  Platforma dla aplikacji internetowych  zapewniająca:  Łatwość konfiguracji i wdrożenia  Wolność od zadań stricte administracyjnych  Skalowalność  Integracja z kontami Google (uwierzytelnianie)  Obsługa danych statycznych  Środowisko deweloperskie  Bezpłatny startowy pakiet liczby odsłon i  przechowywanych danych
  • 4. Architektura Żądanie/odpowiedź Interfejsy System tylko bezstanowe: do odczytu: zapytania HTTP, Proces biblioteki obrazy, maszyny wysyłka maili wirtualnej Pythona aplikacja Interfejsy memcache DataStore stanowe:
  • 5. Możliwe zastosowania  Własna witryna domowa  Niewielkie witryny lub aplikacje tematyczne  Proste witryny dla przedsiębiorstw nie działających  w obszarze WWW  Tworzenie aplikacji wewnątrzfirmowych jako część  pakietu Google Apps* *  Skalowalne aplikacje internetowe *  ­ po okresie testowym
  • 6. Wady GAE ● Brak relacyjnej bazy danych (złączeń, grupowania) ● Komunikacja ze światem zewnętrznym tylko przez  dostarczone API ● Zamknięte środowisko wykonawcze ● Ograniczenia rozmiarów danych ● Uzależnienie się od rozwiązań jednego dostawcy ● Brak długo działających procesów ● Odmienna architektura trudna do zaakceptowania  dla dużych, istniejących projektów
  • 7. WebApp  GAE udostępnia bardzo prosty framework WebApp  zawierający:  obsługę żądań opartą o bibliotekę WebOb  mechanizm opisu modeli wzorowany na Django  system szablonów z Django 0.96  Dobry na start lub gdy tworzymy usługi sieciowe,  pełna swoboda  Brak wielu mechanizmów z innych frameworków,  wymyślanie koła od nowa
  • 8. Django w App Engine  Użycie Django w GAE daje dostęp do:  elastycznego mechanizmu odwzorowania adresów  systemu luźno powiązanych aplikacji  wygodnej obsługi memcache na poziomie widoków i  * szablonów  rozbudowanego systemu obsługi formularzy  wielojęzyczności na poziomie statycznym  sesji*  testów funkcjonalnych wraz z obsługą danych  testowych*  wielu aplikacji pomocniczych gotowych do użycia 
  • 9. Czego ze standardowego Django nie dostaniemy?  automatycznego panelu administracyjnego  przeglądarki danych (GAE Admin oferuje własną)  komentarzy  mechanizmu contenttypes  innych aplikacji wykorzystujących bazę danych  brak również dostępu do zewnętrznych aplikacji  Django stosujących bazę danych (np. Satchmo)
  • 10. Django w GAE bez dodatkowego wspomagania  W Google App Engine jest Django 0.96  Wymaga zastosowania nieco bardziej złożonego  pliku main.py ­ dostępny na witrynie GAE  Użycie Django 1.0 wymaga większej liczby  dodatkowych kroków:  Najlepiej umieszczenia okrojonego Django w archiwum  ZIP  Usunięcia z pamięci wczytanego Django 0.96 i  dołączenia nowszego przez zmianę ścieżek importu
  • 11. Można prościej!  Istnieją projekty wspomagające współpracę Django  i GAE, z czego najciekawsze są trzy:  http://code.google.com/p/django­gae­helpers  wykorzystamy go w dalszej części prezentacji  wspierany przez pracowników Google  http://code.google.com/p/app­engine­patch/  bardzo podobny do pierwszego  tworzony niezależnie  http://code.google.com/p/django­gae2django/  jeśli tworzyłeś aplikację django w GAE, dzięki temu  projektowi możesz jej użyć poza GAE, czyli w standardowym  Django z relacyjną bazą danych!
  • 12. Google App Engine Helper for Django  wykonywanie poleceń GAE za pomocą manage.py  klasa User z Django dla użytkowników z kontami Google  obsługa testów i wczytywania danych testowych  obsługa wysyłania e­maili mechanizmem Django  przekierowania błędów do modułu logging  automatycznie usunięcie django wbudowanego w GAE i  zastąpienie dostarczonym jako django.zip  obsługa sesji w BigTable i memcache  obsługa cache  gotowe pliki app.yaml i main.py
  • 13. Instalacja GAE Helpers  Pobierz kod z http://code.google.com/p/django­gae­ helpers  Po rozpakowaniu dołącz django.zip z Django 1.0  Opis przygotowań dostępny na  http://code.google.com/appengine/articles/django10_zipi mport.html  Zmodyfikuj plik app.yaml, podając własną nazwę  aplikacji  Od tego momentu masz dostęp do większości  elementów Django 1.0!
  • 14. Przykładowa aplikacja w WebApp  Pobieramy App Engine SDK:  http://code.google.com/appengine/downloads.html  Tworzymy wymagane pliki i foldery  Demo...  Testujemy lokalnie  Demo...  Przesyłamy na serwery Google
  • 15. ...i w Django GAE Helper  Wcześniejsza aplikacja napisana w Django  Demo...  Tworzenie testów i fixtures  Demo...  Aplikacja live
  • 16. Warto czy nie warto?  Dla znających Django   Django GAE Helper i  znacznie bardziej  App Engine Patch to  przyjazne środowisko jednak spory monkey   Pomimo niezgodności  patching! modeli danych    Django GAE Helper nie  uzyskujemy wiele  jest dopracowany gotowych elementów i   Przesyłanie Django 1.0  dostęp do wielu  wraz z projektem dodatkowych aplikacji  Ułatwia migrację do   Łatwiejsze wyjście z  GAE tylko częściowo GAE
  • 17. Przyszłość Django w GAE?  Raczej niezachwiana, choć na bezpośrednią obsługę  wersji 1.0 musimy jeszcze poczekać  Powstanie osobnego projektu GAEDjango?  Jest Gaengo, ale nierozwijane...  Modele zgodne z API ORM Django?  Całkiem możliwe dzięki QuerySet refactor!  Ale  nie  łudźmy  się  w  kwestii  uruchomienia  każdej  aplikacji  Django  bez  modyfikacji  modeli  ­  BigTable  to  wiele ograniczeń, potrzeba denormalizacji...  ... choć liczba zmian będzie znacznie mniejsza
  • 18. Kilka rad na zakończenie  Używaj django.zip zamiast zwykłych plików  Folder locale z django umieść poza archiwum  ...to samo dotyczy szablonów  Użyj łatki z issue 94 dla Django GAE Helper  GAE automatycznie używa gzip    Jeśli to możliwe, używaj metod z QS zamiast GQL  Jeśli możesz, nie używaj sesji, ale signed cookies  ...ewentualnie sesji w memcache, ale są mniej pewne  SDK to nie live, korzystaj z wbudowanego stagingu