"Anche se non nei prossimi mesi" profuma di ottimizzazione prematura. Non farlo:
-
Non ne vale la pena. Molte persone, quando realizzano un progetto, credono che il loro progetto sarà il secondo Facebook. Poi lo rilasciano e poi notano che dieci visitatori al mese sono il meglio che possono fare. Spendere meno tempo e denaro per l'ottimizzazione per un'ulteriore scalabilità e più tempo per pensare al progetto stesso sarebbe di aiuto.
-
È come avere i colli di bottiglia e la profilazione: hai sempre l'impressione che tu sappia perfettamente dove si trova il collo di bottiglia e, nella maggior parte dei casi, scopri di aver sbagliato durante la profilazione. Fai prima la tua domanda. Guarda come viene usato. Profilalo Raccogli dati BI. Raccogliere le metriche sul rendimento. Analizzalo. Controlla se la tua analisi era giusta. Fai le previsioni sul futuro, basandoti sulle tue analisi, quindi ottimizza per la scalabilità ciò che hai veramente bisogno di ottimizzare.
Ad esempio, un'applicazione web scalabile deve poter essere ospitata su più server. L'ultimo progetto che ho realizzato per il mio cliente era concepito per essere scalabile. C'è stata una scelta: o passiamo 1,5 mesi in più per far funzionare l'app Web su diversi server, oppure il cliente acquista un server di alta qualità (solo una macchina) e l'app Web è ospitata solo su questa macchina. Era molto meno costoso acquistare un server costoso, contando sia il costo diretto (prezzo del server rispetto al prezzo di 1,5 mesi di lavoro) sia i risparmi a lungo termine (consumo di energia di un server di alta qualità rispetto al consumo di diversi bassi -end server). Ora l'app è in esecuzione da alcuni mesi e, in base alle metriche, se un giorno si presentasse un problema con la scalabilità, ciò riguarderebbe in primo luogo il database e in secondo luogo l'infrastruttura di rete (switch, router, ecc. ).
Ora un'applicazione può essere più o meno scalabile su più punti:
-
Database: in base alla mia esperienza personale, la maggior parte dei problemi relativi alla scalabilità provengono dal database. Speriamo che ci siano molti modi per rendere il database scalabile per ogni motore di database di livello industriale, e anche prima ci sono molti modi per migliorare la struttura del database e per ottimizzare le query . Il caching aiuta anche
-
Rete: la larghezza di banda può essere un problema reale in alcune configurazioni e, a volte, non puoi fare nulla senza fare spese che non ti puoi permettere. Per evitare di essere bloccato a questo livello, puoi ottimizzare il design visivo del sito web in modo da avere meno immagini o immagini compresse migliori , ottimizzare il layout della pagina, ridurre le richieste HTTP (tramite sprite CSS ), ridurre la quantità di codice HTML inviato (tramite AJAX ), ecc. Compressione HTTP è un must. Caching del browser , ma le tue metriche potrebbero mostrare che molti client hanno una cache vuota.
-
Utilizzo della CPU e della memoria: anche il porting di un'applicazione ospitata da diversi server può essere doloroso, sia a livello di infrastruttura (hardware) che a livello di applicazione (software). Per evitare ciò, utilizza la memorizzazione nella cache e profila l'applicazione, rimuovendo progressivamente i bottlenecks .