Google Developer Group Genova, 4 Ottobre 2013
http://gdg-genova.blogspot.it
Massimo Caliman
Software Architect
http://www....
Cosa è Google App Engine
Perché ho scelto GAE
Perché potresti sceglierlo
Forse hai bisogno di un altra cosa
Linguaggi di p...
Cosa è Google App Engine
Più di un hosting è un application server cioè serve per
far "girare" applicazioni web.
Con "appl...
Cosa è Google App Engine
Progettato per
● ospitare applicazioni con molti utenti simultanei
● essere scalabile
Scalabile
Q...
Cosa è Google App Engine
Scalano automaticamente.
● Mentre sempre più persone utilizzano l'applicazione,
App Engine stanzi...
Cosa è Google App Engine
diverso da web hosting tradizionali o server autogestiti...
si paga solo per le risorse che si us...
Cosa è Google App Engine
Ogni sviluppatore ha un certo ammontare di risorse
gratuite, abbastanza per piccole applicazioni ...
Cosa è Google App Engine
Perché ho scelto GAE
GAE/J è l’incarnazione di Google App Engine per il
linguaggio Java
Perché ho scelto GAE
● Un servlet container
● ottimo plug-in per eclipse rende quasi banale e
trasparente il fatto di lavo...
Perché ho scelto GAE
Come dice il video promo di GAE/J “gli sviluppatori Java
sono esigenti”.
Google è riuscita a soddisfa...
Perché ho scelto GAE
Un application server gratuito con possibilità di usare
JPA e JDO sempre nella versione gratuita, cos...
Perché potresti sceglierlo
Supporto gratuito se usi solo certe risorse e fino ad un
certo limite delle stesse (più che ade...
Perché potresti sceglierlo
API google:
servizi che Google stessa utilizza per i propri sistemi
(Datastore, BigQuery)
Suppo...
Forse hai bisogno di un altra
cosa...
● Ogni sistema informatico ha i suoi limiti o meglio vincoli
● Voglio Glassfish! Web...
Linguaggi di programmazione
Ad oggi i linguaggi di programmazione supportati sono:
● Python
● Java
● Go (*)
● PHP (*)
*[sp...
Python
Gestisce applicazioni scritte in Python 2.7,
utilizzando versione personalizzata di CPython,
l'interprete ufficiale...
Python
● Un'applicazione può utilizzare la maggior parte della libreria
standard di Python
● API e librerie per l'accesso ...
Java
Gestisce applicazioni create per Java 7 Virtual Machine (JVM).
Una applicazione può essere sviluppato utilizzando il ...
Java
● L'applicazione accede all'ambiente e servizi
utilizzando interfacce basate su standard web di
settore, inclusi Java...
L'ambiente di Runtime
Quando App Engine riceve la richiesta, identifica
l'applicazione dal nome di dominio dell'indirizzo....
L'ambiente di Runtime
App Engine seleziona un server da molti possibili
disponibili per gestire la richiesta, effettuando ...
L'ambiente di Runtime
Il codice dell'applicazione non può accedere al server su
cui è in esecuzione in senso tradizionale....
L'ambiente di Runtime
Ciò permette ad App Engine di richiedere il server che, a
suo avviso, può fornire la risposta più ve...
Static File Servers
La maggior parte dei siti web hanno risorse che non
cambiano durante il regolare funzionamento del sit...
Static File Servers
La fornitura di questi file non coinvolge codice dell'applicazione...
è inutile e inefficiente che sia...
Datastore
Bisogno di memorizzare le informazioni durante la gestione di una
richiesta per il recupero durante una successi...
Datastore
Ma un server centrale è difficile da scalare, una
volta raggiunta la sua capacità di connessioni
simultanee...
Datastore
Di gran lunga il tipo più popolare di sistema di memorizzazione dei dati
per le applicazioni web in passato (due...
Datastore
Ogni sorta di banca dati ha le sue tecniche per crescere oltre il primo
server.
Il sistema di database di Google...
Datastore
Come per l'ambiente di runtime, il datastore di App Engine è
un'astrazione che permette a GAE di gestire i detta...
Services
Il rapporto del datastore con l'ambiente di runtime è quella di un
servizio:
l'applicazione utilizza una API per ...
MemCache
Il servizio MemCache
MemCache un servizio di storage chiave-valore a breve termine.
Blobstore
Sistema di storage per i valori di grandi dimensioni.
Le applicazioni possono utilizzare il Blobstore per memori...
URLFetch
Applicazioni App Engine possono accedere ad altre risorse web
utilizzando l'URL Fetch.
Il servizio fa richieste H...
Mail
Applicazioni App Engine possono inviare messaggi utilizzando il
servizio di posta.
I messaggi possono essere inviati:...
XMPP
Applicazioni App Engine possono inviare e ricevere messaggi
istantanei da e per servizi di chat che supportano il pro...
Image
Il servizio di elaborazione delle immagini può fare trasformazioni
leggere dei dati di immagine, come ad esempio far...
Namespaces
Datastore, Blobstore e MemCache insieme
memorizzano i dati per un applicazione ma
è spesso utile partizionare i...
Namespaces
App Engine fornisce questa funzionalità di partizionamento a livello di
infrastruttura.
Un'applicazione può dic...
Google Accounts, OpenID, e OAuth
App Engine Offre l'integrazione con account Google, il
Sistema di account Utente utilizza...
Puoi usare Google Account invece che costruire la tua
base dati utenti e di autenticazione.
...Oppure puoi utilizzare un p...
App Engine include il supporto integrato per OAuth, un
protocollo che rende possibile
agli utenti di concedere il permesso...
Task Queues e Cron Jobs
Un'applicazione web deve rispondere a richieste web
molto rapidamente, di solito in meno di un sec...
Task Queues e Cron Jobs
Per questo tipo di situazioni, un’ applicazione su App
Engine utilizza le code di attività. (task ...
Developer Tools
È possibile scaricare il kit di sviluppo software (SDK) per il linguaggio di
programmazione prescelto e il...
Developer Tools
Gli SDK includono anche librerie per test automatizzati,
e la raccolta di rapporti sulle prestazioni
dell'...
Administration Console
Quando l'applicazione è pronta per il suo debutto in pubblico, si crea
un account di amministratore...
Administration Console
Ogni amministratore può accedere la console e caricare nuove
versioni dell'applicazione.
La console...
Administration Console
Quando si effettua il deploy di una nuova versione, ad essa è
assegnato unidentificativo della vers...
Administration Console
Si utilizza la console per configurare e gestire l'account di
fatturazione/billing per la vostra ap...
Q&A
Domande?
Il link per scaricare questa presentazione in
formato PDF è raggiungibile dalla sezione
“computer science” de...
Upcoming SlideShare
Loading in...5
×

Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

399

Published on

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.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
399
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

  1. 1. Google Developer Group Genova, 4 Ottobre 2013 http://gdg-genova.blogspot.it Massimo Caliman Software Architect http://www.caliman.biz Google App Engine Overview
  2. 2. Cosa è Google App Engine Perché ho scelto GAE Perché potresti sceglierlo Forse hai bisogno di un altra cosa Linguaggi di programmazione supportati L'ambiente di Runtime Gli argomenti che tratteremo Static File Servers Datastore Services Namespaces Google Accounts, OpenID, e OAuth Task Queues e Cron Jobs Developer Tools Administration Console
  3. 3. 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...
  4. 4. Cosa è Google App Engine Progettato per ● ospitare applicazioni con molti utenti simultanei ● essere scalabile Scalabile Quando un'applicazione è in grado di servire molti utenti contemporaneamente, senza degradare le prestazioni, diciamo che è scalabile.
  5. 5. 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.
  6. 6. 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
  7. 7. 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)
  8. 8. Cosa è Google App Engine
  9. 9. Perché ho scelto GAE GAE/J è l’incarnazione di Google App Engine per il linguaggio Java
  10. 10. 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
  11. 11. 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.
  12. 12. 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.
  13. 13. 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)
  14. 14. 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.
  15. 15. 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
  16. 16. 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]
  17. 17. 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.
  18. 18. 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
  19. 19. Java Gestisce 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
  20. 20. 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).
  21. 21. 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)
  22. 22. 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.
  23. 23. 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
  24. 24. 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)
  25. 25. 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
  26. 26. Static File Servers La 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.
  27. 27. Datastore Bisogno 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.
  28. 28. Datastore Ma un server centrale è difficile da scalare, una volta raggiunta la sua capacità di connessioni simultanee...
  29. 29. Datastore Di 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
  30. 30. Datastore Ogni 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.
  31. 31. Datastore Come 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.
  32. 32. Services Il 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.
  33. 33. MemCache Il servizio MemCache MemCache un servizio di storage chiave-valore a breve termine.
  34. 34. 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
  35. 35. URLFetch Applicazioni 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)
  36. 36. Mail Applicazioni 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.
  37. 37. XMPP Applicazioni App Engine possono inviare e ricevere messaggi istantanei da e per servizi di chat che supportano il protocollo XMPP, compreso Google Talk.
  38. 38. Image Il 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.
  39. 39. 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à.
  40. 40. Namespaces App 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.
  41. 41. Google Accounts, OpenID, e OAuth App Engine Offre l'integrazione con account Google, il Sistema di account Utente utilizzato da applicazioni di Google come: ● Gmail ● Google Docs ● Google Calendar
  42. 42. 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
  43. 43. App Engine include il supporto integrato per OAuth, un protocollo che rende possibile agli 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
  44. 44. 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.
  45. 45. 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.
  46. 46. 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.
  47. 47. Developer Tools Gli SDK includono anche librerie per test automatizzati, e la raccolta di rapporti sulle prestazioni dell'applicazione.
  48. 48. Administration Console Quando 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.
  49. 49. Administration Console Ogni 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.
  50. 50. Administration Console Quando 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.
  51. 51. Administration Console Si 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à.
  52. 52. Q&A Domande? Il link per scaricare questa presentazione in formato PDF è raggiungibile dalla sezione “computer science” del portale http://www. caliman.biz Per domande/consigli potete liberamente scrivermi all’indirizzo mcaliman@caliman.biz
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×