Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cuprins
Breviar teoretic Google App Engine Google n Cloud
Instrumente (GWT, GAS) Caracteristici Aspecte arhitecturale
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
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
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
25
2. Descrierea aplicaiei
26
28
29
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
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
33
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
35
36
37
38
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