GridGain Aumentare scalabilità e performance con l'aiuto del Open Source e della Grid Computing Alfonso Focareta, Christian Mongillo Pro-netics
Introduzione Enterprise Cms? ECMS: un caso di studio Problematiche e troubleshooting GridGain e i vantaggi della grid-computing
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
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)
ECMS un caso reale Boxes (nome fittizio) Tecnologie e framework utilizzati : JMS WICKET FRAMEWORK DOZER XSTREAM QUARTZ SPRING HIBERNATE GRIDGAIN (*)
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.
ECMS un caso reale
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)
Performance di un ECMS 2 : le macchine di BE Boxes in numeri 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.
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)
Dobbiamo scegliere cosa fare?...il cliente aspetta...il vostro capo aspetta...la risposta è?
GridGain Open Source Grid Computing Creato e Supportato da GridGain Systems (Community e Professional) Implementazione Map/Reduce potente,semplice,divertente http://www.gridgain.com/
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
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
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
Utilizziamo il Map/Reduce Il nostro task : tagliare a fette un filone di pane da 25 metri per il Nutella Javaday Party!!!
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.
Utilizziamo il Map/Reduce Il nostro task : ordinare e raggruppare per colore un mazzo di carte francesi per il Javaday Texas Hold'em Tournament.
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.
GridGain Features Map/Reduce avanzato Architettura SPI Load Balancing Fault-Tolerance Zero Deployment Model Annotation-Based Grid-Enabling AOP JMX Management e Monitoring
GridGain Features Configurazione basata su SPI (Service Provider Interface) Discovery SPI Topology SPI Checkpoint SPI Load Balancing SPI Collision SPI Failover SPI Metrics SPI
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
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...
Do the right thing! INTEGRARE...
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
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
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.
Ottimizzazione graduale L'architettura di GridGain ci permette l'ottimizzazione graduale dell'integrazione Ottimizzazione intuitiva grazie alla configurazione delle SPI
Contatti Grazie per l'attenzione!!!! buona Grid Computing a tutti alfonso.focareta@pronetics.it christian.mongillo@pronetics.it http://www.pro-netics.it