La Platform as a Service di Google Vincenzo Gianferrari Pini <[email protected]> 7 giugno 2012 Agenda ● Architettura generale ● L'Infrastructure as a Service di Google ● Il Software as a Service di Google: ○ Servizi ed API ● La Platform as a Service di Google ○ Google App Engine ■ Scalabilità ■ Restrizioni ■ Servizi ■ Gli Application Environment supportati ■ Il Java Runtime Environment ■ Il supporto database ○ Google Web Toolkit ○ SDK, supporto IDE e deployment ○ Secure Data Connector ○ Pricing ○ Case Study 29/06/2010 2 Architettura 29/06/2010 2 L'Infrastructure as a Service (IaaS) di Google ● L'infrastruttura di Google non è accessibile direttamente, per cui non si può parlare di Infrastructure as a Service ● Infrastruttura "gigantesca", distribuita su diversi datacenter in diversi paesi ○ basata sulla cooperazione di un numero molto grande di server fisici, che non sfruttano tecniche di virtualizzazione ma meccanismi proprietari ○ i dettagli tecnici sono riservati ● Consente grande scalabilità automatica, per mezzo di parallelismo spinto, e grande ridondanza dei dati per la sicurezza fisica ● Informazioni sulla sicurezza: ○ http://links.gocloud.it/wp-google-security 29/06/2010 2 Il Software as a Service (SaaS) di Google ● Google Apps ○ Ambiente di produttività individuale e collaboration ○ Email, Calendar, Drive, Sites, Video, ... ● Google Maps ● molti altri servizi ... ● Accesso funzionale ed amministrativo tramite ○ Web Interface ○ ricco set di API ■ basato su HTTP + REST 29/06/2010 2 La Platform as a Service (PaaS) di Google 1. Google App Engine (GAE): ambiente runtime per l'esecuzione 2. Google Web Toolkit: per lo sviluppo di componenti client complesse basate su Javascript (opzionale) 3. Software Development Kit (SDK) e Google Plugin for Eclipse: per lo sviluppo, test completo in locale e deployment "automatico" delle applicazioni 29/06/2010 2 Google App Engine ● Ambiente runtime del PaaS per l'esecuzione sia delle applicazioni SaaS di Google che di quelle custom ● Accesso Web tramite protocollo HTTP ● Gestisce automaticamente la scalabilità, attivando (Java) virtual machines on-the-fly su un numero elevatissimo di server fisici ○ Load Balancing ○ Può passare velocemente ed automaticamente da poche decine a milioni di utenti ○ Opzioni di fine tuning ● Elevata ridondanza dei dati ○ non è quindi necessario fare backup dei dati (se non per recovery logico) ● Administration Console dettagliata 29/06/2010 2 GAE Administration Console 29/06/2010 2 Google App Engine: il Sandbox ● Sandbox con alcune limitazioni per la sicurezza ed il "buon comportamento" dell'applicazione: ○ No controllo thread ○ No write su file system ○ No apertura di socket 29/06/2010 2 Google App Engine: i servizi ● Single sign-on per l'autenticazione, integrato con tutti i servizi offerti da Google ○ 2-step authentication disponibile ○ integrazione con sistemi aziendali di single sign-on (SAML-based) ● Integrazione con sistemi di provisioning (LDAP), es. MS Active Directory ● URL Fetch ● Mail ● Memcache ● Image Manipulation ● Scheduled Tasks e Task Queues ● Database/Datastore ● ... 29/06/2010 2 Google App Engine: supporto Database e Datastore ● App Engine Datastore, un NoSQL schemaless object datastore ○ Query engine, con interfaccia SQL ○ High Replication ○ Transazioni atomiche distribuite ○ Altissima scalabilità ● Google Cloud SQL, database relazionale basato su MySQL RDBMS ○ Fully Managed ○ High Availability: replica automatica dei dati "across multiple geographic regions" ● Google Cloud Storage, per oggetti e file molto grandi, anche terabytes 29/06/2010 2 Google App Engine: Gli Application Environment ● Python Runtime Environment ● "GO" Runtime Environment ● Java Runtime Environment ○ Java 6 ○ compatibile con Java 5 ○ Web Container (Servlet Container) ■ Java Servlet Standard (incluso JSP) ■ Si possono utilizzare normali strumenti di Java Web Development ed API standard ○ Supporto per ■ Java Data Objects (JDO) ■ Java Persistence API (JPA) ■ JavaMail ■ java.net HTTP API 29/06/2010 2 Google Web Toolkit (GWT) ● Toolkit per sviluppare ed ottimizzare la componente GUI di applicazioni AJAX browser-based complesse ● Si sviluppa in Java, e viene generato codice Javascript ○ codice ottimizzato ○ gira automaticamente sui browser più diffusi, come anche su mobile browsers per iPhone e Android ● Molte semplificazioni per lo sviluppatore ● Widgets ● Debug interattivo direttamente in Java ● Può essere utilizzato anche per le GUI di applicazioni Web non GAE 29/06/2010 2 SDK e IDE plugins ● SDK per compilare, fare debug e fare deployment di applicazioni GAE e/o GWT ● Google Plugin for Eclipse ○ GAE e/o GWT ○ Debug interattivo ■ anche usando Database e/o Datastore ● Disponibile anche plugin per NetBeans ● "One Click" deploy ○ versioning ○ team development 29/06/2010 2 "One Click" deploy 29/06/2010 2 Secure Data Connector ● Per consentire l'accesso protetto e controllato ai dati/applicazioni on premises da parte del SaaS di Google e delle applicazioni GAE ● Crea una connessione cifrata ● Software open source per consentire controllo e "customizzazione" da parte dell'Azienda 29/06/2010 2 Secure Data Connector 29/06/2010 2 Pricing ● Quotas: ○ safety e billable ○ per day e per minute ● Tipi di pricing: ○ Free Accounts ■ Entro le billable quotas ○ Paid Applications e Premier Accounts ■ 99,95% SLA ■ Fisso mensile (Paid $9 / app, Premier $500 / account) + variabile ■ Billing settimanale per Paid, e mensile per Premier ● Varie voci considerate per il billing della parte variabile quando si superano le billable quotas ○ maximum budget giornaliero settabile 29/06/2010 2 Pricing: voci variabili principali ● Istanze ○ dinamiche ■ classe 1 (128 MB, 600 MHz): $0,08 / h ■ classe 2 (256 MB, 1,2 GHz): $0,16 / h ■ classe 4, classe 8 ○ residenti oltre alla prima: $0,05 / h ● Outgoing Bandwidth: $0,12 / GB ● Stored Data: ○ Blobstore: $0,13 / (GB x Mese) ○ Datastore: $0,24 / (GB x Mese) ● Low-level Datastore operations ○ Write: $0,10 / 100k_ops ○ Read: $0,07 / 100k_ops ○ Small: $0,01 / 100k_ops ● Channels: $0,00001 / channels_opened ● Recipients emailed: $0,0001 / email 29/06/2010 2 Pricing applicato a dei Case Study ● Vedi questo Spreadsheet ● Oppure questo HTML ● Oppure scarica questo PDF ● Il calcolo è approssimativo, dovendosi fare delle ipotesi aggiuntive sui sei Case Study forniti come benchmark ○ Dati di partenza riportati con sfondo verde ■ In corsivo alcune ipotesi sui picchi, che si assumono siano su base oraria ■ Il "numero di pratiche giornaliere" si assumono su 10 ore lavorative ○ Si assumono 20 giorni lavorativi al mese ● Gli importi calcolati sono in US$, riportati in grassetto 29/06/2010 2 Via Grancini 8 20145 Milano www.gocloud.it