3. Google App Engine
Google App Engine `e una piattaforma cloud di tipo PaaS nata nel 2008.
Fa parte della suite di servizi di CC chiamata Google Cloud Platform.
L’utilizzo `e indicato per chi volesse sviluppare e implementare applicazioni
senza mettere mano all’infrastruttura sottostante.
12 Gennaio 2017 3 / 19
4. Google App Engine
Google App Engine `e progettato per applicazioni scalabili. Vengono
utilizzate (e pagate) solo le risorse richieste.
I linguaggi supportati sono Python, Java, PHP, Go e Ruby mentre i
framework principali Django e Flask.
12 Gennaio 2017 4 / 19
5. Propriet`a rilevanti
Le applicazioni sono eseguite all’interno di una sandbox.
Ci`o comporta delle limitazioni:
L’applicazione non pu`o scrivere nel filesystem
Limite di 60 secondi per rispondere alla richiesta di un client
Le applicazioni sono ospitate su 4 datacenter regionali dislocati in
America, Europa e Asia.
La copertura del servizio, la percentuale di tempo downtime e uptime e la
frequenza di errori sono tutte specificate nel Service Level Agreement.
12 Gennaio 2017 5 / 19
7. Datastore
Database NoSQL schemaless e non relazionale. Non richiede uno schema
fisso e non sono permessi join.
Indicato per informazioni che devono essere restituite in tempo rapido.
L’utente non deve preoccuparsi della replicazione in quanto vengono creati
dei mirror in automatico da Google.
Oltre alla quantit`a di dati memorizzata, all’utente vengono fatturate anche
le operazioni read, write, delete e le query.
12 Gennaio 2017 7 / 19
8. Cloud SQL e Cloud Storage
Cloud SQL `e un database SQL compatibile con MySQL. Backup, repliche
e aggiornamenti sono automatici.
Cloud Storage `e uno spazio di archiviazione non strutturato di tipo BLOB
(Binary Large OBject). Pu`o archiviare qualsiasi tipo di dati di testo o
binari.
Il suo utilizzo `e consigliato per i contenuti di streaming multimediali.
12 Gennaio 2017 8 / 19
9. Memcache e Task Queues
La Memcache `e una memoria cache distribuita e condivisa tra tutte le
istanze attive dell’applicazione. Permette il recupero dei dati a prestazioni
molto pi`u elevate rispetto al datastore.
Pu`o essere di tipo shared o dedicated.
La memorizzazione di dati nella memcache non `e persistente, i valori
contenuti possono scadere da un momento all’altro.
Le Task Queue permettono alle applicazioni di eseguire task
asincronicamente senza bisogno di ricevere richieste esterne.
12 Gennaio 2017 9 / 19
10. Servizi, versioni e istanze
Un’applicazione di AppEngine `e composta da uno o pi`u service che
condividono i servizi di Google App Engine.
Ogni service consiste in codice sorgente e il proprio file di configurazione.
Questi file rappresentano la versione del servizio.
Una versione pu`o a sua volta avere una o pi`u istanze le quali sono
automaticamente scalate in base al carico di lavoro.
Ogni servizio, versione e istanza ha un proprio URI identificativo.
12 Gennaio 2017 10 / 19
12. Servizi, versioni e istanze
Ogni istanza ha la propria coda di richieste in arrivo che viene sempre
monitorata. Se App Engine individua una coda troppo lunga crea
automaticamente una nuova istanza per gestire il carico di lavoro in
eccesso.
Viene fatturato il totale di tempo (in ore) utilizzato giornalmente dalle
istanze.
`E previsto un limite gratuito giornaliero per ogni tipo di scaling.
12 Gennaio 2017 12 / 19
14. Aspetti analitici
Un sistema estremamente scalabile e condiviso con altri utenti porta
inevitabilmente ad alcuni svantaggi:
Limitazioni (sandbox)
Privacy
12 Gennaio 2017 14 / 19
15. Architetture simili
Windows Azure `e la raccolta di servizi cloud IaaS e PaaS offerti da
Microsoft.
I servizi PaaS sono rappresentati da App Service e Service Fabric.
L’architettura e le funzionalit`a sono del tutto analoghe a quella di GAE.
Le applicazioni non sono eseguite in sandbox ma in VM con Windows o
Linux.
12 Gennaio 2017 15 / 19
16. Bibliografia I
[1] Orna Agmon Ben-Yehuda, Muli Ben-Yehuda, Assaf Schuster, and
Dan Tsafrir.
The rise of raas: the resource-as-a-service cloud.
Communications of the ACM, 57(7):76–84, 2014.
[2] Arreytambe Tabot and Mohamed Hamada.
Mobile learning with google app engine.
In Embedded Multicore/Manycore SoCs (MCSoc), 2014 IEEE 8th
International Symposium on, pages 63–67. IEEE, 2014.
[3] Matthew NO Sadiku, Sarhan M Musa, and Omonowo D Momoh.
Cloud computing: opportunities and challenges.
IEEE potentials, 33(1):34–36, 2014.
12 Gennaio 2017 16 / 19
17. Bibliografia II
[4] M Reza Rahimi, Jian Ren, Chi Harold Liu, Athanasios V Vasilakos,
and Nalini Venkatasubramanian.
Mobile cloud computing: A survey, state of art and future directions.
Mobile Networks and Applications, 19(2):133–143, 2014.
[5] Dirk Beyer, Georg Dresler, and Philipp Wendler.
Software verification in the google app-engine cloud.
In International Conference on Computer Aided Verification, pages
327–333. Springer, 2014.
[6] Rolf Harms and Michael Yamartino.
The economics of the cloud.
Microsoft whitepaper, Microsoft Corporation, 2010.
[7] Alexander Zahariev.
Google app engine.
Helsinki University of Technology, pages 1–5, 2009.
12 Gennaio 2017 17 / 19
18. Bibliografia III
[8] Radu Prodan, Michael Sperk, and Simon Ostermann.
Evaluating high-performance computing on google app engine.
IEEE software, 29(2):52–58, 2012.
[9] Donald Kossmann, Tim Kraska, and Simon Loesing.
An evaluation of alternative architectures for transaction processing in
the cloud.
In Proceedings of the 2010 ACM SIGMOD International Conference
on Management of data, pages 579–590. ACM, 2010.
[10] Google app engine documentation.
https://cloud.google.com/appengine/docs, 2016.
[11] Architecture: Web application on google app engine.
https://cloud.google.com/solutions/architecture/webapp,
2016.
12 Gennaio 2017 18 / 19
19. Bibliografia IV
[12] Microservices architecture on google app engine.
https://cloud.google.com/appengine/docs/python/
microservices-on-app-engine, 2016.
[13] An overview of app engine.
https://cloud.google.com/appengine/docs/python/
an-overview-of-app-engine, 2016.
[14] Chakkrit Tantithamthavorn.
Introduction to google app engine.
http://www.slideshare.net/klainfo/
introduction-to-google-app-engine-13223789.
[15] Gustavo Ambrozio.
Scaling mobile games to a global audience using app engine and
cloud datastore.
https://www.youtube.com/watch?v=9nWyWwY2Onc.
12 Gennaio 2017 19 / 19