SlideShare a Scribd company logo
Google Developer Group Genova, 4 Ottobre 2013
http://gdg-genova.blogspot.it
Massimo Caliman
Software Architect
http://www.caliman.biz
Google App Engine Overview
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
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...
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.
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.
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
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)
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 lavorare con Google App
Engine
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.
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.
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)
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.
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
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]
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.
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
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
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).
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)
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.
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
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)
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
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.
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.
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 decenni) è stato il database
relazionale.
Altri tipi di sistemi di archiviazione dati sono:
● archivi di dati gerarchici (file system, database XML)
● database ad oggetti
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.
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.
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.
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 memorizzare,
gestire e servire file di grandi dimensioni, come:
● immagini
● video
● download di file
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)
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.
XMPP
Applicazioni App Engine possono inviare e ricevere messaggi
istantanei da e per servizi di chat che supportano il protocollo XMPP,
compreso Google Talk.
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.
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à.
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.
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
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
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
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.
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.
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.
Developer Tools
Gli SDK includono anche librerie per test automatizzati,
e la raccolta di rapporti sulle prestazioni
dell'applicazione.
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.
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.
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.
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à.
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

More Related Content

Viewers also liked

Foundation Gelding
Foundation GeldingFoundation Gelding
Foundation Gelding
Robbie Hill
 
Health care resume_marcus_wesley_system_analyst[1][1]
Health care resume_marcus_wesley_system_analyst[1][1]Health care resume_marcus_wesley_system_analyst[1][1]
Health care resume_marcus_wesley_system_analyst[1][1]
Marcus Wesley
 
About iWV
About iWVAbout iWV
About iWV
Kevin B.K. Tan
 
Marcus Wesley's Current Resume
Marcus Wesley's Current ResumeMarcus Wesley's Current Resume
Marcus Wesley's Current Resume
Marcus Wesley
 
See with your eyes open
See with your eyes openSee with your eyes open
See with your eyes open
creativess
 
App vs mobile website - Intervento di Claudio Tonti (Websolute) a Branding 2....
App vs mobile website - Intervento di Claudio Tonti (Websolute) a Branding 2....App vs mobile website - Intervento di Claudio Tonti (Websolute) a Branding 2....
App vs mobile website - Intervento di Claudio Tonti (Websolute) a Branding 2....
Branding 2.0
 
DDAY2014 - Costruire una app mobile con Ionic, AngularJS ed ovviamente Drupal
DDAY2014 - Costruire una app mobile con Ionic, AngularJS ed ovviamente DrupalDDAY2014 - Costruire una app mobile con Ionic, AngularJS ed ovviamente Drupal
DDAY2014 - Costruire una app mobile con Ionic, AngularJS ed ovviamente Drupal
DrupalDay
 
Smau milano 2012 arena social media davide-senatore
Smau milano 2012   arena social media davide-senatoreSmau milano 2012   arena social media davide-senatore
Smau milano 2012 arena social media davide-senatoreSMAU
 
Smau milano 2012 arena social media massimo-grava
Smau milano 2012   arena social media massimo-gravaSmau milano 2012   arena social media massimo-grava
Smau milano 2012 arena social media massimo-gravaSMAU
 
PhoneGap ovvero lo Sviluppo Mobile Nativo con HTML, CSS e JavaScript
PhoneGap ovvero lo Sviluppo Mobile Nativo con HTML, CSS e JavaScriptPhoneGap ovvero lo Sviluppo Mobile Nativo con HTML, CSS e JavaScript
PhoneGap ovvero lo Sviluppo Mobile Nativo con HTML, CSS e JavaScriptFrancesca1980
 
Marcus Wesley's Current Resume
Marcus Wesley's Current ResumeMarcus Wesley's Current Resume
Marcus Wesley's Current Resume
Marcus Wesley
 
Marcus Wesley's Resume
Marcus Wesley's ResumeMarcus Wesley's Resume
Marcus Wesley's Resume
Marcus Wesley
 
iOS, Android O Windows Phone? La piattaforma migliore per il tuo target.
iOS, Android O Windows Phone? La piattaforma migliore per il tuo target.iOS, Android O Windows Phone? La piattaforma migliore per il tuo target.
iOS, Android O Windows Phone? La piattaforma migliore per il tuo target.
DuckMa
 
Why consider Viet Nam for investment 2013
Why consider Viet Nam for investment 2013Why consider Viet Nam for investment 2013
Why consider Viet Nam for investment 2013
Tom Vovers
 
Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLSinergia Totale
 
How to retain and motivate Staff DaNang December 2013
How to retain and motivate Staff DaNang December 2013How to retain and motivate Staff DaNang December 2013
How to retain and motivate Staff DaNang December 2013
Tom Vovers
 
Marcus Wesley's Current Resume
Marcus Wesley's Current ResumeMarcus Wesley's Current Resume
Marcus Wesley's Current Resume
Marcus Wesley
 
