Newsgroup: it.comp.java
Titolo: [OT (parzialmente)] valutare system requirements per applicazione in Java

Salve a tutti,
mi trovo davanti alla necessità di dover valutare l'infrastruttura hardware
(e magari anche software) per una applicazione Java per il web che non solo
deve essere ancora sviluppata ma deve essere ancora realmente analizzata e
progettata. Ovviamente mi si richiede una architettura di massima potendo
avere delle stime approssimative fin da ora dei record che il DB dovrà
contenere, del numero di utenti che la utilizzerà, del tipo di operazioni
che andranno a fare ecc. Oltre a questioni di "performance" mi si chiede
anche riguardo ai problemi di "high availability".
Esistono metodologie più o meno precise o anche solo spannometriche per
valutare il tipo di architettura da utilizzare? avete risorse online/testi
da consigliare?
Quanta RAM? Quanti processori? soluzione in cluster? che tipo di cluster?
che tipo di piattaforma? che JVM? ecc. ecc.
Grazie a chi mi saprà essere di aiuto, questo tipo di analisi forse ha un
nome ma non sapendo quale non so neanche cosa cercare su google :-)

Si chiama "dimensionamento", afaik.
Le domande che fai non possono avere risposta se non condividi i dati
sull'applicazione. E' logico che "quanta ram, quanti processori, ecc. ecc."
hanno senso solo se si sa quanto l'applicazione deve "cubare".
Diverso il discorso della soluzione in cluster, tipologia, piattaforma, ecc.
Queste scelte ("Disegno Architetturale") dipendono da molti fattori, tra i
quali il costo e le competenze disponibili... e non solo le performance.
L'HA e il dimensionamento di progetti di una certa grandezza non sono
tematiche sulle quali ci si improvvisa, attenzione.
-- 
---
Francesco Galli / Cinghiale Mannaro
Personal: 
http://cinghialemannaro.splinder.com
TMS project: 
http://tms.inera.it

 
ti ringrazio della risposta prima di tutto.
Non ero in cerca di consulenze gratuite per questo non vi ho annoiato con i
dettagli dell'applicazione! (è comunque una applicazione non eccessivamente
complessa e dal mio punto di vista la cosa più importante sarà la "high
availability" piuttosto che la performance).
Proprio perché non mi vorrei improvvisare vorrei capire dove e come posso
leggere/studiare e in genere imparare a fare di queste valutazioni. Non
credo di essere totalmente a digiuno dei vari sistemi disponibili,
piuttosto mi manca un metodo.
Grazie

 piuttosto mi manca un metodo.
Purtroppo non credo ci sia. Devi conoscere bene tutti i vari sistemi a
disposizione, come metterli in HA, come integrarli in modo che l'HA
continui a sussistere :), avere dei dati di base per poter fare un
dimensionamento: spannometricamente perlomeno numero di utenti,
transazioni per utente in unità di tempo, eventuali sessioni, durata media
della transazione, eventuali picchi, ecc. ecc. 
Poi trovi i dati di dimensionamento per il sw in questione, ti fai un
po'di conti con i tuoi dati e ci aggiungi un buon 100% perchè i benchmark
si sa che sono tarocchi, mescoli tutto e vedi se è credibile. Questo ad un
primo livello (fattibilità), poi se si vuole di più scattano le Proof Of
Concept, POC per gli amici, e si ricomincia.
Ovviamente in tutto questo si da per scontato un esperto di rete, uno di
cluster, uno del DB ed in generale uno per ogni sottosistema, con un
architetto che ha la visione a 360° a fare da collante. Se devi fare tutto
da solo, auguri!
uL
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 da solo, auguri!
per quello che riguarda il networking mi affido agli esperti di chi ci offre
banda e spazio rack, per il resto dici che è così difficile? non stiamo
mica parlando di Google o di decine/centinaia di migliaia di utenti...
Boh... non voglio dire che sia semplice, tante cose non lo sono, non capisco
perché a tante altre domande si risponde "studia questo", "guarda
quest'altro", "io ho fatto così", mentre a questa si risponde "eh.... è un
arte oscura e difficile, che ti credi... mica puoi pretendere... arrivi
così e vuoi subito...", no vabbe', scherzo, però è un po' così dai.
A voi non è mai capitato di dover valutare (non da soli...) situazioni del
genere?
Comunque grazie a tutti :-)

 genere?
beh, dalla mail sembrava una cosa più grande di quella che è. Per farti un
esempio di dimensionamento critico un portale "religioso" di cui ci siamo
occupati ultimamente ha 5 milioni di utenti al giorno, da cui puoi
immaginare i rischi potenziali.
Nel tuo caso sarei ragionevolmente tranquillo! Le tecniche di HA per
un'applicazione da 2000 utenti ed una da 5000000 sono molto diverse.


 
ok, lo sospettavo :-) però mi piacerebbe conoscere più a fondo quelle per
entrambe, così almeno mi avvantaggio per la prossima volta e posso almeno
sperare di far parte del team di stregoni che deciderà dell'architettura da
adottare.
Ciao e grazie

 adottare.
quando ho tempo ti mando una lista di libri da studiare.
ciao


 quando ho tempo ti mando una lista di libri da studiare.
magari!
Ciao

 tipo apache+tomcat+spring o simili?
apache sicuramente
tomcat non è adatto a mio modo di vedere per ambienti di produzione,
soprattutto se in HA
Spring in campana, far vedere a tutti gli AS in cluster gli stessi file di
configurazione potrebbe essere un problema (non ho mai usato Spring in un
contesto importante)


 magari!
- Software Architecture in Practice, Bass, Clements, Kazman, il classico
- Capacity planning for Internet services, Cockroft, Walker, specifico 
- Core J2ee patterns, Alur, Crupi et al i pattern architetturali relativi
a j2ee
ovviamente ci stanno bene pure Mastering EJB, 3rd edition , che contiene
diverse info sul 
clustering a l'ha in generale degli aS, e EJb design pattern, tutti e due
scaricabili da serverside
Ce ne sarebbero anche altri, ovviamente, ma puoi partire da qui e seguire
la strada, 
approfondendo quello che ti serve di più. Sono un ottimo punto di partenza.


 contesto importante)
mmm non so che problemi potrebbe dare spring... in fondo è un framework 
piuttosto generico, direi un insieme di classi che lavorano secondo un 
pattern unico (IOC), non fornisce alcun "servizio" (persistenza, 
gestione sessioni ecc.), semplificando si potrebbe dire che 
"autocostruisce" gli oggetti di cui hai bisogno nella maniera in cui ti 
servono a seconda del contesto, tutto qua (ma in realtà il sistema è 
molto potente), i suoi file di configurazione fanno parte integrante 
dell'applicazione e in genere cambiano solo quando cambia l'applicazione.
Ciao e grazie ancora, mi è molto utile scambiare opinioni con chi come 
te ha sviluppato per grosse dimensioni

 
grazie mille!!!! proprio quello che volevo! (anche se poi la parte 
soluzioni hardware immagino che bisogna andarsela a vedere produttore 
per produttore...)
Ciao

 Ciao e grazie ancora
Se vieni a Milano per la Java Conference faremo vedere un sacco di cose
interessanti a tal 
proposito...
hth,
