Quali tecniche useresti per un'applicazione web java di prossima generazione? [chiuso]

0

Lavoro in un sito simile a Foursquare e Yelp, con circa 100000 richieste uniche ogni settimana che generano contenuti, in costante crescita. Attualmente stiamo usando:

  • Seam come framework web Java.
  • MySQL come DB
  • Ibernazione come ORM
  • Sospendi la ricerca come indice
  • EhCache per la memorizzazione nella cache.

Dal momento che il nostro sito sta lentamente uscendo dal setup corrente e ha un sacco di codice legacy, è tempo per noi di iniziare a pensare a un'importante modifica / modifica dell'impostazione.

  1. Framework Web

    Non siamo pronti a cambiare la lingua, ma ci stiamo orientando verso Spring Web Framework, poiché:

    • Seam non c'è più.
    • Quasi tutti noi abbiamo lavorato con Spring e mi è piaciuto.
  2. DB e ORM

    Abbiamo fatto una piccola ricerca e stiamo pensando a MongoDB.

  3. Indice

    Abbiamo bisogno di avere un indice separato se usiamo MongoDB?

  4. Cache

Quindi la mia domanda è fondamentalmente:

Se prendi in considerazione Spring Web Framework e MongoDB, come sarebbe una buona installazione per un'applicazione web in crescita e gestisce un sacco di utenti che hanno effettuato il login generando input ed eseguendo ricerche?

Modifica Vorrei ringraziare tutti voi per aver trovato il tempo di rispondermi, ma la risposta che sto cercando dovrebbe essere più specifica:

"Scegliamo Spring come il nostro framework web e Freemarker come linguaggio template dal momento che freemarker è veloce .... Se usi MongoDB non avrai bisogno di un indice separato per fare ricerche geografiche da quando MongoDB supporta le query basate sulla localizzazione out-of-the-box ... Ho un'ottima soluzione cache per questa configurazione è ... Nel mio precedente progetto abbiamo scelto di usare < strong> Apache Solr come nostra piattaforma di ricerca perché questo risolve il problema con gli aggiornamenti rapidi ... "

Grazie // Jakob

    
posta jakob 13.11.2011 - 15:29
fonte

2 risposte

4

Avrai voglia di fare qualche ricerca seria.

In generale

Non sembra che tu abbia una chiara idea del profilo delle prestazioni della tua applicazione / stack tecnologico. Dove sono i punti deboli? Perché è necessario sostituire?

Prendi prima le misurazioni in modo da avere qualcosa per misurare i miglioramenti rispetto all'avanzamento.

Questo ti aiuterà ad evitare l'aggiunta di tecnologie / livelli non necessari che potrebbero aiutare meno di quanto pensi e in alcuni casi persino ostacolare!

Sostituzione del framework Web

  1. Dai un'occhiata alla presentazione comparativa di Matt Raible su JVM Web Framework e poi rilascia il 20 criteri che utilizza in un foglio di calcolo e applica loro le ponderazioni in base ai requisiti funzionali e non funzionali.

  2. Scegli 2-3 che sembrano adattarsi meglio alle tue esigenze e prototipare alcune pagine / UI / Ux / flusso di lavoro con quelle. Probabilmente trascorri 2-3 giorni su ciascuno come minimo (1 settimana se puoi farla franca)

Archivio dati

  1. Quali sono le caratteristiche di cui hai bisogno da questo archivio dati? Lettura veloce, scrittura lenta? Qualcos'altro? Distribuito? Transazionale?

  2. Ha bisogno di essere Object based? Relazionale?

Dopo aver chiesto e risposto ad alcune di queste domande, è necessario selezionare 2-3 datastore e prototipi con loro, proprio come faresti con la scelta del framework web. Alcuni dei popolari NoSQL DB al momento sono MongoDB (anche se potrebbe ancora avere quel problema di blocco globale, non sono sicuro), Cassandra e CouchDB. Ma non prendere la parola di qualcun altro per questo. Misuralo tu stesso.

Fornitura del cloud

Per inciso, hai esaminato il caso finanziario per questo? Con il tuo tasso di espansione, alcune opzioni cloud private / pubbliche potrebbero davvero aiutarti.

Spero che aiuti (HTH) un po ': -)

    
risposta data 13.11.2011 - 16:14
fonte
0

La presentazione di confronto di Matt Raible è piuttosto debole e un po 'distorta (quest'ultima che ho letto in rete). Come spesso accade, le risposte vengono chiaramente seguite dai criteri che scegliamo. Tuttavia, un pubblico diverso ha naturalmente criteri diversi. Esempi. Lo studente preferirà qualcosa che è descritto in un libro di testo che può prendere in biblioteca. Il CEO della grande azienda probabilmente (succede spesso) preferisce qualcosa venduto da un'azienda di marca (come IBM). La piccola azienda avrà la possibilità di scegliere una tecnologia che la maggior parte degli ingegneri conosce o preferisce. Lo scienziato avrà il suo approccio.

In effetti ci sono pochissime pubblicazioni oneste che mettono a confronto diversi Java Web Framework. Il lavoro di Matt ha messo tutti i criteri che conosce in un grande mucchio e ha mancato un altro. Non ricordo che abbia menzionato criteri come "orientato ai componenti" che è cruciale (se non un sinonimo) per il riutilizzo del codice.

La primavera potrebbe essere buona ma non nel livello di presentazione. AFAIK di solito usa Struts che è obsoleto. Come minimo perché è legato a JSP che è definitivamente (per definizione da Oracle incluso in Java EE 6) obsoleto. In effetti è diventato obsoleto prima.

Considerare l'utilizzo di HybridJava per il livello di presentazione con prestazioni FANTASTICHE.

@maple_shaft "HybridJava ... è interessante ma sembra molto verde" - In un certo senso sì - non ancora ampiamente utilizzato. Strumenti come i plugin ancora in fase di sviluppo iniziale. D'altra parte nella sua base scientifica non cambia già da 2 anni. Specificamente - la lingua non cambia (e quindi il codice del compilatore non cambia). E persino nessun cambiamento è previsto qui. Se puoi aggiungere qualche idea qui - prova, il team sarà felice di implementare! Ironia della sorte il tutorial non diventerà più grande - giusto perché uno degli obiettivi principali era rendere tutto descrivibile in poche pagine e esattamente in quello che HybridJava eccelleva.

Usalo e diventerà giallo.

    
risposta data 14.11.2011 - 03:41
fonte

Leggi altre domande sui tag