SlideShare uma empresa Scribd logo
1 de 62
Works between the cloud
Chi sono? Davide Cerbo Lavoro per Ex Machina in Lugano (p.s.: stiamo selezionando gente sveglia) http://davide.cerbo.born-to-co.de http://twitter.com/davide_cerbo http://linkedin/in/davidecerbo [email_address] http://exmachina.ch
Buongiorno, oggi vi racconterò una storia  (inventata)
Partiamo dall'idea Un giorno mi sveglio e mi viene una idea per una fantastica applicazione: GA(E)STBOOK
Prepariamo gli attrezzi ,[object Object]
Spring Framework
HSQL DB
Apache OpenJPA
Apache Maven Maven è una parola ebraica che vuol dire accomulatore di conoscenza. Apache Maven è un sistema per gestire la fase di build di un progetto software. Si occupa principalmente delle dipendenze, la fase di compilazione, di test e tramite un sistema di plugin anche di molto altro La sua configurazione avviene tramite il file pom.xml.
Spring Framerwork E' un potete framework per lo sviluppo di software basato sul principio di Dependency Injection. Nelle ultime versioni al classico file XML di configurazione ha aggiunto una serie di annotazioni
HSQLDB E' un database interamente scritto in Java. Ha il vantaggio di essere molto leggere e può essere utilizzato direttamente all'interno dell'applicativo senza bisogno di servizi esterni.
Jetty Jetty è un HTTP server, un HTTP client, e un javax.servlet container. Interamente scritto in Java ed integrato con Apache Maven tramite plugin.
Prerequisito: JPA The  Java Persistence API  (JPA) è uno standard che permette agli sviluppatori di gestire dati relazionali in modo indipendente dal database utilizzato. Ne esistono diverse implementazioni, tra cui: OpenJPA , Hibernate e  DataNucleus
Creazione progetto con Maven 1/2  ,[object Object]
Creiamo la cartella java in /gaestbook/src/main
Aggiungiamo il plugin di Jetty nel file pom.xml
Aggiungiamo le dipendenze a: OpenJpa, HSQL, Spring WEBMVC, Spring ORM, etc...
Digitiamo  mvn eclipse:eclipse  per generare i file di progetto per Eclipse
Creazione progetto con Maven 2/2 <project> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>3.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>3.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.apache.openjpa</groupId> <artifactId>openjpa-all</artifactId> <version>1.3.0-SNAPSHOT</version> </dependency> ... </dependencies> <build> <finalName>gaestbook</finalName> <plugins> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> <version>6.1.10</version> ... </plugin> </plugins> </build> </project>
Il Modello
Il controllore
La vista 1/2
La vista 2/2
La configurazione 1/4
La configurazione 2/4
La configurazione 3/4
La configurazione 4/4
Il risultato mvn jetty:run
Dopo qualche mese... Non so perché, ma... ...milioni di utenti usano G(a)estbook!
 
Ma sempre più utenti vedono HTTP Error 408 Request timeout  e non solo...
 
Scalare Devo migliorare le prestazioni del mio applicativo. Posso scegliere se: ,[object Object],[object Object]
Verticalmente? Non ci penso nemmeno! ,[object Object]
Non ho abbastanza soldi per acquistare l'ultimo server presente sul mercato
Orizzontalmente a casa mia ,[object Object]
I server hanno un prezzo elevato
L'housing ha prezzi elevati
Costruire e gestire una web farm privata per pochi server ha un prezzo elevato
Se il sito non cresce come mi aspetto ho sprecato tempo e denaro
La ricerca continua... Cerco su Google e vedo che alcune aziende offrono servizi di Cloud o Grid Computing ...uhm...
Attrazione fatale
Developer Vs. System Administrator
Cloud Vs. Grid ,[object Object]
Piccoli compiti ,[object Object]
Grandi lavori Molti  SERVER  lavorano  insieme per  TE
Big picture
Perchè un servizio di cloud computing? ,[object Object]
Niente ravvio dei server, niente problemi di rete
Non abbiamo molti server a nostri disposizione
Non abbiamo i soldi per acquistarli Google Datacenter a Dallas, Oregon Picture credit: Portland Java User Group 18 Agosto 2009
Quando il cloud computing fallisce? ,[object Object]
Quando è necessario l'intervento umano per creare una nuova risorsa per la nuvola
Se vogliamo fare da noi http://www.gridgain.com http://www.eucalyptus.com http://code.google.com/p/appscale/
Ma io non lo farei
Perchè Google App Engine? ,[object Object]
Economico, paghi solo se l'applicazione cresce
Ottimo software installati come Memcache, Bigtable, etc.
Una ottima console di amministrazione con log di sistema, statistiche di accesso, statistiche di consumo, gestione dell'applicazione
Compatibile con  JAVA , PYTHON e altri linguaggi basati sulla JVM: Scala, Groovy, etc...
Compatibile con molti standard Java
Non c'è sistema operativo, un pensiero in meno

