Il tempo di avvio dell'applicazione Web è davvero così importante?


11

Ha avuto una conversazione con qualcuno sull'aggiunta di un codice di inizializzazione all'avvio dell'applicazione e si è lamentato di ciò causando un aumento del tempo di avvio. Non poteva davvero indicare una ragione (sensazione di intestino o qualcosa del genere, non lo so). Questa non è un'applicazione per uso intensivo e inizia tra circa un minuto o giù di lì, la distribuiamo alcune volte all'anno.

Ricordo di aver letto tali consigli su domande su SO qualche tempo fa, le persone che consigliavano di inizializzare all'avvio invece sull'accesso alla pagina con il marchio "se puoi permetterti la penalità".

Ho lavorato con app Web che sono iniziate da 30 secondi a 4-5 minuti, ma una volta online hanno oscillato.

Quindi cosa mi sto perdendo? A meno che non sia un'applicazione vitale come ... Non lo so ... per il mercato finanziario, le applicazioni mediche, l'esplorazione dello spazio ecc., È davvero così importante il tempo di avvio?

PS Mi riferisco rigorosamente alle app Web, le app desktop sono destinate a iniziare alla velocità della luce.


È stato definito un requisito non funzionale per l'avvio dell'applicazione o è solo una discussione all'interno dello sviluppo?
Stuper:

@StuperUser: nessun requisito, solo una discussione finora.
JohnDoDo,

Esiste effettivamente un sito di User Experience in cui questo sarebbe meglio chiedere.
Ciclope,

@Cyclops: in realtà sono più interessato ai motivi sul lato server del recinto, non sul lato utente.
JohnDoDo,

Risposte:


18

Può essere un grande fattore durante lo sviluppo: se la tua piattaforma non supporta la modifica del codice in un'applicazione in esecuzione, il tempo di avvio diventa parte del tuo ciclo di feedback e lì, anche 30 secondi sono dolorosi e minacciano la produttività.

Per l'ambiente di produzione, non importa davvero; o un po 'di tempo di inattività è accettabile e 5 minuti non sono ancora molti, oppure non lo è e devi implementare una sorta di passaggio dal vivo.


Sì, ho pensato tanto al ciclo di sviluppo, ma non è come cambiare una virgola, distribuire, cambiare un nome di variabile, distribuire ecc. Distribuisco personalmente sullo sviluppo un massimo di 10 volte al giorno. Un minuto di avvio o 1.2 non fa molta differenza.
JohnDoDo,

7
@JohnDoDo: Quanto di tutto ciò è un flusso di lavoro davvero naturale e quanto evita abitualmente una lunga distribuzione? Un rapido ciclo di feedback può aiutare enormemente la produttività. A volte apportare piccole modifiche incrementali e vedere immediatamente il risultato è davvero ciò di cui hai bisogno. 50 anni fa la gente ha scritto programmi su carta, li ha inviati a un operatore e ha ottenuto un risultato stampato il giorno successivo, a volte solo un errore del compilatore. Non ti sembra un modo orribilmente inefficiente di lavorare con te? Bene, per molti programmatori, le tue 10 implementazioni al giorno sembrano proprio così.
Michael Borgwardt,

1
Se possibile, valutare l'opzione di fare un "finto" init o di avere le strutture serializzate su disco con i dati di test per accelerare i tempi di avvio durante lo sviluppo.
Vinko Vrsalovic,

Sono d'accordo con Vinko, c'è un modo per disattivare le costose funzioni init () quando si costruisce in modalità Debug? Non preoccuparti se ciò che stai inizializzando ti darà risultati diversi su Dev e Production.
AndyMcKenna,

4

Credo che questo sia il caso in cui il famoso principio dialettico di Hegel di transizione dalla quantità alla qualità funziona davvero.

Vedi, il tempismo è sempre importante. Concordo con le parole di Michael Borgwardt sull'importanza della costruzione rapida durante lo sviluppo / test, ma insisto sul fatto che (potrebbe essere in qualche altro modo) è anche molto importante per la produzione.

Ogni sviluppatore che ha distribuito un codice errato nella produzione sa che l'aggiornamento rapido fornito in 5 minuti e in 1 minuto sono cose molto, molto diverse.


2

La vera domanda è se l'app funzionerà senza l'inizializzazione. Abbiamo nuovi assunti che sono ossessionati dalle "prestazioni", la mia risposta è che non mi interessa quanto velocemente dai risultati sbagliati. IMHO taglienti, algoritmi mangling perché "sarà più veloce in questo modo", e altre grandi idee introducono solo bug.

Se è richiesta l'inizializzazione, fallo. Quanto tempo sarà sprecato quando gli utenti finali ottengono risultati errati, alla fine capiscono che l'app Web è sbagliata, ti chiamano e ti lamentano e devi tornare indietro e debug / correggere / test / ridistribuire? ora chiedi al tuo collega come è stato risparmiato tempo. (e scommetterei comunque che i core del tuo server sono inattivi al 99%)


2

Questa domanda non fa alcuna piattaforma particolare. Ci sono piattaforme su cui il tempo di avvio è davvero molto importante.

Ad esempio, su Google App Engine; se la tua pagina non ha accesso (o meglio, accede meno frequentemente di un'altra applicazione sullo stesso nodo), verrà scaricata occasionalmente.

Pertanto, se ti trovi nella parte inferiore del 99% della frequenza di accesso al sito, il tempo di avvio è il tempo di accesso; l'applicazione viene riavviata a quasi tutti gli accessi. se siete nella top 1%, allora l'applicazione è iniziare su molti nodi, e anche se molti accessi di pagina torneranno da un'istanza già iniziato, alcuni ancora non lo farà, e in modo da avere intermittente, i tempi di accesso lungo .

La stessa cosa è vera su molti altri ambienti di hosting. Le perdite nelle librerie di terze parti, o anche nel proprio codice che hanno semplicemente eluso la scoperta, potrebbero significare che l'unico modo affidabile per eseguire il servizio Web è di ricaricare ogni tante richieste (spesso tra 100 e 10.000), e così il tempo di avvio è pagato frequentemente. L'uso di questo modello è accettabile quando un'app perde, ma si avvia rapidamente; è impraticabile quando l'app impiega più di qualche secondo per avviarsi.


1

Stai correndo il rischio che la tua applicazione venga considerata scadente o, peggio ancora, la tua capacità di sviluppo. Ora, questa app potrebbe far risparmiare a qualcuno così tanto tempo e / o svolgere un'attività così necessaria che gli utenti riconoscenti possono guardare oltre il lungo avvio.

La programmazione dell'app potrebbe richiedere più tempo per caricare pigramente l'app, ma solo le parti interessate possono determinare se ne valga la pena. Ho avuto un rapporto che è durato 55 secondi. e l'abbiamo portato a 35. Nessuno se ne è accorto. Anche se ho trascorso il doppio del tempo a ottenerlo da 35 a 18, tutti lo hanno notato ed erano grati e colpiti. Passare da 5 a 3 minuti per un'app utilizzata poche volte all'anno non è un grosso problema. Gli utenti avranno solo meno tempo da trascorrere su Facebook o per prendere un caffè.

La percezione è la chiave. Se il calcolo non è soddisfatto dei team di sviluppo in generale e di questa app in particolare, potresti voler costruire un po 'di buona volontà e accelerare la cosa.


Tuttavia, il tempo di avvio dell'applicazione Web non dovrebbe influire sugli utenti normali. L'altro sviluppatore è infastidito perché riavvia personalmente l'app più volte al giorno come parte del normale sviluppo.
AndyMcKenna,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.