You are on page 1of 19

Przetwarzanie

w chmurze w wykorzystaniem platformy AppEngine


Piotr Duda <pduda@utest.com>

Co to jest?
Usuga typu Cloud Compu)ng Oparta o infrastruktur uywan przez Google Model PaaS (PlaForm as a Service)
W teorii przezroczyste skalowanie Wyszy poziom abstrakcji ni IaaS (Infrastructure as

a service)

Skalowalno
Niezalene instancje jako element skadowy Abstrakcja ponad procesem systemu operacyjnego Dynamicznie uruchamiane w zalenoci od potrzeb Wirtualne rodowisko do uruchamiania aplikacji Ograniczenia Limitowana ilo pamici I czasu procesora Brak dostpu do powoki systemowej Dziaanie w obrbie maszyny wirtualnej Rozproszona, nierelacyjna baza danych datastore

Architektura aplikacji
Limit 30 sekund na pen odpowied DeadlineExceededError Najbardziej skalowalna forma przetwarzania
Wicej uytkownikw to zawsze wiksza liczba

da dania zawsze obsugiwane dziki automatycznemu zarzdzaniu instancjami GAE

Architektura aplikacji
Kolejki zada Przeznaczone do realizowania duszych operacji
Limit czasowy: 10 minut na jedno zadanie

Zadania przetwarzane na zasadzie FIFO Dwa rodzaje kolejek:


Push Queues zadania realizowane z okrelon

szybkocia Pull Queues zadania konsumowane przez zewntrzny system

rodowisko uruchomieniowe
Obsuga Pythona, JVM, Go Python
Wersja 2.7 Obsuga WSGI Webapp2, Django 1.4, web2py, boile,

Brak moliwoci uruchamiania kodu natywnego

Konguracja rodowiska
SDK dostpne na Google Code: hip://code.google.com/appengine/ Wsppracuje z Python 2.5 oraz 2.7 Zawiera: Lokalny server testowy (dev_appserver.py)
Narzdzie do wdraania (appcfg.py) Dodatkowe narzdzia I biblioteki

Serwer testowy
dev_appserver.py Automatyczne monitorowanie zmian w plikach Moliwoci
Obsuga wikszoci featurw GAE Lokalna implementacja datastore Symulowana autoryzacja Google Accounts Prosty panel administracyjny

$python dev_appserver.py apphance/

Wdraanie w rodowisku produkcyjnym


appcfg.py Wdraanie aplikacji z obsug wersjonowania
Automatyczna synchronizacja dziaajcego kodu na

wszystkich instancjach Zarzdzanie indeksami bazy danych $python appcfg.py update apphance/

Konsola administracyjna
Umoliwia zarzdzanie wdroon aplikacj Konguracja zasobw instancji
Obserwacja zuywanych zasobw (quotas) Zarzdzanie kolejkami zada Przegldanie I edycja bazy danych Dostp do logw aplikacji
Filtrowanie, wyszukiwanie

Datastore
Obiektowa, nierelacyjna baza oparta o BigTable Optymalizowana pod ktem odczytw
Powielanie danych na niezalenych serwerach Eventual consistency

Niezawodny dostp do danych


W razie awarii dane odczytywane z kopii Praktycznie niezawodna

Datastore
Dane organizowane bardziej jako obiekty ni tabele Odrzucenie normalizacji Pola nie musz by atomowe (listy wartoci) Redundancja danych (np. Liczniki) Brak operacji JOIN Warto uwzgldni transakcje przy projektowaniu

bazy

Rozproszona architektura narzuca ograniczenia

transakcjom

Przykadowy model
Model deniowany jako zwyka kasa Zawiera predeniowane waciwoci class Device(db.Model): iden = db.StringProperty() user_agent = db.StringProperty(indexed=False) model_name = db.StringProperty() def __str__(self): .

Tworzenie zapyta
Silnie ograniczony QL Brak operacji JOIN, LIKE,
Ograniczenia na sortowanie I porzdkowanie Nieefektywne zliczanie I stronicowanie

Dwie metody konstrukcji GQL (Google Query Language)


Skadniowo przypomina zuboony SQL

Natywne API
Przypomina interfesj Django ORM

Przykady zapyta
GQL

db.Gql("SELECT * FROM Device WHERE model_name=:1 AND iden=:2", name, iden) q = Device.all() q = q.lter(model_name, name) q = q.lter(iden, iden)

API

Dostpne usugi
Praktycznie bez konguracyjny dostp do wielu usug:
Memcache Blobstore Google Cloud Storage Search Task Queues Google Accounts XMPP Mail Prospec{ve Search Image API Channel API URLFetch Conversions MapReduce BigQuery Google Cloud SQL (Beta)

Wady I zalety
Zintegrowane rodowisko programistyczne oraz

uruchomieniowe

Brak zarzdzania serwerami Automatyczny load balancing Prosta konguracja I wdraanie Nieograniczone moliwoci obliczeniowe

Ograniczenia Vendor lock-in Brak dostpu do kodu natywnego Silnie ograniczone gniazda sieciowe

Koniec

Rekrutujemy!
Warszawskie biuro rmy uTest poszukuje

programistw!

Oferta: hip://bit.ly/QzCuWb Rozwj produktu Apphance oraz innych projektw Zgoszenia na adres: pduda@utest.com

You might also like