Mais conteúdo relacionado

Semelhante a Working between the clouds

ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimizationAndrea Dottor
 
Installazione di Joomla nel cloud di Red Hat
Installazione di Joomla nel cloud di Red HatInstallazione di Joomla nel cloud di Red Hat
Installazione di Joomla nel cloud di Red HatBabel
 
Stanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al PrgressiveStanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al PrgressiveCommit University
 
High specialized vm on open stack cloud
High specialized vm on open stack cloudHigh specialized vm on open stack cloud
High specialized vm on open stack cloudGabriele Baldoni
 
Corso WebApp iOS - Lezione 08: Optimize iOS WebApp
Corso WebApp iOS - Lezione 08: Optimize iOS WebAppCorso WebApp iOS - Lezione 08: Optimize iOS WebApp
Corso WebApp iOS - Lezione 08: Optimize iOS WebAppAndrea Picchi
 
Maven: Convention over Configuration
Maven: Convention over ConfigurationMaven: Convention over Configuration
Maven: Convention over Configurationvschiavoni
 
Tech Webinar: Come ottimizzare il workflow nello sviluppo di Web App
Tech Webinar: Come ottimizzare il workflow nello sviluppo di Web AppTech Webinar: Come ottimizzare il workflow nello sviluppo di Web App
Tech Webinar: Come ottimizzare il workflow nello sviluppo di Web AppCodemotion
 
Con Aruba, a lezione di cloud #lezione 13 - parte 2: 'Cloud Object Storage: c...
Con Aruba, a lezione di cloud #lezione 13 - parte 2: 'Cloud Object Storage: c...Con Aruba, a lezione di cloud #lezione 13 - parte 2: 'Cloud Object Storage: c...
Con Aruba, a lezione di cloud #lezione 13 - parte 2: 'Cloud Object Storage: c...Aruba S.p.A.
 
Creazione componenti con Vue js
Creazione componenti con Vue jsCreazione componenti con Vue js
Creazione componenti con Vue jsGianfranco Castro
 
Perché è così difficile il deploy dei database - DevCast DevOps Serie
Perché è così difficile il deploy dei database  - DevCast DevOps SeriePerché è così difficile il deploy dei database  - DevCast DevOps Serie
Perché è così difficile il deploy dei database - DevCast DevOps SerieGiulio Vian
 
Il PaaS di Google
Il PaaS di GoogleIl PaaS di Google
Il PaaS di GoogleMssiStf
 

Semelhante a Working between the clouds (20)

ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimization
 
Help Framakey WebApps
Help Framakey WebAppsHelp Framakey WebApps
Help Framakey WebApps
 
Installazione di Joomla nel cloud di Red Hat
Installazione di Joomla nel cloud di Red HatInstallazione di Joomla nel cloud di Red Hat
Installazione di Joomla nel cloud di Red Hat
 
Introduzione a Struts
Introduzione a StrutsIntroduzione a Struts
Introduzione a Struts
 
Stanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al PrgressiveStanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al Prgressive
 
High specialized vm on open stack cloud
High specialized vm on open stack cloudHigh specialized vm on open stack cloud
High specialized vm on open stack cloud
 
App Engine + Python
App Engine + PythonApp Engine + Python
App Engine + Python
 
Silex, iniziamo
Silex, iniziamoSilex, iniziamo
Silex, iniziamo
 
Corso WebApp iOS - Lezione 08: Optimize iOS WebApp
Corso WebApp iOS - Lezione 08: Optimize iOS WebAppCorso WebApp iOS - Lezione 08: Optimize iOS WebApp
Corso WebApp iOS - Lezione 08: Optimize iOS WebApp
 
Maven: Convention over Configuration
Maven: Convention over ConfigurationMaven: Convention over Configuration
Maven: Convention over Configuration
 
Infrastructure as Data
Infrastructure as DataInfrastructure as Data
Infrastructure as Data
 
Tech Webinar: Come ottimizzare il workflow nello sviluppo di Web App
Tech Webinar: Come ottimizzare il workflow nello sviluppo di Web AppTech Webinar: Come ottimizzare il workflow nello sviluppo di Web App
Tech Webinar: Come ottimizzare il workflow nello sviluppo di Web App
 
