22 December 2009

Google App Engine i wydajne korzystanie z API

Dwa tygodnie temu Guido van Rossum opublikował wersję testową aplikacji umożliwiającej przeglądanie statystyk użycia wywołań RPC na platformie Google App Engine (link). Ponieważ wywołania RPC to zawsze dodatkowe opóźnienie, a nie rzadko i dodatkowe pieniądze (szczególnie w systemach chmurowych), tego rodzaju narzędzia okazują się nieodzowne w poprawianiu aplikacji i znajdowaniu jej słabych punktów.

By jednak po uruchomieniu wspomnianej aplikacji nie zacząć płakać, bo trzeba przerobić część aplikacji, warto od początku pamiętać o kilku prostych zasadach optymalizacyjnych, szczególnie w odniesieniu do Datastore i memcache.

Oto one:
  • stosować wersje multi poleceń get/put/delete dla Datastore i memcache
  • wykorzystać cache procesu lub memcache dla gorących elementów, szczególnie jeśli możemy zamienić kilka wywołań RPC w jedno
  • nie pobierać tego samego elementu kilkukrotnie
  • w miarę możliwości zamieniać zapytania na wywołania db.get(), np. jeśli potrafimy wyliczyć klucz elementu i nie potrzebujemy sortowania
  • pobierać tylko klucze w przypadku, gdy pozostała część jest zbędna
  • uważać na transakcje i używać ich tylko wtedy, gdy są naprawdę niezbędne (każda transakcja to minimum 4 wywołania RPC - rozpoczęcie transakcji, pobranie, zapis, zatwierdzenie)
Muszę przyznać, że nawet znając te zasady po uruchomienie wspomnianej aplikacji wprowadziłem kilka niezbędnych poprawek. Wkrótce postaram się przedstawić, w jaki sposób zmienić kod, by stosował wspomniane zasady.

0 komentarze:

Post a Comment