Come scegliere tra framework leggero o pesante per applicazione web [chiuso]

7

Nel mio attuale ruolo di sviluppatore software in un negozio Java / Spring / Hibernate / JSF , a volte mi viene chiesto di sviluppare app web su larga scala con molti sistemi di interfaccia e / o database di grandi dimensioni < em> così come app web su piccola scala con basso traffico e / o semplici database. Per accogliere questa variazione, mi piacerebbe avere 2 stack tecnologici tra cui scegliere, a seconda del tipo di applicazione che mi viene chiesto di sviluppare. Penso che questo ci avvantaggere perché penso che il nostro stack tecnologico di cui ho parlato sopra sia un po 'troppo ingegnoso o ingombrante per applicazioni CRUD piccole e semplici.

Se, ad esempio, ho scelto Spring Framework per le mie app su larga scala e Riproduci! Framework per le mie app su piccola scala, come faccio a scegliere quale utilizzare per una determinata applicazione? In altre parole, come posso sapere se un'applicazione web proposta si qualifica per un framework pesante come Spring o potrebbe trarre beneficio da un framework leggero e agile come Play?

Qualcuno può darmi dei checkpoint di massima per aiutarmi a decidere quale tipo di struttura usare (pesante o leggera)? Se si utilizza questo approccio a due quadri, si prega di dirmi quali criteri si utilizzano per decidere quale struttura è la soluzione migliore per una determinata applicazione web.

    
posta CFL_Jeff 25.02.2013 - 19:57
fonte

1 risposta

3

In effetti un'implementazione su scala reale Java / Spring / Hibernate / JSF può essere un po 'troppo ingegnerizzata per i requisiti di molti sistemi su piccola scala, tuttavia in genere valuto i nuovi requisiti applicativi sui seguenti fattori per aiutarmi a determinare l'architettura appropriata: / p>

Carico utente previsto

  • Qual è il carico previsto per l'utente?
  • Ci sono potenzialmente un numero enorme di utenti?
  • Gli utenti eseguono attività che utilizzano quantità elevate di risorse?
  • L'applicazione deve scalare orizzontalmente con un carico maggiore?

Ambito futuro atteso

Questo è difficile da giudicare a volte perché l'ambito può a volte essere il capriccio o la volontà di un product manager o addetto alle vendite. Se prevedi che esiste anche la minima possibilità che un venditore possa provare a marchiarlo e venderlo a chiunque non sia l'originale stakeholder, allora probabilmente è meglio adottare un approccio più stratificato.

Esigenze di sistema distribuito

Ci sono dei bisogni previsti per i diversi consumatori di ottenere informazioni diverse in modi diversi (app per dispositivi mobili, ETL, SSO, servizi web pubblici, ecc ...) quindi si desidera sempre avere un approccio di distribuzione a tre livelli e avere logico separazione di componenti e strati. Questi tipi di requisiti architetturali saranno meglio serviti da un approccio più ingegnerizzato.

Vincoli di budget

Qual è il budget assegnato per ospitare l'applicazione in produzione? Richiederà costose licenze software proprietarie, più VPS, cloud computing ad alta disponibilità? Forse se hai solo un budget limitato, allora le tecnologie di hosting CHEAP come PHP potrebbero avere molto più senso.

Limiti della conoscenza

Qual è il tuo team più efficiente nell'implementazione? Quali sono le loro abilità e debolezze. Sicuramente Play Framework può sembrare interessante per lo sviluppo rapido di applicazioni, tuttavia se c'è una curva di apprendimento significativa, allora forse rischi meno nell'approccio ingegnoso e ingombrante che è ben compreso.

Limiti di tempo

Quanto tempo hai per sviluppare l'applicazione. Ciò gioca anche nei vincoli della conoscenza, poiché il tempo necessario per apprendere una nuova tecnologia può essere un'imposizione temporanea.

    
risposta data 25.02.2013 - 21:02
fonte

Leggi altre domande sui tag