Está en la página 1de 45

Google App Engine (GAE)

Sl.dr.ing. Ciprian DOBRE Universitatea POLITEHNICA Bucureti

Cuprins
Breviar teoretic Google App Engine Google n Cloud
Instrumente (GWT, GAS) Caracteristici Aspecte arhitecturale

Descrierea aplicaiei practice


Crearea unei aplicaii n Java pentru GAE descris n documentaia laboratorului Crearea unei aplicaii n Python pentru GAE

Informaii suplimentare Concluzii


2

1. Breviar Teoretic

Google n Cloud?
Google are n spate unele dintre cele mai mari ferme de servere din lume Modelul economic iniial: tot coninutul e disponibil gratis, suport financiar doar din publicitate Servicii precum Google Maps, Google Finance, Google Voice Noul model: its free to the consumer 1GB pentru stocare per cont Google Apps: free hosting pentru serverulde e-mail (cu propriul numede domeniu), 7.3 GB (Google Talk, Google Calendar, Google Docs, Google Sites, Start Page) Google App pentru Business: 50$/an per business (25 GB, ) => muli utilizatori business Urmnd modelul Apple: Apps Market www.google.com/enterprise/marketplace Pentru dezvoltatori: o versiune free de Google App Engine http://code.google.com/appengine
4

Google
Google Web Toolkit - GWT Ofer suport ncepnd cu versiunea de Java SDK 5 Instrument ce permite dezvoltarea de aplicaii Web complexe Este gratuit: http://code.google.com/webtoolkit/gettingstarted.html Google Apps Script - https://developers.google.com/apps-script/ Ofer posibilitatea automatizrii procesului de business, prin intermediul unor scripturi ce aduc un plus de funcionalitate fa de suita de aplicaii deja existente Legtura aplicaiilor Google cu servicii third-party: un script poate trimite email-uri i o invitatie unei liste dintr-o baz de date MySQL Crearea de funcii specializate pentru spreadsheet-uri: realizarea de analize complexe asupra datelor din Google spreadsheets
5

Google App Engine


Costuri: http://code.google.com/appengine/docs/whatisgoogleappengine. html Not only is creating an App Engine application easy, it's free! You can create an account and publish an application that people can use right away at no charge, and with no obligation. An application on a free account can use up to 1 GB of storage and up to 5 million page views a month. When you are ready for more, you can enable billing, set a maximum daily budget, and allocate your budget for each resource according to your needs. You can register up to 10 applications per developer account. 2012:

Google App Engine