Con Aruba, a lezione di cloud #lezione 13 - parte 2: 'Cloud Object Storage: c...
Con Aruba, a lezione di cloud #lezione 13 - parte 2: 'Cloud Object Storage: c...Con Aruba, a lezione di cloud #lezione 13 - parte 2: 'Cloud Object Storage: c...
Con Aruba, a lezione di cloud #lezione 13 - parte 2: 'Cloud Object Storage: c...
 
Creazione componenti con Vue js
Creazione componenti con Vue jsCreazione componenti con Vue js
Creazione componenti con Vue js
 
Idp, passo dopo passo!
Idp, passo dopo passo!Idp, passo dopo passo!
Idp, passo dopo passo!
 
Many Designs Elements
Many Designs ElementsMany Designs Elements
Many Designs Elements
 
Novità di Asp.Net 4.0
Novità di Asp.Net 4.0Novità di Asp.Net 4.0
Novità di Asp.Net 4.0
 
Wpo extended
Wpo extendedWpo extended
Wpo extended
 
Perché è così difficile il deploy dei database - DevCast DevOps Serie
Perché è così difficile il deploy dei database  - DevCast DevOps SeriePerché è così difficile il deploy dei database  - DevCast DevOps Serie
Perché è così difficile il deploy dei database - DevCast DevOps Serie
 
Il PaaS di Google
Il PaaS di GoogleIl PaaS di Google
Il PaaS di Google
 

Mais de Davide Cerbo

Kotlin: forse è la volta buona (Trento)
Kotlin: forse è la volta buona (Trento)Kotlin: forse è la volta buona (Trento)
Kotlin: forse è la volta buona (Trento)Davide Cerbo
 
Kotlin: maybe it's the right time
Kotlin: maybe it's the right timeKotlin: maybe it's the right time
Kotlin: maybe it's the right timeDavide Cerbo
 
From 0 to React with ES6 and Tests
From 0 to React with ES6 and TestsFrom 0 to React with ES6 and Tests
From 0 to React with ES6 and TestsDavide Cerbo
 
Kotlin: foss' a vota bona (could be the right time)
Kotlin: foss' a vota bona (could be the right time)Kotlin: foss' a vota bona (could be the right time)
Kotlin: foss' a vota bona (could be the right time)Davide Cerbo
 
Il web intelligente
Il web intelligenteIl web intelligente
Il web intelligenteDavide Cerbo
 
The Hitchhiker's Guide to testable code: semplici regole per scrivere codice ...
The Hitchhiker's Guide to testable code: semplici regole per scrivere codice ...The Hitchhiker's Guide to testable code: semplici regole per scrivere codice ...
The Hitchhiker's Guide to testable code: semplici regole per scrivere codice ...Davide Cerbo
 
Non Conventional Android Programming (English)
Non Conventional Android Programming (English)Non Conventional Android Programming (English)
Non Conventional Android Programming (English)Davide Cerbo
 
Non Conventional Android Programming (Italiano)
Non Conventional Android Programming (Italiano)Non Conventional Android Programming (Italiano)
Non Conventional Android Programming (Italiano)Davide Cerbo
 

Mais de Davide Cerbo (10)

Kotlin: forse è la volta buona (Trento)
Kotlin: forse è la volta buona (Trento)Kotlin: forse è la volta buona (Trento)
Kotlin: forse è la volta buona (Trento)
 
Kotlin: maybe it's the right time
Kotlin: maybe it's the right timeKotlin: maybe it's the right time
Kotlin: maybe it's the right time
 
From 0 to React with ES6 and Tests
From 0 to React with ES6 and TestsFrom 0 to React with ES6 and Tests
From 0 to React with ES6 and Tests
 
Kotlin: foss' a vota bona (could be the right time)
Kotlin: foss' a vota bona (could be the right time)Kotlin: foss' a vota bona (could be the right time)
Kotlin: foss' a vota bona (could be the right time)
 
Di cosa parlano?
Di cosa parlano?Di cosa parlano?
Di cosa parlano?
 
Adesso In Onda
Adesso In OndaAdesso In Onda
Adesso In Onda
 
Il web intelligente
Il web intelligenteIl web intelligente
Il web intelligente
 
The Hitchhiker's Guide to testable code: semplici regole per scrivere codice ...
The Hitchhiker's Guide to testable code: semplici regole per scrivere codice ...The Hitchhiker's Guide to testable code: semplici regole per scrivere codice ...
The Hitchhiker's Guide to testable code: semplici regole per scrivere codice ...
 
Non Conventional Android Programming (English)
Non Conventional Android Programming (English)Non Conventional Android Programming (English)
Non Conventional Android Programming (English)
 
Non Conventional Android Programming (Italiano)
Non Conventional Android Programming (Italiano)Non Conventional Android Programming (Italiano)
Non Conventional Android Programming (Italiano)
 

Working between the clouds