Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

52
Google Developer Group Genova, 4 Ottobre 2013 http://gdg-genova.blogspot.it Massimo Caliman Software Architect http://www.caliman.biz Google App Engine Overview

description

Introduzione a Google App Engine:Cosa è Google App Engine,Linguaggi di programmazione supportati L'ambiente di Runtime,Static File Servers Datastore,Services,Namespaces,Google Accounts, OpenID, e OAuth,Task Queues e Cron Jobs,Developer Tools,Administration Console.

Transcript of Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Page 1: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Google Developer Group Genova, 4 Ottobre 2013http://gdg-genova.blogspot.it

Massimo Caliman Software Architecthttp://www.caliman.biz

Google App Engine Overview

Page 2: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Cosa è Google App EnginePerché ho scelto GAE Perché potresti sceglierloForse hai bisogno di un altra cosaLinguaggi di programmazione supportatiL'ambiente di Runtime

Gli argomenti che tratteremo

Static File ServersDatastoreServicesNamespacesGoogle Accounts, OpenID, e OAuthTask Queues e Cron JobsDeveloper ToolsAdministration Console

Page 3: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Cosa è Google App Engine

Più di un hosting è un application server cioè serve per far "girare" applicazioni web.

Con "applicazione web" intendiamo un’applicazione o un servizio accessibile via Web, di solito con un browser web: e-commerce, CMS, DMS, ERP, social network...

Page 4: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Cosa è Google App Engine

Progettato per● ospitare applicazioni con molti utenti simultanei● essere scalabile

ScalabileQuando un'applicazione è in grado di servire molti utenti contemporaneamente, senza degradare le prestazioni, diciamo che è scalabile.

Page 5: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Cosa è Google App Engine

Scalano automaticamente.

● Mentre sempre più persone utilizzano l'applicazione, App Engine stanzia più risorse per l’ applicazione e gestisce l'utilizzo di tali risorse.

● L'applicazione stessa non bisogno di sapere nulla riguardo le risorse utilizzate.

Page 6: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Cosa è Google App Engine

diverso da web hosting tradizionali o server autogestiti...si paga solo per le risorse che si usano.

● utilizzo della CPU● memoria● larghezza di banda in entrata e in uscita● risorse specifiche per i servizi di App Engine

Page 7: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Cosa è Google App Engine

Ogni sviluppatore ha un certo ammontare di risorse gratuite, abbastanza per piccole applicazioni con poco traffico.App Engine può essere descritto come l’insieme di tre parti:● istanze di applicazioni● data storage (scalabile)● servizi (scalabili)

Page 8: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Cosa è Google App Engine

Page 9: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Perché ho scelto GAE

GAE/J è l’incarnazione di Google App Engine per il linguaggio Java

Page 10: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Perché ho scelto GAE

● Un servlet container● ottimo plug-in per eclipse rende quasi banale e

trasparente il fatto di lavorare con Google App Engine

Page 11: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Perché ho scelto GAE

Come dice il video promo di GAE/J “gli sviluppatori Java sono esigenti”.Google è riuscita a soddisfare le esigenze di molti sviluppatori Java con alcune limitazioni● Classi disponibili: solo quelle in White list● No EJB● Webservice: si ma con accorgimenti.

Page 12: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Perché ho scelto GAE

Un application server gratuito con possibilità di usare JPA e JDO sempre nella versione gratuita, cosa che mitiga l’assenza dell’accesso diretto a mysql (nella versione gratuita).

E’molto meglio di altri hosting economici e mi da accesso a tutti i servizi di Google.

Page 13: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Perché potresti sceglierlo

Supporto gratuito se usi solo certe risorse e fino ad un certo limite delle stesse (più che adeguato ad un piccolo portale/app p.e. 1M di pag/mese)

Per il supporto a pagamento possibilità di mettere un limite al billing (“posso spendere fino a X euro, poi bloccati… niente sorprese a fine mese)

Page 14: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Perché potresti sceglierlo