Permite rularea aplicaiilor Web peste infrastructura Google A nu se nelege rent a piece of a server, deoarece aplicaia nu este gzduit pe un singur server Conceptual Google App Engine este un PaaS Aspect unic la Google: aplicaiile GAE ruleaz n acelai mod, pe aceeai infrastructur Controlul? l are Google Fr griji legate de infrastructur, load balancing, managementul stocrii Folosind Google Apps aplicaia poate folosi propriul domeniu (http://www.ex.com) sau poate folosi un nume din domeniul appspot.com
7

Google App Engine


GAE suport aplicaii scrise n diverse limbaje Dezvoltatorii au acces la tehnologii de stocare de tipul GFS (Google File System) i Bigtable (sistem de stocare pentru date nestructurate) With Google App Engine, developers can write Web applications based on the same building blocks that Google uses, Kevin Gibbs, Googles technical lead for the project, wrote in The Official Google Blog. GoogleApp Engine packages those building blocks and provides access to scalable infrastructure that we hope will make it easier for developers to scale their applications automatically as they grow.
8

Google App Engine


n mai 2010 Google a anunat Google Apps Noi faciliti: administrare centralizat, SLA (Service Level Agreement) 99.9%, plata lunar, premium developer support ($1000/lun), acces la BD SQL i suport SSL VMWare i Google colaboreaz (din mai 2010) GWT integrat cu framework-ul Spring Colaborare VMWare i SalesForce Construirea de aplicaii business ncrcate n GAE pentru Business Mediul VMWare (infrastructura vSphere, partener vCloud sau pe VMforce din Salesforce) GAE, GWT, GAS => un pas mare ctre dezvoltare enterprise n Cloud & competitor pentru Amazon WS 9

Google App Engine

10

Aspecte arhitecturale
Runtime environment, Static File Servers, Datastore, Servicii, Runtime environment Aplicaiile manipuleaz cereri HTTP(S) (e.g. fetch a Web page URL) La primirea cererii, AppEngine selecteaz serverul cel mai rapid, trimite cererea la aplicaie i returneaz clientului rspunsul ntre cereri nu se pstreaz starea. AppEngine asigur uniformitate ntre cereri, prin distribuirea traficului ntre servere Aplicaiile pot accesa doar propriile fiiere din sistemul de fiiere; aplicaiile pot vedea variabilele de mediu setate de AppEngine, dar manipularea acestora nu este neaprat persistent ntre cereri Sandbox

11

Runtime environment
Aplicaiile nu pot accesa facilitile de reea la nivel hardware, dar se permite realizarea de operaii de reea prin utilizarea serviciilor Limitri privind utilizarea CPU, a memoriei consumate per cerere La o cerere se poate rspunde ntr-un timp de pn la 30 de secunde Dac aplicaia utilizeaz mai muli cicli de procesor, AppEngine o va ncetini pentru a nu fi afectate performanele celorlalte aplicaii care ruleaz pe aceeai main
12

Runtime environment
Diverse medii pentru aplicaii: GAE Java runtime environment O aplicaie poate fi dezvoltat folosind limbajulJava sau alte limbaje care folosesc JVM (PHP folosind Quercus, Ruby folosind Jruby, JavaScript interpretorul Rhino, Scala, Groovy) Se pot construi aplicaii folosind tehnologii Java standard (servleturi Java, limbajul de programare Java,) Python Se folosete o versiunea interpretorului cPython Mecanism general: App Engine invoc o aplicaie Python folosind CGI Framework-uri Python cum ar fi Django, web2py, Pylons funcioneaz cu App Engine AppEngine include i un framework propriu Python
13

Aspecte privind invocarea unei aplicaii


Mecanism: cererea este rutat la server, aplicaia este pornit, se creeaz rspunsul, rspunsul este returnat clientului Fiecare mediu ruleaz propriul interpretor (JVM sau Python) respectnd restriciile sandbox (e.g. ncercarea de a folosi vreo facilitate a limbajului sau a bibliotecilor existente, care s acceseze alte resurse dect cele permise va conduce la o excepie) Utilizarea pentru fiecare cerere a unui server diferit Avantaj: scalare Dezavantaj: este consumatoare de timp operaia de creare a unei instane pentru fiecare cerere Soluia: AppEngine atenueaz costurile de pornire prin meninerea aplicaiei n memoria serverului, maxim posibil, i reutilizarea inteligent a serverelor Toate serverele au mediile runtime prencrcate nainte ca cererea s ajung la server
14

Static File Servers


Multe site-uri web dispun de resurse care nu sufer schimbri n timpul operaiilor obinuite asupra site-ului (e.g. imagini, fiiere CSS, cod JavaScript, pagini HTML cu coninut static) Acestea sunt denumite static files Furnizarea acestor resurse nu implic cod de aplicaie => nu necesit servere de aplicaii AppEngine furnizeaz servere dedicate pentru acest tip de coninut Static File Servers Pentru clientul final o astfel de resurs static este similar cu orice alt resurs Dezvoltatorii pot configura cteva aspecte privind modul de furnizare al resurselor statice (URL-uri, content types, instruciuni pentru browsere pentru a menine copii ale fiierelor n cache, etc.)

15

Datastore
O aplicaie AppEngine stocheaz datele ntruna sau mai multe entiti de stocare(data store entities) Entitatea are asociate properties de tipul name value Fiecare entitate are un nume de un anumit tip, care catalogheaz entitatea n scopul unor interogri Similar cu baze de date relaionale ( ? entities = rows din tabele; ?properties = columns) Diferene: O entitate de un anumit tip poate avea proprieti diferite fa de o alt entitate de acelai itip O entitate poate avea o proprietate cu acelai nume, dar de tip diferit, fa de o alt entitate de acelai tip cu ea => entitile din datastore sunt schemaless=> flexibilitate mrit & provocri n mentenan
16

Datastore
O entitate are o cheie unic care e furnizat de aplicaie sau de App Engine (dezvoltatorul decide) Aceast cheie nu este o proprietate, ci este un aspect independent al entitii O cheie nu poate fi schimbat dup ce entitatea a fost creat Cunoscnd cheia, se pot face interogri Cunoscnd tipul entitii i cheia asociat se poate determina unde este entitatea stocat n ntreaga colecie de servere Interogri i indexri Exemple de tipuri de interogri: Dup proprietile entitii i se va obine lista entitilor ordonate dup valoarea proprietii Filtrare i sortare dup chei
17

Interogri i indexri
Mecanism intern de execuie a interogrilor Baze de date relaionale: interogrile sunt planificate i executate n timp real App Engine Fiecare interogare are un index de coresponden meninut n datastore Atunci cnd aplicaia realizeaz o interogare, datastore gsete indexul corespunztor acelei interogri, scaneaz pn la primul rnd care se potrivete cu interogarea, i returneaz entitatea pentru fiecare rnd consecutiv din index, procesul repetndu-se pn la primul rnd care nu se potrivete cu interogarea Obs: App Engine trebuie sa tie dinainte ce interogri va face aplicaia; nu trebuie s tie apriori valorile filtrelor, dar trebuie s tie tipul entitii dup care se face interogarea, proprietile dup care se dorete filtrarea sau sortarea, etc.
18

Interogri i indexri
App Engine furnizeaz un set de indeci pentru interogri simple, bazndu-se pe ce proprieti si tipuri de entiti exist Pentru interogri complexe, o aplicaie trebuie s includ n configuraia sa specificaii pentru indeci App Engine SDK ajut la producerea acestor fiiere de configurare (e.g. supervizarea interogrilor pe care dezvoltatorul le-a realizat n timpul dezvoltrii aplicaiei folosind serverul de dezvoltare pe computerul local. La ncrcarea aplicaiei, datastore va crea indeci pentru fiecare interogare a aplicaiei realizat n faza de dezvoltare) Atunci cnd aplicaia creeaz noi entiti, i actualizeaz pe cele existente, datastore actualizeaz fiecare index => interogri rapide

19

Tranzacii
Cnd o aplicaie are mai muli clieni care realizeaz operaii de citire/scriere simultan asupra acelorai date => necesitatea meninerii consistenei datelor Cnd o aplicaie actualizeaz proprietile unei entiti, App Engine asigur update-ul complet sau operaia de update va da eroare Update-ul unei entiti se realizeaz printr-o tranzacie (proprietate: orice tranzacie este atomic) Cnd o aplicaie dorete operaii cu mai multe entiti ntr-o singur tranzacie, aplicaia va crea un entity group, asupra cruia App Engine va supraveghea realizarea tranzaciilor App Engine utilizeaz optimistic concurrency control aplicaia trebuie s ncerce realizarea unei tranzacii de mai multe ori nainte de a returna eroare Citirea unei entiti nu poate eua din cauza concurenei, aplicaia avnd acces la cea mai stabil stare a entitii
20

Servicii
Stateful services APIs Memcache (memory cache) este un serviciu de stocare cheie-valoare Principalul avantaj fa de datastore: rapiditate n operaiile de stocare i regsire Stocheaz valori n memorie i nu pe disk Este distribuit ca i datastore, deci fiecare cerere vede aceeai pereche cheie-valoare Nu este persistent: dac un server eueaz, memoria este tears Este utilizat pentru cash-ul rezultatelor celor mai frecvente interogri sau calcule Datastore Blobstore Binary large objects dimensiune mai mare dect dimensiune permis pentru obiectele din serviciul Datastore Sunt create prin ncrcarea de fiiere ca rezultat al cererilor HTTP
21

Servicii
URL Fetch Permite aplicaiilor App Engine s acceseze alte resurse Web (cereri HTTP(S) pentru obinerea de pagini Web, interaciune cu servicii Web) Deoarece serverele remote pot rspunde greu, URL Fetch suport fetching URL n background, in timp ce aplicaiile pot efectua i alte operaii Obs: O astfel de operaie trebuie s existe doar pe timpul de via al aplicaiei Aplicaia poate seta un deadline, pentru operaia de fetch => apelul se va ncheia dac rspunsul nu este primit n timpul corespunztor Mail Aplicaiile pot trimite i primi mesaje sub form de cereri HTTP iniiate de App Engine i trimise ctre aplicaie Exemplu: notificarea utilizatorilor, confirmarea aciunilor utilizatorilor, validarea informaiilor de contact, etc.
22

Servicii
XMPP Aplicaiile suport mesageria instant, permind colaborarea cu servicii de chat care suport protocolul XMPP (inclusiv Google Talk) Images Permite realizarea de operaii asupra imaginilor (redimensionare, crop, flip, ) Google Accounts App Engine permite integrarea cu Google Accounts (Google Mail, Google Docs, Google Calendar) Foarte util pentru membrii unei organizaii care doresc accesul la o anumit aplicaie dar i la email, calendar, documente etc. Prospective search (BETA) metod de cutare n care prima dat este dat cererea i apoi informaia pentru rezultat este obinut din date real-time (difer de tradiionala retrospective search (motoarele de cutare) n care informaiile pentru rezultate sunt obinute i apoi interogate)
23

Servicii
Task Queues i Cron Jobs Ideea: o aplicaie Web trebuie s ofere rezultatul ct mai rapid Problema: uneori sunt multe operaii de fcut, care necesit mai mult timp Soluia: task queues Permite definirea de task-uri care se pot executa n background Queues asigur faptul c aceste taskuri sunt executate pn se obine succes Scheduled task (sau cron jobs) Permite executarea de task-uri la un anumit moment Utile pentru mentenana periodic sau trimiterea de mesaje de notificare
24

Google App Engine

25

2. Descrierea aplicaiei

26

Instrumente pentru dezvoltatori


Java se poate descrca Java SDK n format plugin pentru Eclipse Python Pyton SDK sub forma unei aplicaii GUI Ambele SDK-uri disponibile i ca arhive .zip Fiecare SDK conine un server Web de dezvoltare care permite rularea de aplicaii local, i care simuleaz runtime environment, datastore i servicii Fiecare SDK include un instrument pentru interaciunea cu aplicaiile rulnd n GAE Primul pas: ncrcarea codului aplicaiei n GAE Descrcarea de log-uri corespunztoare aplicaiei live etc.
27

Crearea unei aplicatii folosind Python


Descrcarea unui App Engine SDK n funcie de limbajul dorit http://code.google.com/appengine/ Fiecare SDK conine un server web de test Se simuleaz condiiile din GAE (sandbox, serviciile existente) Deoarece SDK-ul pentru Python a fost dezvoltat nainte de cel de Java, anumite faciliti se gsesc doar n primul http://www.python.org/download/ >> dev_appserver.py --help

28

Crearea unei aplicatii in Python


Pentru Windows i MacOS, Python SDK include o aplicaie Google App Engine Launcher permite managementul proiectelor Python folosind o interfa grafic

Run - pornirea serverului Web de dezvoltare

29

Crearea unei aplicatii in Python


text
Browse vizualizarea rezultatelor aplicatiei Logs

SDK Console interfaa Web pentru serverul de dezvoltare (inspectarea aplicaiilor care ruleaz, instrumente pentru inspectarea datastore-ului, Consola interactiv pentru executarea de instruciuni Python) 30

Crearea unei aplicaii n Python

Deploy ncrcarea proiectului n GAE Trebuie nregistrat un application ID cu AppEngine i modificat fiierul de configurare al aplicaiei Dashboard deschide o consol de administrare App Engine pentru aplicaia rulat
31

Crearea unei aplicatii in Python


O aplicaie App Engine rspunde la cereri Web cu ajutorul request handlers Rutine care accept parametrii de cerere i returneaz rspunsul App Engine hotrte ce request handler s foloseasc pentru o anumit cerere de la un URL cerut Exist un fiier de configurare care face maparea handlerURL Obs: Pentru resursele statice, se poate specifica URL-ul corespunztor pentru aceste fiiere Exist n fiierul de configurare metadate asociate aplicaiei: versiune, ID Atunci cnd se face instalarea n App Engine (deploy) , fiierele aplicaiei (cod, fiiere de configurare, fiiere statice) au asociate aceste metadate O aplicaie poate avea i fiiere de configurare specifice pentru servicii (indexarea din Datastore, task queues, scheduled tasks) acestea sunt asociate aplicaiei n general, i nu sunt specifice unei versiuni
32

Crearea unei aplicatii in Python


Aplicaia afieaz timpul curent
app.yaml fiier de configurare Directorul coninnd app.yaml este directorul root al aplicaiei app.yaml fiier de configurare Directorul coninnd app.yaml este directorul root al aplicaiei Orice cerere pentru aceast aplicatie (orice URL care se potrivete expresiei regulate /.*) va fi tratat de main.py (conine codul pentru requestHandler)

33

Crearea unei aplicaii n Python


Crem un fiier main.py Importm modulul datatime din bibliotecile Python >> dev_appserver.py clock

Comunicarea cu App Engine se face prin protocolul CGI Cnd App Engine primete o cerere pentru aplicaie, App Engine stabilete un runtime environment, cu datele cerute n variabilele de mediu Identific ce script handler va rula (folosete fiierul de configurare) Scriptul va genera un rspuns valid, afind rspunsul
34

Crearea unei aplicaii n Python


Framework-uri Python de lucru cu App Engine Django, web2py, Pylons Figura: request handler folosind webapp Implicit webapp
Genernd proiectul folosind Launcher i fcnd modificri ca n figur, vom obine o nou versiune de main.py

35

Crearea unei aplicatii in Python


Serverul Web Python i Java ofer o consol Web pentru inspectare i debugging, n timp ce se face test pe maina local http://localhost:8080/_ah/admin

36

Crearea unei aplicatii in Python


Consola Interactiva permite crearea de cod Python i vizualizarea rezultatelor

37

Crearea unei aplicatii in Python


nregistrarea Aplicaiei Crearea unui cont de dezvoltator i obinerea unui ID App Engine Administration Console https://appengine.google.com/ Create application/Verify Your Account by SMS Application ID clockpcd=>app.yaml ncrcarea Aplicaiei

38

Crearea unei aplicatii in Python


ncrcarea Aplicaiei

http://clockpcd.appspot.com/

39

3. Informaii suplimentare

40

Consola de administrare

41

Consola de administrare

42

Sumar
GAE permite rularea de aplicaii Web Configurare rapid Scalabilitate Securitate App Engine permite manipularea de cereri HTTP(S) Similar RPC: cerere, procesare, rspuns Configurare rapid Nu este nevoie de optimizarea performanelor Scalabilitate Totul este proiectat s scaleze Lowusage apps: multe aplicaii per host-ul fizic High-usage apps: mai multe hosturi fizice per aplicaie

43

Sumar
Scalabilitate dinamic
Nu este necesar configurarea resurselor de ctre dezvoltator

Securitate
Se asigur securitatea aplicaiilor Constrngeri la nivelul funcionalitilor: fr procese, thread-uri, ncrcarea dinamic a bibliotecilor fr socketuri (se face apel la urlfetch API) fr scriere de fiiere (se folosete datastore) Limitare n utilizarea resurselor 1000 fiiere per aplicaie, dimensiunea maxim a fiecruia 1MB majoritatea cererilor trebuie s utilizeze mai puin de 300 msec din timpul CPU Limitri la numrul de cereri, apeluri de API-uri, emailuri trimise
44

Bibliografie
Lenua Alboaie, Programare Concurent i Distribuit, 2012 Mark C. Chu-Carroll, Code in the Cloud, Programming Google App Engine, 2011 Dan Sanderson, Programming Google App Engine, OReilly, 2010 Implementing and Developing Cloud Computing Applications, DAVID E.Y. SARNA, CRC Press, Taylor&FrancisGroup, 2011 Cloud Computing, Software Engineering Fundamentals, J. Heinzelreiter, W. Kurschl, www.fh-hagenberg.at Guido van Rossum, Google App Engine, Stanford EE380 Colloquium, Nov 5, 2008 http://code.google.com/appengine/ http://www.python.org/download/

45

También podría gustarte