Resume_Atlanta_Wesley11_25_2014_1_1[1]
Resume_Atlanta_Wesley11_25_2014_1_1[1]Resume_Atlanta_Wesley11_25_2014_1_1[1]
Resume_Atlanta_Wesley11_25_2014_1_1[1]
Marcus Wesley
 
Reporte de práctica
Reporte de prácticaReporte de práctica
Reporte de práctica
chelanda
 

Viewers also liked (20)

Foundation Gelding
Foundation GeldingFoundation Gelding
Foundation Gelding
 
Health care resume_marcus_wesley_system_analyst[1][1]
Health care resume_marcus_wesley_system_analyst[1][1]Health care resume_marcus_wesley_system_analyst[1][1]
Health care resume_marcus_wesley_system_analyst[1][1]
 
About iWV
About iWVAbout iWV
About iWV
 
Marcus Wesley's Current Resume
Marcus Wesley's Current ResumeMarcus Wesley's Current Resume
Marcus Wesley's Current Resume
 
See with your eyes open
See with your eyes openSee with your eyes open
See with your eyes open
 
App vs mobile website - Intervento di Claudio Tonti (Websolute) a Branding 2....
App vs mobile website - Intervento di Claudio Tonti (Websolute) a Branding 2....App vs mobile website - Intervento di Claudio Tonti (Websolute) a Branding 2....
App vs mobile website - Intervento di Claudio Tonti (Websolute) a Branding 2....
 
DDAY2014 - Costruire una app mobile con Ionic, AngularJS ed ovviamente Drupal
DDAY2014 - Costruire una app mobile con Ionic, AngularJS ed ovviamente DrupalDDAY2014 - Costruire una app mobile con Ionic, AngularJS ed ovviamente Drupal
DDAY2014 - Costruire una app mobile con Ionic, AngularJS ed ovviamente Drupal
 
Smau milano 2012 arena social media davide-senatore
Smau milano 2012   arena social media davide-senatoreSmau milano 2012   arena social media davide-senatore
Smau milano 2012 arena social media davide-senatore
 
Apple App World
Apple App WorldApple App World
Apple App World
 
Smau milano 2012 arena social media massimo-grava
Smau milano 2012   arena social media massimo-gravaSmau milano 2012   arena social media massimo-grava
Smau milano 2012 arena social media massimo-grava
 
PhoneGap ovvero lo Sviluppo Mobile Nativo con HTML, CSS e JavaScript
PhoneGap ovvero lo Sviluppo Mobile Nativo con HTML, CSS e JavaScriptPhoneGap ovvero lo Sviluppo Mobile Nativo con HTML, CSS e JavaScript
PhoneGap ovvero lo Sviluppo Mobile Nativo con HTML, CSS e JavaScript
 
Marcus Wesley's Current Resume
Marcus Wesley's Current ResumeMarcus Wesley's Current Resume
Marcus Wesley's Current Resume
 
Marcus Wesley's Resume
Marcus Wesley's ResumeMarcus Wesley's Resume
Marcus Wesley's Resume
 
iOS, Android O Windows Phone? La piattaforma migliore per il tuo target.
iOS, Android O Windows Phone? La piattaforma migliore per il tuo target.iOS, Android O Windows Phone? La piattaforma migliore per il tuo target.
iOS, Android O Windows Phone? La piattaforma migliore per il tuo target.
 
Why consider Viet Nam for investment 2013
Why consider Viet Nam for investment 2013Why consider Viet Nam for investment 2013
Why consider Viet Nam for investment 2013
 
Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTML
 
How to retain and motivate Staff DaNang December 2013
How to retain and motivate Staff DaNang December 2013How to retain and motivate Staff DaNang December 2013
How to retain and motivate Staff DaNang December 2013
 
Marcus Wesley's Current Resume
Marcus Wesley's Current ResumeMarcus Wesley's Current Resume
Marcus Wesley's Current Resume
 
Resume_Atlanta_Wesley11_25_2014_1_1[1]
Resume_Atlanta_Wesley11_25_2014_1_1[1]Resume_Atlanta_Wesley11_25_2014_1_1[1]
Resume_Atlanta_Wesley11_25_2014_1_1[1]
 
Reporte de práctica
Reporte de prácticaReporte de práctica
Reporte de práctica
 

Similar to Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

Il Web orientato al futuro: Express, Angular e nodeJS
Il Web orientato al futuro: Express, Angular e nodeJS Il Web orientato al futuro: Express, Angular e nodeJS
Il Web orientato al futuro: Express, Angular e nodeJS
Eugenio Minardi
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimization
Andrea Dottor
 
Presentazione Corso - Parte 3
Presentazione Corso - Parte 3Presentazione Corso - Parte 3
Presentazione Corso - Parte 3Giorgio Carpoca
 
Gae piattaforma su cloud
Gae piattaforma su cloudGae piattaforma su cloud
Gae piattaforma su cloudmasci
 
Link. javascript ajax
  Link. javascript ajax  Link. javascript ajax
Link. javascript ajax
santi caltabiano
 
Rich Internet Application
Rich Internet ApplicationRich Internet Application
Rich Internet Application
Marcello Teodori
 
