c6_gae

70
2013| Programare Concurenta si Distribuita ©Lenuța Alboaie Google in Cloud Lenuța Alboaie [email protected] Universitatea “Alexandru Ioan Cuza” Facultatea de Informatică Master Ingineria Sistemelor Software 1

Upload: blidisel-alin

Post on 11-Nov-2015

7 views

Category:

Documents


3 download

DESCRIPTION

Google Cloud Platform Explanation

TRANSCRIPT

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google in Cloud

    Lenua [email protected]

    Universitatea Alexandru Ioan Cuza Facultatea de Informatic

    Master Ingineria Sistemelor Software

    1

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Cuprins Google in Cloud

    pasi

    Google App Engine

    Costuri

    Instrumente (GWT, GAS)

    Caracteristici

    Aspecte arhitecturale

    Sandbox

    Runtime environment,

    Static File Servers

    Datastore

    Servicii

    Crearea unei aplicatii in Python pentru GAE

    Concluzii

    2

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google in Cloud| pasi ? Google face managementul celor mai mari ferme de servere din lume

    Initial

    Intreg continutul oferit era disponibil; se baza doar pe suportul oferit de publicitate

    (Servicii: Google Maps, Google Finance, Google Voice)

    Mantra: its free to the consumer

    1GB pentru stocare per cont

    Google Apps free hosting pentru serverul de e-mail (cu propriul nume de domeniu), Google Talk, Google Calendar, Google Drive, Google Sites multi utilizatori business Google Apps pentru Educatie

    Urmind modelul Apple: Apps Market-www.google.com/enterprise/marketplace

    Pentru dezvoltatori: o versiune free de Google App Engine

    http://code.google.com/appengine

    3

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    GoogleGoogle Web Toolkit - GWT

    - Set de instrumente open-source ce permite dezvoltarea de aplicatii Web complexe (front-end JavaScript)

    - Ofera suport incepind cu versiunea de Java SDK 5

    - http://code.google.com/webtoolkit/gettingstarted.html

    - Unde este utilizat: AdWords

    Google Apps Script - https://developers.google.com/apps-script/

    - Ofera posibilitatea automatizarii procesului de business, prin intermediul unor scripturi ce aduc un plus de functionalitatea fata de suita de aplicatii deja existente

    - Legatura aplicatiilor Google cu servicii third party: un script poate trimite email-uri si o invitatie unei liste dintr-o baza de date MySQL

    - Crearea de functii specializate pentru spreadsheet-uri: realizarea de analize complexe asupra datelor din Google spreadsheets

    - Construirea unei interfete utilizator atractiva: o aplicatie interna dintr-o companie poate beneficia de o interfata construita cu GAS

    4

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google

    5

    [https://developers.google.com/appengine/training/intro/whatiscc]2008 lansarea GAE - http://www.youtube.com/watch?v=3Ztr-HhWX1c&feature=youtu.be

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App Engine

    6

    Some users confuse Google App Engine with Amazon's EC2 service. The problem is that this is an apples to oranges comparison. Both operate at different cloud service levels, and each have their strengths and minuses. With App Engine, you only need to worry about your application and let Google take care of hosting and running it for you. With EC2, you're responsible for the app, but also its database server, web server, operating system, monitoring, load-balancing, upgrades, etc. This is the reason why typically, the costs for IaaS services run lower than that of PaaS services because with PaaS, you're "outsourcing" more work/responsibility. Cost estimates usually clouded by not considering the administration overhead when managing the infrastructure yourself. A better "apples-to-apples" comparison would be EC2 to the Google Compute Engine IaaS service.

    [https://developers.google.com/appengine/training/intro/whatisgae]

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App Engine

    7

    [https://cloud.google.com/products/compute-engine/]

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App Engine

    Caracteristici Permite rularea (host) de aplicatii Web folosind infrastructura Google

    App Engine Does One Thing Well [Rossum, Google]

    A nu se intelege rent a piece of a server, deoarece aplicatia nu este gazduita pe un singur server

    Conceptual Google App Engine este un PaaS

    Aspect unic la Google: aplicatiile GAE ruleaza in acelasi mod, pe aceeasi infrastructura

    Controlul?

    Il are Google

    Fara griji legate de infrastructura, load balancing, managementul stocarii

    Folosind Google Apps aplicatia poate folosi propriul domeniu (http://www.ex.com) sau poate folosi un nume din domeniul appspot.com

    8

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineCaracteristici

    GAE suporta aplicatii scrise in diferite limbaje (vezi slide-urile urmatoare)

    Dezvoltatorii au acces la tehnologii de stocare de tipul GFS (Google File System), 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. Google App 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.

    9

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App Engine

    10

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App Engine

    11

    Cloud Applications

    Cloud Software Environment

    Cloud Software Infrastructure

    Storage CommunicationsComputational

    Resources

    Software Kernel

    Firmware / Hardware

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App Engine

    12

    Web

    interface

    Request

    Respon

    se Web page

    transactions

    Result

    Sandbox

    Runtimeenvironment

    DatastoreMemcache

    Browser

    URL fetch or E-mail

    More services

    Schedule routine

    Static Storage

    HTTP / HTTPS

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App Engine

    13

    Aspecte arhitecturale

    Sandbox - Application environment, Runtime environment, Static File Servers, Datastore, Servicii,

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App Engine

    14

    Web

    interface

    Request

    Respon

    se Web page

    transactions

    Result

    Sandbox

    Runtimeenvironment

    DatastoreMemcache

    Browser

    URL fetch or E-mail

    More services

    Schedule routine

    Static Storage

    HTTP / HTTPS

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App Engine

    15

    Application environment - Sandbox

    Aplicatiile ruleaza intr-un mediu sigur, dar care asigura un acces limitat la sistemul de operare

    Este independent de nivelul hardware, sistem de operare sau localizarea fizica a serverului Web

    Aplicatiile nu pot scrie in sistemul de fisiere, pot doar citi ceea ce s-a incarcat prin codul aplicatiei

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineApplication environment

    Mecanism:

    La primirea cererii, AppEngine selecteaza serverulestimat ca fiind cel mai rapid, trimite cererea la aplicatie si returneaza clientului raspunsul

    Obs. Nu se pastreaza starea intre cereri => AppEngineasigura acelasi tratament tuturor cererilor, prindistribuirea traficului intre servere

    Aplicatiile pot accesa doar propriile fisiere din sistemulde fisiere, si nu ale altor aplicatii;

    Aplicatiile pot vedea variabilele de mediu setate de AppEngine dar manipularea acestora nu este neaparatpersistenta intre cereri

    Aplicatia trebuie sa foloseasca GAE datastorepentru a asigura persistenta intre cereri

    16

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineApplication environment

    Aplicatiile nu pot accesa facilitatile de retea la nivel hardware, dar se permiterealizarea de operatii de retea prin utilizarea serviciilor

    O aplicatie poate accesa alte computere doar prin serviciu de email sau URLfetch. Conectarea la o aplicatie se poate realiza doar prin cereri HTTP(HTTPs)folosind porturile standard.

    Face limitari privind utilizarea CPU, a memoriei consumate per cerere

    La o cerere se poate raspunde intr-un timp de pana la 60 de secunde

    Obs. App Engine este optimizat pentru aplicatii care raspund in mai putinde o secunda

    Daca aplicatia utilizeaza mai multi cicli de procesor, App Engine o vaincetini pentru a nu fi afectate performantele celorlalte aplicatii careruleaza pe aceeasi masina

    17

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineRuntime environment

    Aplicatiile nu pot scrie in sistemul de fisiere in nici unul din mediile de rularefurnizate.

    O aplicatie poate citi fisierele, dar doar cele care au fost incarcate de aplicatie

    Aplicatia trebuie sa foloseasca datastore, memcache pentru accesarea datelorpersistente

    Obs. Mediul Python 2.7 permite citirea, scrierea si modificarea bytecode

    Python runtime

    Se foloseste o versiune a interpretorului cPython

    Mecanism general: App Engine invoca o aplicatie Python folosind CGI

    Framework-uri Python cum ar fi Django, web2py, Pylons functioneaza cu App Engine

    AppEngine include si un framework propriu Python

    8 martie 2013, se ofera doar suport pentru Python 2.5 (deprecated) http://googleappengine.blogspot.ro/2013/03/python-25-thanks-for-good-times.html)

    18

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineRuntime environment

    GAE Java runtime environment

    O aplicatie poate fi dezvoltata folosind limbajul Java sau alte limbaje care folosesc JVM ( PHP folosind Quercus, Ruby folosind Jruby, JavaScript interpretorul Rhino, Scala, Groovy

    Se pot construi aplicatii folosind tehnologii Java standard (servleturi Java, limbajul de programare Java,)

    Go Runtime

    Ruleaza ultima versiune de Go

    SDK include compilatorul Go si librariile standard

    Se furnizeaza un GoAPI pentru majoritatea serviciilor App Engine (Storage, Schedule, Communication, .)

    Se pot folosi biblioteci thirt-party, conditia e ca acestea sa fie implementate doar in Go

    19

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineRuntime environment

    PHP runtime environment (! .available as Preview features)

    Se creaza aplicatia folosind PHP

    App Engine PHP SDK-ul include: server web pentru testarea PHP locala; serverul simuleaza serviciile AppEngine (inclusiv versiune locala a Google Accounts si abilitatea de a trimite mailuri de pe computerul local folosind App Engine API)

    Obs. Este nevoie de python 2.7, deoarece serverul de dezvoltare este o aplicatie python

    Exista SDK pentru platform ca: Linux, MacOS, Windows

    Se integreaza aplicatia App Engine cu Google Accounts pentru autentificare

    Se poate folosi Google Cloud SQL pentru stocarea de date

    Se incarca aplicatia in App Engine

    20

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineRuntime environment

    Aspecte privind invocarea unei aplicatii:

    Mecanism: cererea este rutata la server, aplicatia este pornita, se creazaraspunsul, raspunsul este returnat clientului

    Fiecare mediu ruleaza propriul interpretor (JVM sau Python) respectindrestrictiile sandbox (e.g. incercarea de a folosi vre-o facilitate a limbajului saua librariilor existente, care sa acceseze alte resurse decat cele permise vaconduce la o exceptie)

    Utilizarea pentru fiecare cerere a unui server diferit

    => avantaj: scalare

    => dezavantaj: este consumatoare de timp operatia de crea o instanta perfiecare cerere

    Solutie:

    - AppEngine atenuiaza costurile de pornire prin mentinerea aplicatiei inmemoria serverului, maxim posibil si reutilizarea inteligenta a serverelor

    - toate serverele au mediile runtime preincarcate inainte ca cererea saajunga la server

    21

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App Engine

    Storage Static

    Spatiu static (fisiere sursa a serviciilor Web, fisiere de configurare, imagini de background,.)

    Blobstore

    Contine fisiere mai mari de 1MB ( imagini, video sau audio, etc)

    Dinamic

    Datastore

    Fiecare entitate nu depaseste 1MB

    Serviciu furnizat in maniera dynamic provisioning ce suporta operatii dinamice de inserare/update/delete a datelor

    Memcache

    Folosit pentru a creste viteza interogarilor din datastore

    22

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineStatic File Servers

    Multe site-uri web dispun de resurse care nu sufera schimbari in timpul operatiilor obisnuite asupra site-ului (e.g. imagini, fisiere CSS, cod JavaScript, pagini HTML cu continut static)

    Sunt denumite static files

    Furnizarea acestor resurse nu implica cod de aplicatie => nu necesita servere de aplicatii

    AppEngine furnizeaza servere dedicate care furnizeaza acest tip de continut - Static File Servers

    Pentru clientul final o astfel de resursa statica este similara cu orice alta resursa

    Dezvoltatorii pot configura cateva specte privind modul de furnizare al resurselor statice (URL-uri, content types, instructiuni pentru browsere pentru a mentine copii ale fisierelor in cache, etc.)

    23

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineStorage

    Blobstore

    Binary large objects care sunt de dimensiune mai mare decat dimensiune permisa pentru obiectele din serviciul datastore (video, img,)

    Sunt create prin incarcarea de fisiere ca rezultat al cererilor HTTP

    24

    Blobstore

    Text

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineStoarge

    Datastore

    O aplicatie AppEngine stocheaza datele intr-una sau mai multe entitati de stocare (datastore entities sau data objects)

    Entitatea are asociate properties de tipul name value

    25

    entity := Dog

    Age:= 1

    Weight := 3 KG

    Status:= awake

    Name:= Hamsa

    photo

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineStoarge

    Datastore

    Proprietatile pot avea un anumit tip

    Constructorul proprietatii poate defini

    Numele

    Valoarea implicita

    O lista de valori

    26

    from google.appengine.ext import db

    class Dog(db.Model):

    name = db.StringProperty(default=dog)age = db.IntegerProperty(required=True)

    weight = db.IntegerProperty(indexed=False)

    status = db.StringProperty( choices = [awake, eat, play] )photo = db.BlobProperty()

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineStoarge

    Datastore

    Proprietati limitari

    Cel mai scurt string are lungimea < 500 de caractere

    O lista nu poate fi vida

    Text si Blob au cel putin 1MB ca dimensiune

    O entitate are o cheie unica (key) care e furnizata de aplicatie sau de App Engine (dezvoltatorul decide)

    Aceasta cheie nu este o proprietate elementara, ci este un aspect independent al entitatii

    O cheie nu poate fi schimbata dupa ce entitatea a fost creata

    Cunoscand cheia, se pot face interogari

    Cunoscand tipul entitatii si cheia asociata se poate determina unde este entitatea stocata in intreaga colectie de servere

    27

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineStoarge

    Datastore

    App = numele aplicatiei care stocheaza instanta, kind = tipul instantei (string); id= id-ul instantei; name = numele instantei;

    28

    Entity

    Property A

    Property B

    Key

    App

    Kind

    Name

    Id

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineStoarge

    Datastore

    29

    entity := Dog

    Age:= 1

    Weight := 3 KG

    Status:= awake

    Name:= Hamsa

    photo

    app = Romaniakind = Dogname = F.dogs.Romania.Iasi.2012-03-20.100 id = hamjb3HAMGVycgsHamV2003sdag

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineStoarge

    Datastore

    Operatii:

    put(key) upload sau update

    delete(key) stergerea unei entitati

    Stergerea unei entitati nu modifica valorile unei Key din datastore, care referea acea entitate

    ? Similitudine cu baze de date relationale ( ? entities = rows din tabele; ?properties = columns)

    Diferente:

    O entitate de un anumit tip poate avea proprietati diferite fata de o alta entitate de acelasi tip

    O entitate poate avea o proprietate cu acelasi nume dar de tip diferit, fata de o alta entitate de acelasi tip ca ea

    => entitatile din datastore sunt schemaless => flexibilitate marita & provocari in mentenanta

    30

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineInterogari si indexari

    Datastore foloseste indexes pentru fiecare interogare facuta de aplicatie

    Exemple de tipuri de interogari:

    Dupa proprietatile entitatii si se va obtine lista entitatilor ordonate dupa valoarea proprietatii

    Filtrare si sortare dupa chei

    31

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineInterogari si indexari

    Mecanism intern de executie a interogarilor

    Baze de date relationale:

    interogarile sunt planificate si executate in timp real

    App Engine

    Fiecare interogare are un index de corespondenta mentinut in datastore

    Atunci cand aplicatia realizeaza o interogare, datastore gaseste indexul corespunzator acelei interogari, scaneaza pana la primul rand care se potriveste cu interogarea, si returneaza entitatea pentru fiecare rand consecutiv din index, procesul repetandu-se pana la primul rand care nu se potriveste cu interogarea

    Obs. App Engine trebuie sa stie dinainte ce interogari va face aplicatia; nu trebuie sa stie apriori valorile filtrelor, dar trebuie sa stie tipul entitatii dupa care se face interogarea, proprietatile dupa care se doreste filtrarea sau sortarea etc.

    32

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineInterogari si indexari

    App Engine furnizeaza un set de indecsi pentru interogari simple, bazandu-se pe ce proprietati si tipuri de entitati exista

    Pentru interogari complexe, o aplicatie trebuie sa includa in configuratia sa specificatii pentru indecsi

    App Engine SDK ajuta la producerea acestor fisiere de configurare (e.g. supervizarea interogarilor pe care dezvoltatorul le-a realizat in timpul dezvoltarii aplicatiei folosind serverul de dezvoltare pe computerul local. La incarcarea aplicatiei, datastore va crea indecsi pentru fiecare interogare a aplicatiei realizata in faza de dezvoltare)

    Obs. Indecsii se pot configura si manual

    Atunci cind aplicatia creaza noi entitati, si actualizeaza pe cele existente, datastore actualizeaza fiecare index

    => interogarile sunt rapide

    33

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineTranzactii

    Cand o aplicatie are mai multi clienti care realizeaza operatii de citire/scriere simultana asupra acelorasi date => necesitatea mentinerii consistentei datelor

    Cand o aplicatie actualizeaza proprietatile unei entitati, App Engine asigura update-ul complet sau operatia de update va da eroare update-ul unei entitati se realizeaza printr-o tranzactie (Proprietate: orice tranzactie este atomica)

    Cand o aplicatie doreste operatii cu mai multe entitati intr-o singura tranzactie, aplicatia va crea un entity group, asupra caruia App Engine va supraveghea realizarea tranzactiilor

    App Engine utilizeaza optimistic concurrency control aplicatia trebuie sa incerce realizarea unei tranzactii de mai multe ori inainte de a returna eroare

    Citirea unei entitati nu poate esua din cauza concurentei, aplicatia avand acces la cea mai stabila stare a entitatii

    34

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineServicii Stateful services APIs

    Blobstore

    Datastore

    Memcache (memory cache) este un serviciu de stocare cheie-valoare

    Principalul avantaj fata de datastore: rapiditate in operatiile de stocare si regasire

    Stocheaza valori in memorie si nu pe disk

    Este distribuit ca si datastore, deci fiecare cerere vede aceeasi pereche cheie-valoare

    Nu este persistent: daca un server esueaza, memoria este stearsa

    Este utilizat pentru cash-ul rezultatelor celor mai frecvente interogari sau calcule

    35

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineServicii Stateful services APIs

    Memcache (memory cache) limitari:

    Dimensiunea maxima 1MB

    Datele sunt stocate si in datastore

    Ofera multe metode: Set, get, delete, add, replace, offset, incr, sau flush

    36

    flush_all()

    # Deletes everything in memcache.

    incr(key, delta=1, namespace=None, initial_value=None)

    # Atomically increments a key's value.

    ..

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineServicii Statless service APIs

    URL Fetch

    Permite aplicatiilor App Engine sa acceseze alte resurse web (cereri HTTP(S) pentru obtinerea de pagini web, interactiune cu servicii Web)

    Deoarece serverele remote pot raspunde greu, URL Fetch suporta fetching URL in background, in timp ce aplicatiile pot efectua si alte operatii

    Obs. O astfel de operatie trebuie sa existe doar pe timpul de viata al aplicatiei

    Aplicatia poate seta un deadline, pentru operatia de fetch => apelul se va incheia daca raspunsul nu este primit in timpul corespunzator

    Mail

    Aplicatiile pot trimite si primi mesaje sub forma de cereri HTTP initiate de App Engine si trimise catre aplicatie

    Exemplu: notificarea utilizatorilor, confirmarea actiunilor utilizatorilor, validarea informatiilor de contact, etc.

    37

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineServicii Statless service APIs

    XMPP

    Aplicatiile suporta mesageria instanta, permitind colaborarea cu servicii de chat care suporta protocolul XMPP (inclusiv Google Talk)

    Images

    Permite realizarea de operatii asupra imaginilor (redimensionare, crop, flip, )

    Google Accounts

    App Engine permite integrarea cu Google Accounts (Google Mail, Google Docs, Google Calendar)

    Foarte utila pentru membrii unei organizatii care doresc accesul la o anumita aplicatie dar si la email, calendar, documente etc.

    Prospective search (experiment) metoda de cautare in care prima data este data cererea si apoi informatia pentru rezultat este obtinuta din date real-time (difera de traditionala retrospective search (motoarele de cautare) in care informatiile pentru rezultate sunt obtinute si apoi interogate)

    38

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineServicii Statless service APIs

    Task Queues si Cron Jobs

    Ideea: o aplicatie web trebuie sa ofere rezultatul cat mai rapid

    Problema: uneori sunt multe operatii de facut, care necesita mai mult timp

    Solutia: task queues

    Permite definirea de task-uri care se pot executa in background atunci cand resursele sistemului permite acest lucru

    Queues - asigura faptul ca aceste taskuri sunt executate pana se obtine succes

    Scheduled task (sau cron jobs)

    Permite executarea de task-uri la un anumit moment

    Utile pentru mentenanta periodica (update a unor date din cache la fiecare 10 minute, ) sau trimiterea de mesaje de notificare in fiecare zi

    39

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App Engine

    40

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App Engine

    41

    [http://www.slideshare.net/rajdeep/introduction-to-google-app-engine-presentation]

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App Engine

    42

    [http://www.slideshare.net/rajdeep/introduction-to-google-app-engine-presentation]

    Figura. Pasii dezvoltarii unei aplicatii

    (eng. Application lifecycle)

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App Engine

    43

    [http://www.slideshare.net/rajdeep/introduction-to-google-app-engine-presentation]

    Figura. Pasii dezvoltarii unei aplicatii

    (eng. Application lifecycle)

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineInstrumente pentru dezvoltatori

    Java se poate downloda Java SDK in format plugin pentru Eclipse

    Python Pyton SDK sub forma unei aplicatii GUI

    Ambele SDK-uri sunt disponibile si ca arhive zip

    Fiecare SDK contine un server Web de dezvoltare care permite rularea de aplicatii in mod local, si care simuleaza runtime environment, datastore si serviciile.

    Obs. Se poate utiliza Eclipse pentru dezvoltarea aplicatiilor Python folosind PYDev (extensie Eclipse care include un debugger Python interactiv)

    Fiecare SDK include un instrument pentru interactiunea cu aplicatiile rulind in GAE

    Primul pas: incarcara codului aplicatiei in GAE

    Descarcarea de log-uri corespunzatoare aplicatiei live etc.

    44

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App Engine

    Crearea unei aplicatii folosind Python SDK

    - Descarcarea unui App Engine SDK in functie de limbajul dorit

    - http://code.google.com/appengine/

    - Fiecare SDK contine un server web de test

    - Se simuleaza conditiile din GAE (sandbox, serviciile existente)

    - Deoarce SDK pentru Python a fost dezvoltat inainte de cel de Java, anumite facilitati se gasesc doar in primul

    http://www.python.org/download/

    - Obs. The Python SDK is not compatible with Python 3

    >> dev_appserver.py --help

    45

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineCrearea unei aplicatii in Python|Preliminarii

    - Pentru Windows si MacOS, Python SDK include o aplicatie Google App Engine Launcher permite mangementul proiectelor Python folosind o interfata grafica

    46

    -Run - pornirea serverului Web de dezvoltare

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineCrearea unei aplicatii in Python|Preliminarii

    - Browse vizualizarea rezultatelor aplicatiei

    - Logs

    - SDK Console interfata Web pentru serverul

    de dezvoltare (inspectarea aplicatiilor care ruleaza,

    instrumente pentru inspectarea datastore-ului,

    Consola interactiva pentru executarea de instructiuni

    Python)

    47

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineCrearea unei aplicatii in Python|Preliminarii

    - Dashboard deschide o consola de administrare App Engine pentru aplicatia rulata

    - Deploy incarcarea proiectului in GAE

    - Trebuie inregistrat un application ID cu AppEngine si modificat fisierul de configurare a aplicatiei

    48

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App Engine

    49

    [http://www.slideshare.net/rajdeep/introduction-to-google-app-engine-presentation]

    Figura. Pasii dezvoltarii unei aplicatii

    (eng. Application lifecycle)

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineCrearea unei aplicatii in Python|Preliminarii

    - O aplicatie App Engine raspunde la cereri Web cu ajutorul request handlers

    - Rutine care accepta parametrii de cerere si returneaza raspunsul

    - App Engine hotaraste ce request handler sa foloseasca pentru o anumita cerere de la un URL cerut

    - Exista un fisier de configurare care face maparea handler URL

    - Obs. Pentru resursele statice (vezi slide anterior) , se poate specifica URL-ul corespunzator pentru aceste fisiere

    - Exista in fisierul de configurare metadate asociate aplicatiei: versiune, ID

    - Atunci cand se face instalarea in App Engine (deploy) , fisierele aplicatiei (cod, fisiere de configurare, fisierele statice) au asociate aceste metadate

    - O aplicatie poate avea si fisiere de configurare specifice pentru servicii (indexarea din datastore, task queues, scheduled tasks) acestea sunt asociate aplicatiei in general, si nu sunt specifice unei versiuni

    50

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineCrearea unei aplicatii in Python

    - Aplicatia afiseaza timpul curent

    51

    app.yaml - fisier de configurareObs. Directorul continind app.yaml estedirectorul root al aplicatiei

    Orice cerere pentru aceasta aplicatie(orice URL care se potriveste expresieiregulate /.*) va fi tratata de main.py (contine codul pentru requestHandler)

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineCrearea unei aplicatii in Python

    - Cream un fisier main.py

    - Comunicarea cu App Engine se face prin protocolul CGI

    - Cand App Engine primeste o cerere pentru aplicatie, App Engine stabileste un runtime environment, cu datele cerute in variabilele de mediu

    - Identifica ce script handler va rula (foloseste fisierul de configurare)

    - Scriptul va genera un raspuns valid, afisand raspunsul

    Obs. In exemplul dat simulam o implementare a protocolului CGI, rar intalnita in dezvoltarea de aplicatii

    52

    -Importam modulul datatime din bibliotecile Python

    >>dev_appserver.py clock

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App Engine

    53

    [http://www.slideshare.net/rajdeep/introduction-to-google-app-engine-presentation]

    Figura. Pasii dezvoltarii unei aplicatii

    (eng. Application lifecycle)

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineCrearea unei aplicatii in Python

    - Framework-uri Python de lucru cu App Engine

    - Django, web2py, and Pylons

    - Implicit webapp

    54

    Generandproiectul folosindLauncher sifacand modificarica in figura, vom obtineo noua versiune demain.py

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineCrearea unei aplicatii in Python

    - In python 2.7 se permite rularea direct a aplicatiei (fara a se mai utiliza adapterul run_wsgi_app care ruleaza programul ca un script CGI)

    55

    Exemplu de aplicatie folosindwebapp2 (vezi arhiva cursului)

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineCrearea unei aplicatii in Python

    - Serverul Web Python si Java ofera o consola Web pentru inspectarea si debugging, in timp ce se face test pe masina locala

    http://localhost:8080/_ah/admin

    56

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineCrearea unei aplicatii in Python

    - Consola Interactiva permite crearea de cod Python si vizualizarea

    rezultatelor

    57

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineCrearea unei aplicatii in Python

    - Inregistrarea Aplicatiei

    - Crearea unui cont de dezvoltator si obtinerea unui ID

    - App Engine Administration Console

    https://appengine.google.com/

    - Create application/ Verify Your Account by SMS

    - Application ID cloudcomputingclock=> app.yaml

    - Incarcarea Aplicatiei

    58

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineCrearea unei aplicatii in Python

    - Incarcarea Aplicatiei

    - http://clockpcd.appspot.com/

    59

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineConsola de administrare

    60

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineConsola de administrare

    61

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineConcluzii

    GAE permite rularea de aplicatii web

    Configurare rapida

    Scalabilitate

    Securitate

    GAE permite rularea de aplicatii web

    App Engine permite manipularea de cereri HTTP(S)

    Similar RPC: cerere, procesare, raspuns

    Functioneaza bine pentru AJAX si alte servicii

    Configurare rapida

    Nu este nevoie de optimizarea performantelor

    Scalabilitate

    Totul este proiectat ca sa scaleze

    Low usage apps: multe aplicatii per host-ul fizic

    High- usage apps: mai multe hosturi fizice per aplicatie

    62

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App Engine

    VMWare si Google colaboreaza (din mai 2010)

    Integrarea GWT cu framework-ul Spring

    Colaborarea VMWare si SalesForce => construirea de aplicatii business ce sunt incarcate in GAE pentru Business, mediul VMWare (suita vCloud, infrastructura vSphere, sau VMforce din Salesforce)

    63

    In mai 2010 Google a anuntat Google Apps pentru business

    Au fost introduse noi facilitati: administrare centralizata, SLA (Service Level Agreement) 99.9%, plata lunara, premium developer support ($1000/luna), acces la BD SQL (Google Cloud SQL - https://developers.google.com/cloud-sql/) si suport pentru SSL

    GAE, GWT, GAS (Google Apps Script) => un pas mare catre dezvoltareenterprise in cloud & competitor pentru Amazon WS

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineConcluzii

    Scalabilitate dinamica

    - nu este necesara configurarea resurselor necesare de catre dezvoltator

    Securitate

    Se asigura securitatea aplicatiilor

    Constrangeri la nivelul functionalitatilor:

    fara procese, thread-uri, incarcarea dinamica a bibliotecilor

    fara socketuri (se face apel la urlfetch API)

    fara scriere de fisiere (se foloseste datastore)

    Limitare in utilizarea resurselor

    1000 fisiere per aplicatie, dimensiunea maxima a fiecaruia 1MB

    majoritatea cererilor trebuie sa utilizeze mai putin de 300msec din timpul CPU

    Limitari la numarul de cereri, apeluri de API_uri, emailuri trimise

    64

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineDiscutii

    De ce nu LAMP?

    Linux, Apache, MySql/PostgreSQL, Pyton/Perl/PHP/Ruby

    Managementul se face cu dificultate

    Configurare

    Backup si recovery

    Mangementul spatiului de pe disk

    Esecuri hardware

    Update-uri software, patch-uri de securitate

    Reproiectarea unei baze de date pentru a satisface cerintele in crestere

    Google : We carry pagers so you dont have to

    65

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google App EngineCosturi: 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.

    http://code.google.com/appengine/docs/billing.html

    Exemplu: Costuri pentru operatii in datastore

    Martie 2013 Martie 2014

    66

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Google in Cloud

    I like what I get is the same thing as I get what I like!

    The March Hare, in Alices Adventures in Wonderland by Lewis Carroll

    67

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Bibliografie 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&Francis Group, 2011

    Cloud Computing, Software Engineering Fundamentals, J. Heinzelreiter, W. Kurschl, www.fh-hagenberg.at

    [Rossum, 2008] Guido van Rossum, Google App Engine, Stanford EE380 Colloquium, Nov 5, 2008

    http://code.google.com/appengine/

    http://www.python.org/download/

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    Rezumat Google in Cloud

    pasi

    Google App Engine

    Costuri

    Instrumente (GWT, GAS)

    Caracteristici

    Aspecte arhitecturale

    Sandbox

    Runtime environment,

    Static File Servers

    Datastore

    Servicii

    Crearea unei aplicatii in Python pentru GAE

    Concluzii

    69

  • 2013| Programare Concurenta si Distribuita Lenua Alboaie

    ntrebri?

    70