Home > Google App Engine
Google App Engine Stampa

Google App Engine nasce con lo scopo di accrescere la diffusione delle applicazioni web. Gli obiettivi di design del sistema sono:

  • facilità di start up
  • scalabilità
  • facilità di utilizzo

Sviluppare applicazioni web è infatti un compito molto arduo: è necessario scrivere il codice, scrivere gli scripts di configurazione del web server Apache, settare il database SQL, creare le tabelle, monitorare il traffico, dotarsi di hardware per far girare le applicazioni ovunque, mantenere le applicazioni nel tempo.

Google App Engine rappresenta un tentativo di facilitare la creazione e lo sviluppo di applicazioni web, cominciando col renderne gratuito l'accesso. E' un sistema che “scopre” varie parti dell'infrastruttura Google e consente di sfruttarle per scrivere applicazioni lato server.

E' possibile utilizzare un nome di dominio gratis su appsot.com o utilizzare il proprio dominio, condividere le applicazioni con il mondo, o limitare l'accesso ai membri della specifica organizzazione.

Ambiente di sviluppo

Google App Engine permette di costruire applicazioni facilmente, che siano affidabili anche in situazioni di grande carico di traffico e con una grande quantità di dati. L'ambiente include le seguenti caratteristiche:

  • web serving dinamico, con pieno supporto di tutte le tecnologie web più comuni
  • storage persistente con queries, ordinamenti e transazioni
  • scala automaticamente e bilancia il carico
  • APIs per l'autenticazione degli utenti ed invio di mail utilizzando l'account Google
  • Un ambiente di sviluppo ricco di funzionalità che simula Google App Engine sul proprio pc

Le applicazioni Google App Engine sono implementate utilizzando il linguaggio di programmazione Python. L'ambiente di runtime supporta completamente il linguaggio Phyton e la maggior parte delle sue librerie standard.

Vediamo le componenti principali:

  • infrastruttura scalabile di web serving
  • ambiente di runtime Python
  • SDK(App Engine Software Developing Kit)
  • interfaccia di amministrazione web based
  • datastore
  • sandbox

La sandbox

Le applicazioni girano in un ambiente che consente un accesso limitato al sistema operativo sottostante. Queste limitazioni permettono all'App Engine di distribuire le web request per le applicazioni attraverso diversi server, ed attivare o spegnere server a seconda delle domande di traffico. La sandbox isola l'applicazione nel suo proprio ambiente sicuro ed affidabile che è indipendente dall'hardware, dal sistema operativo e dalla locazione fisica del web server.

Esempi delle limitazioni che la sandbox di sicurezza include:

  • Una applicazione può avere accesso ad altri pc su Internet attraverso l'URL fetch fornito, email server e APIs. Gli altri computer possono solo connettersi all'applicazione tramite request HTTP o HTTPS sulle porte standard.
  • Una applicazione non può scrivere sul file System. Una applicazione può leggere files, ma solo file scaricati con il codice dell'applicazione. L'applicazione può utilizzare il datastore AppEngine per tutti i dati persistenti fra le richieste.
  • Le applicazioni possono girare solo in risposta a web request, e devono restituire una response entro pochi secondi. Colui che ha generato una richiesta, non può produrre un sotto-processo o eseguire codice dopo che la risposta è stata inviata.

Ambiente di sviluppo Phyton

L'ambiente di sviluppo Python utilizza la versione di Python 2.5.2. L'ambiente comprende la libreria standard di Python. Naturalmente, chiamare un metodo di libreria che viola una restrizione della sandbox, come il tentativo di aprire un socket o scrivere su un file, non avrà alcun risultato. Per convenzione, diversi moduli nella libreria standard le cui funzionalità non sono supportate dall'ambiente di sviluppo sono state disabilitate, ed il codice che le importa genererà un errore. Non è possibile supportare estensioni scritte in C.

L'ambiente Python fornisce APIs per il datastore, Google Accounts, URL fetch e e-mail services. App Engine fornisce un framework per le applicazioni web chiamato webapp per rendere facile la costruzione di applicazioni con Python.

AppEngine include il framework Django, versione 0.96.1. E' possibile scaricare librerie di terze parti, se sono implementate in Python puro.

Il datastore