Cloud Google App Engine Paas
Cloud   Google App Engine PaasCloud   Google App Engine Paas
Cloud Google App Engine Paassteccami
 
Androidsdk appinventor
Androidsdk appinventorAndroidsdk appinventor
Androidsdk appinventor
fdizazzo
 
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web Apps
Andrea Dottor
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
Gabriele Gaggi
 
Meetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web AppMeetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web App
dotnetcode
 
GAE python GDG Milano - L01
GAE python GDG Milano - L01GAE python GDG Milano - L01
GAE python GDG Milano - L01
Paolo Dadda
 
Introduzione a Internet
Introduzione a InternetIntroduzione a Internet
Introduzione a Internet
dadahtml
 
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web App
dotnetcode
 
Cms, Content Management System. Sistema di gestione dei contenuti
Cms, Content Management System. Sistema di gestione dei contenutiCms, Content Management System. Sistema di gestione dei contenuti
Cms, Content Management System. Sistema di gestione dei contenuti
Giulia S
 
Azure Web Apps: portare il tuo sito sul cloud
Azure Web Apps: portare il tuo sito sul cloudAzure Web Apps: portare il tuo sito sul cloud
Azure Web Apps: portare il tuo sito sul cloud
Davide Benvegnù
 
Lezione 7 del 21 febbraio 2012 - CLOUD STORAGE PER USO PERSONALE
Lezione 7 del 21 febbraio 2012 - CLOUD STORAGE PER USO PERSONALELezione 7 del 21 febbraio 2012 - CLOUD STORAGE PER USO PERSONALE
Lezione 7 del 21 febbraio 2012 - CLOUD STORAGE PER USO PERSONALEGianluigi Cogo
 
Dal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie GoogleDal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie GoogleDiego Giorgini
 

Similar to Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013 (20)

Il Web orientato al futuro: Express, Angular e nodeJS
Il Web orientato al futuro: Express, Angular e nodeJS Il Web orientato al futuro: Express, Angular e nodeJS
Il Web orientato al futuro: Express, Angular e nodeJS
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimization
 
Presentazione Corso - Parte 3
Presentazione Corso - Parte 3Presentazione Corso - Parte 3
Presentazione Corso - Parte 3
 
Gae piattaforma su cloud
Gae piattaforma su cloudGae piattaforma su cloud
Gae piattaforma su cloud
 
Link. javascript ajax
  Link. javascript ajax  Link. javascript ajax
Link. javascript ajax
 
Rich Internet Application
Rich Internet ApplicationRich Internet Application
Rich Internet Application
 
Corso Java 3 - WEB
Corso Java 3 - WEBCorso Java 3 - WEB
Corso Java 3 - WEB
 
Cloud Google App Engine Paas
Cloud   Google App Engine PaasCloud   Google App Engine Paas
Cloud Google App Engine Paas
 
Androidsdk appinventor
Androidsdk appinventorAndroidsdk appinventor
Androidsdk appinventor
 
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web Apps
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
 
Meetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web AppMeetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web App
 
GAE python GDG Milano - L01
GAE python GDG Milano - L01GAE python GDG Milano - L01
GAE python GDG Milano - L01
 
Introduzione a Internet
Introduzione a InternetIntroduzione a Internet
Introduzione a Internet
 
App Engine + Python
App Engine + PythonApp Engine + Python
App Engine + Python
 
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web App
 
Cms, Content Management System. Sistema di gestione dei contenuti
Cms, Content Management System. Sistema di gestione dei contenutiCms, Content Management System. Sistema di gestione dei contenuti
Cms, Content Management System. Sistema di gestione dei contenuti
 
Azure Web Apps: portare il tuo sito sul cloud
Azure Web Apps: portare il tuo sito sul cloudAzure Web Apps: portare il tuo sito sul cloud
Azure Web Apps: portare il tuo sito sul cloud
 
Lezione 7 del 21 febbraio 2012 - CLOUD STORAGE PER USO PERSONALE
Lezione 7 del 21 febbraio 2012 - CLOUD STORAGE PER USO PERSONALELezione 7 del 21 febbraio 2012 - CLOUD STORAGE PER USO PERSONALE
Lezione 7 del 21 febbraio 2012 - CLOUD STORAGE PER USO PERSONALE
 
Dal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie GoogleDal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie Google
 

Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013

  • 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. 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. 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. 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. 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. 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. 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. Cosa è Google App Engine
  • 9. Perché ho scelto GAE GAE/J è l’incarnazione di Google App Engine per il linguaggio Java
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Datastore Ma un server centrale è difficile da scalare, una volta raggiunta la sua capacità di connessioni simultanee...
  • 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. 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. 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. 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. MemCache Il servizio MemCache MemCache un servizio di storage chiave-valore a breve termine.
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Developer Tools Gli SDK includono anche librerie per test automatizzati, e la raccolta di rapporti sulle prestazioni dell'applicazione.
  • 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. 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. 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. 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. 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