Pyconpl2008 - Pogodzić Google App Engine z Django

833 views

Published on

Published in: Technology
  • Be the first to comment

Pyconpl2008 - Pogodzić Google App Engine z Django

  1. 1. Pogodzić Google App Engine z Django Rafał Jońca http:/jonca.vdl.pl/ PyConPL 2008 18-19 październik 2008
  2. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 15. ...i w Django GAE Helper  Wcześniejsza aplikacja napisana w Django  Demo...  Tworzenie testów i fixtures  Demo...  Aplikacja live
  16. 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. 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. 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
  19. 19. Dziękuję za uwagę! Pytania?

×