Which direction should I go? What should I taking into consideration?
Non posso dirti quale direzione andare perché ciò richiederà un'attenta considerazione del dominio del problema, degli utenti finali e alcuni test. Tuttavia, posso aiutarti a capire cosa prendere in considerazione.
Load Balancing
I server delle applicazioni sono corretti. Potresti avere 2, 3 o anche 4, ma qualunque sia il numero, hai un certo numero. Puoi ridimensionare orizzontalmente aggiungendo server, ma c'è un costo lineare diretto per questo.
D'altra parte, hai N client. Ogni utente che visita il tuo sito ha la propria CPU e memoria. In termini di esecuzione del codice, questa è CPU e memoria libere :) Difficile da superare.
I tuoi clienti forniscono anche un livello di isolamento. Il lavoro di un cliente non influisce sul lavoro di un altro per quanto riguarda il codice lato client. Se tutto viene eseguito sul server, una richiesta HTTP che va storta può impantanare un server condiviso da molti utenti.
Sicurezza
Non credere che il client esegua calcoli che influenzano i dati che vengono condivisi con altri utenti a meno che tale calcolo sia derivato da dati che sono stati immessi comunque. Ad esempio, sarebbe opportuno utilizzare JavaScript nel browser per convertire l'utente inserito "05-15-2014" in una data ISO, ma se il server deve registrare il tempo in cui il client ha eseguito un'azione, non chiedere al il cliente deve fornire il tempo. Basta catturare l'ora sul server quando si verifica quella richiesta.
Performance
I browser possono essere lenti a fare un sacco di numeri crunch. Fino alla recente guerra del browser JavaScript, JavaScript in generale era un linguaggio lento, non dovuto a problemi con la lingua, solo alle implementazioni di runtime. Se il server è in grado di calcolare qualcosa utilizzando una CPU veloce e di qualità server e inviarlo, ciò potrebbe funzionare meglio che lasciare che sia il client a farlo.
La prevedibilità
Le macchine client variano. Ci sono utenti che eseguono Safari su Mac, Chrome su un computer Windows 7 a 64 bit con 8 GB di RAM e utenti che eseguono IE8 su Windows XP a 32 bit. Non è possibile prevedere come verrà eseguito il codice lato client perché ci sono fattori importanti fuori dal proprio controllo. I tuoi server, d'altra parte, sono molto sotto il tuo controllo. Puoi monitorare le loro prestazioni e ridimensionarle in base alle esigenze per bilanciare prestazioni e costi.
Larghezza di banda
Il calcolo di qualcosa sul server potrebbe essere più veloce, ma se si finisce per dover trasferire un grande set di dati verso il client su Internet, non solo c'è un componente di latenza, ma è probabile che venga addebitato l'utilizzo della larghezza di banda . Pertanto, se disponi di un calcolo economico che genera un set di dati di grandi dimensioni (diciamo un array di tutti i numeri pari fino a 1 milione), lascia che sia il client a farlo.
Monitoraggio
I tuoi server sono sotto il tuo controllo e quindi puoi monitorare le loro prestazioni. Se le richieste a una pagina specifica restituiscono risultati al client dopo 5 secondi, è più facile rilevare e eseguire il debug sui server. Esistono strumenti e meccanismi per monitorare le prestazioni lato client, ma i trade-off e le complessità sono in genere più elevati (ad esempio, come si fa a riportare i dati in una posizione centrale e a segnalarli?), Ad esempio:
- Come si riportano i dati in un posto centrale?
- Risultato prestazionale dell'esecuzione di codice aggiuntivo
- Per i clienti in cui le prestazioni sono estremamente negative, potresti persino non ottenere le misurazioni, il che distorce le tue metriche perché le peggiori prestazioni sono ciò di cui hai bisogno di sapere di più.
Le prestazioni lato server possono essere monitorate tramite file di registro.