API google:servizi che Google stessa utilizza per i propri sistemi (Datastore, BigQuery)Supporto di vari linguaggi di programmazione sempre in aumento.

Se App Engine ti sta stretta anche nella versione billabile c’è Google Cloud, una piattaforma Cloud come quelle di Oracle, OVH ecc.

Page 15: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Forse hai bisogno di un altra cosa...● Ogni sistema informatico ha i suoi limiti o meglio vincoli● Voglio Glassfish! Webphere, OracleServer 10g! Voglio gli EJB● Non voglio preoccuparmi della White list● Voglio avere i dati in casa non “sto tranquillo” con la “nuvola”

sopratutto quando il mio datastore passa sopra le Ande o l'Himalaya

Page 16: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Linguaggi di programmazione

Ad oggi i linguaggi di programmazione supportati sono:

● Python● Java● Go (*)● PHP (*)

*[sperimentale al momento della stesura di questa presentazione, non verranno trattati in questa sede]

Page 17: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Python

Gestisce applicazioni scritte in Python 2.7,utilizzando versione personalizzata di CPython, l'interprete ufficiale di Python.

App Engine invoca una applicazione Python utilizzando WSGI, uno standard di interfaccia di applicazione ampiamente supportato.

Page 18: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Python● Un'applicazione può utilizzare la maggior parte della libreria

standard di Python● API e librerie per l'accesso ai servizi e ai dati● Molti framework web open source Python funzionano con App

Engine: Django, web2py, Pyramid e Flask● App Engine include anche un framework leggero proprio,

denominata webapp

Page 19: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

JavaGestisce applicazioni create per Java 7 Virtual Machine (JVM).Una applicazione può essere sviluppato utilizzando il linguaggio di programmazione Java, o altri che che si compilano e vengono eseguiti nella JVM:

● PHP (usando Quercus)● Ruby (utilizzando JRuby)● JavaScript (utilizzando l'interprete Rhino)● Scala● Groovy● Clojure

Page 20: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Java

● L'applicazione accede all'ambiente e servizi utilizzando interfacce basate su standard web di settore, inclusi Java servlet e Java Persistence API (JPA).

● Qualsiasi “tecnologia” Java che funzioni all'interno delle restrizioni sandbox può essere eseguito su App Engine.

● Supporta pienamente Google Web Toolkit (GWT).

Page 21: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

L'ambiente di Runtime

Quando App Engine riceve la richiesta, identifica l'applicazione dal nome di dominio dell'indirizzo.

● Sottodominio appspot.com (fornito gratuitamente con ogni app)

● Sottodominio di un nome di dominio personalizzato registrato e impostato con Google Apps. (p.e. www.caliman.biz)

Page 22: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

L'ambiente di Runtime

App Engine seleziona un server da molti possibili disponibili per gestire la richiesta, effettuando la sua scelta sulla base di quale server ha maggior probabilità di fornire una risposta veloce.

Page 23: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

L'ambiente di Runtime

Il codice dell'applicazione non può accedere al server su cui è in esecuzione in senso tradizionale.

Un'applicazione è in grado di: ● leggere i propri file dal filesystem ● non può scrivere file● non può leggere i file che appartengono ad altre

applicazioni

Page 24: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

L'ambiente di Runtime

Ciò permette ad App Engine di richiedere il server che, a suo avviso, può fornire la risposta più veloce.

Oltre a limitare l'accesso al sistema operativo, l'ambiente di esecuzione limita anche la quantità di tempo e la memoria che una singola richiesta può “occupare”. (60 secondi per restituire una risposta al client)

Page 25: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Static File Servers

La maggior parte dei siti web hanno risorse che non cambiano durante il regolare funzionamento del sito.

● immagini e CSS che descrivono l'aspetto del sito● il codice JavaScript che viene eseguito nel browser● file HTML per le pagine senza componenti dinamici

Page 26: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Static File ServersLa fornitura di questi file non coinvolge codice dell'applicazione...è inutile e inefficiente che siano servite dall’ Application Server.

App Engine fornisce un set separato di server dedicati a fornire static file.

Page 27: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

DatastoreBisogno di memorizzare le informazioni durante la gestione di una richiesta per il recupero durante una successiva richiesta.

Deploy tipico di un piccolo sito web implica un unico server di database per l'intero sito, e uno o più server web che si collegano al database per memorizzare o recuperare i dati.

Page 28: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Datastore

Ma un server centrale è difficile da scalare, una volta raggiunta la sua capacità di connessioni simultanee...

Page 29: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

DatastoreDi gran lunga il tipo più popolare di sistema di memorizzazione dei dati per le applicazioni web in passato (due decenni) è stato il database relazionale.

Altri tipi di sistemi di archiviazione dati sono:

● archivi di dati gerarchici (file system, database XML)

● database ad oggetti

Page 30: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

DatastoreOgni sorta di banca dati ha le sue tecniche per crescere oltre il primo server.

Il sistema di database di Google App Engine assomigliano più a un database ad oggetti.

Page 31: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

DatastoreCome per l'ambiente di runtime, il datastore di App Engine è un'astrazione che permette a GAE di gestire i dettagli della distribuzione e scalabilità dell'applicazione.

Questo permette al codice di concentrarsi su altre cose più importanti.

Page 32: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

ServicesIl rapporto del datastore con l'ambiente di runtime è quella di un servizio:

l'applicazione utilizza una API per accedere a un sistema separato che gestisce tutte le sue esigenze di scalabilità separatamente dalle istanze dell'applicazione.

Google App Engine include diversi altri servizi selfscaling utili per le applicazioni web.

Page 33: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

MemCacheIl servizio MemCache

MemCache un servizio di storage chiave-valore a breve termine.

Page 34: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Blobstore

Sistema di storage per i valori di grandi dimensioni.

Le applicazioni possono utilizzare il Blobstore per memorizzare, gestire e servire file di grandi dimensioni, come:● immagini● video● download di file

Page 35: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

URLFetchApplicazioni App Engine possono accedere ad altre risorse web utilizzando l'URL Fetch.Il servizio fa richieste HTTP ad altri server su Internet, come ad esempio per recuperare pagine o interagire con i servizi web.

Dal momento che i server remoti possono essere lenti a rispondere, le API URL Fetch supporta il recupero in background. (mentre un gestore di richieste fa altre cose)

Page 36: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

MailApplicazioni App Engine possono inviare messaggi utilizzando il servizio di posta.

I messaggi possono essere inviati: ● a nome dell'applicazione ● per conto dell'utente che ha effettuato la richiesta.

Page 37: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

XMPPApplicazioni App Engine possono inviare e ricevere messaggi istantanei da e per servizi di chat che supportano il protocollo XMPP, compreso Google Talk.

Page 38: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

ImageIl servizio di elaborazione delle immagini può fare trasformazioni leggere dei dati di immagine, come ad esempio fare le miniature di foto caricate.

I compiti di elaborazione delle immagini vengono eseguite utilizzando la stessa infrastruttura Google.

Page 39: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Namespaces

Datastore, Blobstore e MemCache insieme memorizzano i dati per un applicazione maè spesso utile partizionare i dati di un app su scala globale. (vedi anche Multitenancy)

Ad esempio, un'applicazione può essere al servizio di più società, in cui ogni azienda deve vedere la propria istanza isolata, e nessuna azienda dovrebbe vedere i dati che appartengono ad altre società.

Page 40: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

NamespacesApp Engine fornisce questa funzionalità di partizionamento a livello di infrastruttura.

Un'applicazione può dichiarare di agire in uno spazio dei nomi chiamando una API.

Tutti i successivi utilizzi di un qualsiasi servizio si limiterà allo spazio dei nomi automaticamente.

L'applicazione non ha bisogno di tenere traccia in quale namespace si trova dopo la dichiarazione iniziale.

Page 41: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Google Accounts, OpenID, e OAuth

App Engine Offre l'integrazione con account Google, il Sistema di account Utente utilizzatoda applicazioni di Google come:● Gmail● Google Docs● Google Calendar

Page 42: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Puoi usare Google Account invece che costruire la tua base dati utenti e di autenticazione.

...Oppure puoi utilizzare un provider OpenID.

App Engine include il supporto speciale per l'utilizzo di provider OpenID utilizzabile con le stesse modalità di un account Google.

Google Accounts, OpenID, e OAuth

Page 43: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

App Engine include il supporto integrato per OAuth, un protocollo che rende possibileagli utenti di concedere il permesso a applicazioni di terze parti di accedere ai dati personali in un altro servizio...

senza dover condividere le credenziali dell'account con terzi.

Google Accounts, OpenID, e OAuth

Page 44: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Task Queues e Cron Jobs

Un'applicazione web deve rispondere a richieste web molto rapidamente, di solito in meno di un secondo e preferibilmente in poche decine di millisecondi.

Questo non dà molto tempo alle applicazione per fare tutto il loro lavoro.

Page 45: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Task Queues e Cron Jobs

Per questo tipo di situazioni, un’ applicazione su App Engine utilizza le code di attività. (task queue)

Consentono di descrivere le attività da svolgere in un secondo momento, al di fuori dell'ambito della richiesta web.

Page 46: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Developer ToolsÈ possibile scaricare il kit di sviluppo software (SDK) per il linguaggio di programmazione prescelto e il sistema operativo del vostro computer.

Sviluppatori Java possono ottenere il Java SDK nella forma di un plug-in per l'ambiente di sviluppo integrato Eclipse.

Sviluppatori Python che utilizzano Windows o Mac OS X possono ottenere il Python SDK nella forma di un'applicazione desktop.

Entrambi gli SDK sono disponibili come strumenti a riga di comando.

Page 47: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Developer Tools

Gli SDK includono anche librerie per test automatizzati, e la raccolta di rapporti sulle prestazioni dell'applicazione.

Page 48: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Administration ConsoleQuando l'applicazione è pronta per il suo debutto in pubblico, si crea un account di amministratore e si fa il deploy su App Engine.

È possibile utilizzare l'account di amministratore per creare e gestire l'applicazione, vedere le sue statistiche di utilizzo delle risorse e dei messaggi di log.

Il tutto con una interfaccia web-based.

Page 49: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Administration ConsoleOgni amministratore può accedere la console e caricare nuove versioni dell'applicazione.

La console consente di accedere ai dati delle prestazioni in tempo reale su come l'applicazione viene utilizzato..

È anche possibile interrogare l'archivio dati per l'applicazione in tempo reale utilizzando una interfaccia web, e controllare lo stato degli indici del datastore.

Page 50: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Administration ConsoleQuando si effettua il deploy di una nuova versione, ad essa è assegnato unidentificativo della versione. (si specifica nel file di configurazione dell'applicazione)

La versione marcata come default sarà quella che risponderà all’indirizzo di produzione o live scelto per la vostra applicazione.Si può accedere alle versioni non predefinite utilizzando un URL speciale che contiene l'identificativo di versione.

Questo vi permette di testare una nuova versione di un'applicazione in esecuzione su App Engine prima che diventi ufficiale.

Page 51: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Administration ConsoleSi utilizza la console per configurare e gestire l'account di fatturazione/billing per la vostra applicazione.

Si imposta un account di fatturazione con carta di credito e account Google.

Il titolare del conto di fatturazione imposta un budget, un importo massimo di denaro che può essere speso per giorno di calendario.

L'applicazione può consumare le risorse fino a quando il vostro budget è esaurito, e si pagano solo per quello che l'applicazione utilizza in realtà.

Page 52: Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Q&A

Domande?Il link per scaricare questa presentazione in formato PDF è raggiungibile dalla sezione “computer science” del portale http://www.caliman.bizPer domande/consigli potete liberamente scrivermi all’indirizzo [email protected]