Google App Engine fornisce un servizio di data storage potente e distribuito che consente query e transazioni. Come il web server distribuito cresce a seconda del traffico, così il datastore scala all'aumentare del numero di dati immagazzinati. Il DataStore App Engine non è un tradizionale database relazionale. Gli oggetti “dato”, o “entità, hanno un tipo ed una serie di proprietà associate. Le query possono restituire entità di un determinato tipo ed ordinarle secondo il valore di quelle proprietà. I valori delle proprietà possono essere uno dei tipi di valore delle proprietà. L'API Python per il datastore include una interfaccia di modellazione dei dati che può definire una struttura per le entità del datastore. Un modello dei dati può indicare che la proprietà può avere un valore entro un certo range, o prevedere un valore di default se non è definito alcun valore. E' possibile fornire una struttura dati più o meno consistente ed articolata, a seconda delle necessità.

Il datastore utilizza locking ottimistico per il controllo della concorrenza. Il locking ottimistico si basa sull'assunto che, se si considera il rapporto tra il numero totale di accessi ed il numero totale di anomalie, queste ultime non si verificano così di frequente. Le transazioni sono aperte al momento di effettiva modifica o cancellazione dei dati, non al momento della lettura. La transazione rimane attiva solo per il tempo necessario all'effettivo svolgimento delle operazioni di modifica sul database. L'applicazione può eseguire molte operazioni nel corso di una unica transazione : può accadere che che falliscono tutte, o che tutte hanno successo, garantendo l'integrità dei dati.

Il datastore implementa transazioni sulla sua rete distribuita utilizzando “gruppi di entità”. Una transazione manipola entità appartenenti ad uno stesso gruppo. Entità dello stesso gruppo sono immagazzinati insieme per l'esecuzione efficiente delle transazioni. L'applicazione può assegnare le entità ai gruppi al momento della creazione.

Accounts Google

App engine include un API per l'integrazione con gli account Google. L' applicazione permetterà all'utente di accedere tramite Google Account , ed avere accesso all'indirizzo mail ed al nome associato a quell'account. Il Google Account consente all'utente di iniziare ad utilizzare prima l'applicazione, perchè non è costretto a creare un nuovo account. Si evita lo sforzo di implementare un sistema di user account solo per una applicazione.

Gli Users API possono anche comunicare all'applicazione se l'utente corrente è l'amministratore registrato per quell'applicazione. Questo rende facile l'implementazione di aree destinate ai soli amministratori del sito.

Servizi App Engine

App Engine fornisce una serie di servizi che consentono di svolgere operazioni comuni nel management delle applicazioni. Le seguenti API servono per avere accesso a questi servizi:

  • URL Fetch
    Le Applicazioni possono avere accesso a risorse su internet, cme web services o altri dati, utlizzando il servizio URL fetch. Questo restituisce web resources utilizzando la stessa infrastruttura ad alta velocità di Google che restituisce pagine web per molti altri prodotti Google.
  • Mail
    Le applicazioni possono mandare mail utilizzando il mail service di App Engine. Il mail service utilizza l'infrastruttura Google per inviare email.
  • Memcache
    Il servizio di memcache fornisce alla applicazione una cache di memoria con alte prestazioni che è accessibile da istanze multiple della applicazione stessa. Memcache è utile per i dati che non hanno bisogno della persistenza e delle caratteristiche transazionali del datastore, come dati temporanei.
  • Manipolazione di immagini
    Il servizio Immagine consente alla applicazione di manipolare immagini. Con questa API, è possibile ridimensionare, ruotare, ritagliare, sfogliare immagini in formato JPEG e PNG.
  • Workflow di sviluppo
    Il kit di sviluppo App Engine (SDK) include un'applicazione web server che simula tutte le caratteristiche di App Engine sul proprio pc. L'SDK include tutte le API e le librerie disponibili su AppEngine. Il web server simula anche l'ambiente sandbox, includendo i controlli per l'importazione di moduli disabilitati e tentativi di accesso non consentiti a risorse di sistema.
  • Console di amministrazione
    La console di amministrazione è un'interfaccia web based per gestire le applicazioni che girano su App Engine. Si può utilizzare per creare nuove applicazioni, configurare nomi di dominio, cambiare versione della applicazione, esaminare gli accessi e le segnalazioni di errore, e visitare il datastore di un'applicazione

Vedi esempi di applicazioni costruite con Google Apps Engine