Come rilasciare lentamente un'applicazione Web a un numero sempre maggiore di utenti in modo che troppi utenti simultanei non blocchino il tuo sito?

5

Ho un'applicazione web che mi aspetto di diventare virale abbastanza rapidamente.

Come posso controllare il traffico in modo che non si blocchi in modo eccessivo sotto carico?

Questa applicazione non richiede il login dell'utente. Sarà testato correttamente, ma non sono sicuro di quale tipo di traffico aspettarsi fino a quando non lo realizzerò.

    
posta Mag20 02.11.2013 - 18:07
fonte

4 risposte

5

È più difficile da controllare senza un accesso.

Un'altra opzione è proteggere il sito con una "chiave di accesso" che puoi quindi distribuire ai tuoi utenti beta. Personalmente non mi piacciono questi e inibiranno l'espansione iniziale del tuo sito poiché tutti gli utenti avranno bisogno di questa chiave e il sito non verrà indicizzato da Google, ecc.

La cosa migliore da fare è eseguire alcuni test di carico. Affronta i colli di bottiglia nel tuo codice e disponi di un piano di ridimensionamento se pensi che si espanderà rapidamente. Devi preparare questo piano in modo che tu possa semplicemente fare clic su un pulsante e aggiungere un altro server con bilanciamento del carico ecc.

    
risposta data 02.11.2013 - 18:51
fonte
1

Qual è il collo di bottiglia?

Supponendo che la larghezza di banda sia il tuo problema, ad es. servendo immagini ad alta risoluzione, sarà utile utilizzare una CDN.

Se il tuo sito è computazionalmente costoso, il bilanciamento del carico tra più server suona come la strada da percorrere. Ospitare la tua webapp in un cloud renderà questo ridimensionamento più semplice e potrai sempre ridimensionare o passare a una soluzione conservativa quando puoi stimare con precisione il numero di utenti. Scalare su più server può diventare difficile se gli utenti interagiscono tra loro usando il tuo sito. In tal caso, la comunicazione peer-to-peer tra utenti o una coda di messaggi tra i tuoi server sembra una buona idea.

Potresti voler modificare il tuo stack tecnologico verso prestazioni migliori. Il contenuto statico può essere memorizzato nella cache. Se si sta eseguendo una lingua interpretata sul server, un'implementazione alternativa potrebbe avere un profilo delle prestazioni migliore (possibilmente scambiando tempo di avvio o memoria per un'esecuzione complessiva più veloce). Non ci sono scuse per usare gli script CGI in questo giorno ed età per una moderna webapp.

Non so come si svilupperà il tuo sito. Se stai mirando a un pubblico internazionale, una possibilità sarebbe quella di rilasciare il sito a una certa ora locale per ciascun utente. Una variazione di questo sarebbe di visualizzare il sito come chiuso a una certa percentuale di IP quando il carico è alto. Tuttavia, è preferibile richiedere un indirizzo email per accedere. Se il carico è alto, dì all'utente che riceverà l'e-mail di attivazione tra una decina di minuti (ma poi dargli la priorità). Potresti anche fornire URL con un token di accesso a persone specifiche prima di aprire ufficialmente il sito. Puoi quindi provare a stimare l'interesse del pubblico da varie metriche come la percentuale di persone che hanno usato i loro token, il numero di tweet, ....

Un lancio controllato può essere ottenuto dando a ciascun utente in pre-apertura un numero di ulteriori segnalini, che può dare via. Ciò ti consente di regolare la velocità di espansione, fino a quando non ti apri al pubblico in generale. Fai attenzione a tali tattiche: mentre la scarsità artificiale può aumentare l'interesse, questo rende anche più difficile per il tuo prodotto "diventare virale".

Se ci sono poche fasce fisse per gli utenti disponibili, è possibile visualizzare la loro posizione in una coda di attesa e forse dare un indizio sul tempo di attesa rimanente. Come puoi ridurre il tempo di attesa percepito è una domanda interessante sulla UX.

Alla fine, questa non è solo una domanda tecnica interessante, ma anche una questione di marketing .

    
risposta data 02.11.2013 - 19:12
fonte
1

Essendo un principiante di questo sito e il rischio di non conoscere l'etichetta corretta, perché non progettare l'applicazione con il ridimensionamento in mente, immediatamente. Inizia con un NoSQL scale-out o un database simile sul back-end, il livello di caching sotto il sito, i servizi distribuiti che si ridimensionano automaticamente (SOA, se vuoi) o come qualcuno dice premendo il pulsante. La finestra delle opportunità è ristretta alle cose, perché non pianificare una rapida espansione e cogliere l'onda contro il tentativo di controllare gli utenti. Ci sono framework software che puoi costruire con adesso, a seconda delle tecnologie che ti servono, che hanno una scala in mente.

    
risposta data 03.11.2013 - 05:17
fonte
0

Utilizza un Load Balancer per indirizzare il traffico verso due siti, uno dei quali è il sito live, l'altro è una pagina di benvenuto con un messaggio amichevole che chiede al visitatore di riprovare più tardi ...

    
risposta data 03.11.2013 - 04:51
fonte

Leggi altre domande sui tag