A real case study : boost scalability and performance with GridGain. Javaday 2009
1. GridGain
Aumentare scalabilità e performance con l'aiuto
del Open Source e della Grid Computing
Alfonso Focareta, Christian Mongillo
Pro-netics
alfonso.focareta@pronetics.it,christian.mongillo@pronetics.it – Pro-netics
Javaday Roma III Edizione – 24 gennaio 2009
2. Introduzione
● Enterprise Cms?
● ECMS: un caso di studio
● Problematiche e troubleshooting
● GridGain e i vantaggi della grid-computing
alfonso.focareta@pronetics.it,christian.mongillo@pronetics.it – Pro-netics
Javaday Roma III Edizione – 24 gennaio 2009
3. Enterprise CMS
● Differenze tra CMS e ECMS :
– Molti utenti (più redazioni ognuna con più utenti che
lavorano in maniera concorrente)
– Elevata quantità di contenuti (di archivio e
pubblicati)
– Alimentazione da fonti esterne (base dati esterne)
– Automazioni sulle pubblicazioni (schedulare orari
di pubblicazione e automazione)
– Utilizzo maggiore delle risorse hardware
alfonso.focareta@pronetics.it,christian.mongillo@pronetics.it – Pro-netics
Javaday Roma III Edizione – 24 gennaio 2009
4. Enterprise CMS
● Amministrazione intuitiva ed elastica (pronta
ad accogliere ogni tipologia di contenuti senza
modifiche)
● Uptime 365x24
● Elevato numero di utenti abituali con picchi
frequenti (molti utenti che in base ad un
particolare evento consultano una pagina)
● Meccanismi per il risparmio di banda (gestione
qualità img, crop e ridimensionamento
automatizzato)
alfonso.focareta@pronetics.it,christian.mongillo@pronetics.it – Pro-netics
Javaday Roma III Edizione – 24 gennaio 2009
5. ECMS un caso reale
Boxes (nome fittizio)
Tecnologie e framework utilizzati :
● JMS
● WICKET FRAMEWORK
● DOZER
● XSTREAM
● QUARTZ
● SPRING
● HIBERNATE
● GRIDGAIN (*)
alfonso.focareta@pronetics.it,christian.mongillo@pronetics.it – Pro-netics
Javaday Roma III Edizione – 24 gennaio 2009
6. ECMS un caso reale
Componenti (Moduli) di Boxes
● Client (amministrazione per la gestione dei contenuti)
● Feeder: componente automatizzato per l'importazione
di dati da fonti esterne (DB, rss ... )
● Publisher: componente che dall'analisi dei dati immessi
tramite il client, crea uno snapshot dei siti, e lancia la
generazione dei contenuti (xml / html ...)
● Dispatcher: invocato dal Publisher pubblica sui
webserver di frontend tramite JMS il contenuto generato
al fine di renderlo visibile agli utenti finali.
alfonso.focareta@pronetics.it,christian.mongillo@pronetics.it – Pro-netics
Javaday Roma III Edizione – 24 gennaio 2009
7. ECMS un caso reale
alfonso.focareta@pronetics.it,christian.mongillo@pronetics.it – Pro-netics
Javaday Roma III Edizione – 24 gennaio 2009
8. Performance di un ECMS
Le performance di un ECMS sono regolate dai
seguenti requisiti:
● Concorrenza di lavorazione (due utenti
lavorano allo stesso contenuto)
● Velocità di generazione e pubblicazione del
contenuto (tenendo presente gli automatismi
temporali e di “auto” pubblicazione)
● Alta scalabilità (aumentano i contenuti e i siti ma
non ram e cpu)
alfonso.focareta@pronetics.it,christian.mongillo@pronetics.it – Pro-netics
Javaday Roma III Edizione – 24 gennaio 2009
9. Performance di un ECMS
Boxes in numeri
● 2 : le macchine di BE
● 3 : anni di sviluppo del progetto
● 5 : sviluppatori impegnati nel progetto
● 6 : le macchine di FE
● 20 : fonti da cui ciclicamente Boxes attinge dati per la
pubblicazione
● 150 : utenti che attualmente utilizzano
l'amministrazione(client)
● 400.000 : picco di accessi contemporanei al sito.
● 600.000 : content attualmente salvati presenti in Boxes.
alfonso.focareta@pronetics.it,christian.mongillo@pronetics.it – Pro-netics
Javaday Roma III Edizione – 24 gennaio 2009
10. ECMS Troubleshooting
Problemi di scalabilità nell'architettura di Boxes
● Publisher : Dovendo per questioni di concorrenza
questo componente analizzare tutto il ramo dei
contenuti era esposto a una degradazione delle
performance inevitabile.
● Soluzioni possibili :
– scalare sull'hardware (soluzione non finale e costosa)
– forti modifiche software (refactoring lenti e costosi)
– grid computing (dividere i task di analisi tra più
installazioni del modulo publisher)
alfonso.focareta@pronetics.it,christian.mongillo@pronetics.it – Pro-netics
Javaday Roma III Edizione – 24 gennaio 2009
11. Dobbiamo scegliere cosa fare?
........il cliente aspetta
........il vostro capo aspetta
........la risposta è?
alfonso.focareta@pronetics.it,christian.mongillo@pronetics.it – Pro-netics
Javaday Roma III Edizione – 24 gennaio 2009
12. GridGain
● Open Source Grid Computing
● Creato e Supportato da GridGain Systems
(Community e Professional)
● Implementazione Map/Reduce
potente,semplice,divertente
http://www.gridgain.com/
alfonso.focareta@pronetics.it,christian.mongillo@pronetics.it – Pro-netics
Javaday Roma III Edizione – 24 gennaio 2009
13. GridGain
● Grid Computing
– Un modo per sfruttare gli ambienti multi-core per
ottenere scalabilità orizzontale.
● Map Reduce
– Paradigma classico nella grid computing per
implementare soluzioni scalabili.
– Modello di programmazione per processare grandi
set di dati
– Metodologia standard per la parallelizzazione di
processi di calcolo onerosi
alfonso.focareta@pronetics.it,christian.mongillo@pronetics.it – Pro-netics
Javaday Roma III Edizione – 24 gennaio 2009
14. GridGain
● Map Reduce:
– Splittare i nostri task in n “job” parallelizzabili
raggruppati per chiave.
– Mappare i nostri job in unità di processo raggruppate
per chiave.
– Merging dei risultati dei singoli processi di calcolo in
un risultato globale di task
alfonso.focareta@pronetics.it,christian.mongillo@pronetics.it – Pro-netics
Javaday Roma III Edizione – 24 gennaio 2009
15. Map Reduce
1.Il task arriva al primo nodo, dove viene
splittato in tre job.il primo è
self-assigned e viene processato
localmente
2.il secondo job viene mandato al
secondo nodo dove viene processato
3.il terzo job viene mandato al terzo nodo
dove viene processato
4.il risultato del secondo job viene
collezionato dal task del primo nodo
5.Il risultato del terzo job viene
collezionato dal task del primo nodo
6.I risultati dei due job dai nodi remoti
vengono collezionati insieme a quello
ottenuto localmente, ridotti dal task e
racchiusi in un unico risultato
alfonso.focareta@pronetics.it,christian.mongillo@pronetics.it – Pro-netics
Javaday Roma III Edizione – 24 gennaio 2009
16. Utilizziamo il Map/Reduce
Il nostro task :
tagliare a fette un filone di pane da 25 metri per il
Nutella Javaday Party!!!
alfonso.focareta@pronetics.it,christian.mongillo@pronetics.it – Pro-netics
Javaday Roma III Edizione – 24 gennaio 2009
17. Utilizziamo il Map/Reduce
Soluzione :
Dividere il filone in 25 parti, assegnare ogni parte
ad un “tagliatore” (quelli in prima fila sono
perfetti). Quando tutti hanno tagliato il loro metro
di pane raggruppare le fette.
alfonso.focareta@pronetics.it,christian.mongillo@pronetics.it – Pro-netics
Javaday Roma III Edizione – 24 gennaio 2009
18. Utilizziamo il Map/Reduce
Il nostro task :
ordinare e raggruppare per colore un mazzo di
carte francesi per il Javaday Texas Hold'em
Tournament.
alfonso.focareta@pronetics.it,christian.mongillo@pronetics.it – Pro-netics
Javaday Roma III Edizione – 24 gennaio 2009
19. Utilizziamo il Map/Reduce
Soluzione :
Dividere le carte in 4 mazzetti assegnati a 4
giocatori (quelli in prima fila...di nuovo :-D) che le
raggruppano per colore. Aggregare i mazzetti di
ogni giocatore per colore e passare
all'ordinamento dei mazzetti.
alfonso.focareta@pronetics.it,christian.mongillo@pronetics.it – Pro-netics
Javaday Roma III Edizione – 24 gennaio 2009
20. GridGain Features
● Map/Reduce avanzato
● Architettura SPI
● Load Balancing
● Fault-Tolerance
● Zero Deployment Model
● Annotation-Based Grid-Enabling AOP
● JMX Management e Monitoring
alfonso.focareta@pronetics.it,christian.mongillo@pronetics.it – Pro-netics
Javaday Roma III Edizione – 24 gennaio 2009
21. GridGain Features
● Configurazione basata su SPI (Service Provider
Interface)
– Discovery SPI
– Topology SPI
– Checkpoint SPI
– Load Balancing SPI
– Collision SPI
– Failover SPI
– Metrics SPI
alfonso.focareta@pronetics.it,christian.mongillo@pronetics.it – Pro-netics
Javaday Roma III Edizione – 24 gennaio 2009
22. GridGain Map/Reduce
● Api a supporto dell'intera fase di map e reduce
– GridTask,GridJob,GridConfiguration,GridFactory
● Gestione asincrona della fase di reduce
● Configurazione checkpoint per task con lunghi
tempi di running
alfonso.focareta@pronetics.it,christian.mongillo@pronetics.it – Pro-netics
Javaday Roma III Edizione – 24 gennaio 2009
23. Checkpoint
a questo punto....
....conosciamo i punti deboli di Boxes....
....siamo “esperti” di grid computing....
....il cliente sta ancora aspettando....
....il capo sta ancora aspettando....
è il momento di....
alfonso.focareta@pronetics.it,christian.mongillo@pronetics.it – Pro-netics
Javaday Roma III Edizione – 24 gennaio 2009
24. Do the right thing!
INTEGRARE ....
alfonso.focareta@pronetics.it,christian.mongillo@pronetics.it – Pro-netics
Javaday Roma III Edizione – 24 gennaio 2009
25. Integrazione
● Individuiamo i processi sequenziali e ripetitivi del
modulo publisher
– Analisi sequenziale dei siti
– Pubblicazione sequenziale dei contenuti modificati
● Individuiamo l'entry point del nostro algoritmo
dove poter integrare GridGain (quale processo
sarà il nostro task?)
● Modifichiamo l'algoritmo del publisher :
introduciamo il Map/Reduce e trasformiamo i cicli
di calcolo in job paralleli
alfonso.focareta@pronetics.it,christian.mongillo@pronetics.it – Pro-netics
Javaday Roma III Edizione – 24 gennaio 2009
26. Integrazione
● Analizziamo e ottimizziamo la nostra griglia
– configuriamo la topologia della griglia e scegliamo
quali nodi effettueranno determinati job.
– “pesiamo” il deployment dei job in base alla “potenza
di calcolo” delle singole macchine. In Boxes esistono
siti con differente quantità di contenuti e con
differente necessità di velocità di pubblicazione
● siti leggeri -> raggrupati in un unico job su macchine meno
performanti
● siti pesanti -> splittati in un unico job sulle macchine più
performanti
alfonso.focareta@pronetics.it,christian.mongillo@pronetics.it – Pro-netics
Javaday Roma III Edizione – 24 gennaio 2009
27. I vantaggi dell'integrazione
● Performance immediate
– abbiamo parallelizzato tutti i processi che erano in una catena
sequenziale (ora i siti vengono analizzati con letture parallele)
● Affidabilità e scalabilità
– abbiamo distribuito il carico di lavoro fra i nodi della nostra
griglia (i processi più pesanti verrano presi in carico dalle
macchine più performanti)
● Facilità nell'upgrade
– usiamo una parte della griglia per garantire la disponibilità
dell'applicativo mentre aggiorniamo gli altri nodi.
alfonso.focareta@pronetics.it,christian.mongillo@pronetics.it – Pro-netics
Javaday Roma III Edizione – 24 gennaio 2009
28. Ottimizzazione graduale
● L'architettura di GridGain ci permette
l'ottimizzazione graduale dell'integrazione
● Ottimizzazione intuitiva grazie alla configurazione
delle SPI
alfonso.focareta@pronetics.it,christian.mongillo@pronetics.it – Pro-netics
Javaday Roma III Edizione – 24 gennaio 2009
29. Contatti
Grazie per l'attenzione!!!!
buona Grid Computing a tutti
alfonso.focareta@pronetics.it
christian.mongillo@pronetics.it
http://www.pro-netics.it
alfonso.focareta@pronetics.it,christian.mongillo@pronetics.it – Pro-netics
Javaday Roma III Edizione – 24 gennaio 2009