L’importanza del tempo di servizio nelle moderne applicazioni web

Il tempo di caricamento delle pagine è una componente fondamentale dell’esperienza utente, durante la conferenza The User and Business Impact of Server Delays, rappresentanti dei team di Google Search e Microsoft Bing hanno mostrato come l’introduzione di ritardi nel servizio delle pagine possono avere un effetto negativo significativo, anche permanente, sull’esperienza utente.

Nella figura sottostante vengono presentati i risultati dell’esperimento condotto dal team di Bing, dove vengono introdotti ritardi crescenti da 50ms a 2000ms e vengono valutati i vari effetti che tali ritardi hanno sugli utenti.

 

delay

 

Come si osserva nella tabella, l’introduzione di ritardi porta a una generale perdita di soddisfazione dell’utente, una diminuzione del numero di query e di click. Nonostante le perdite percentuali possano sembrare basse per piccoli ritardi, risultano particolarmente significate quando applicate a milioni di ricerche.

In un sondaggio effettuato da Google è stato richiesto agli utenti quanti risultati della ricerca volessero di default; dal sondaggio è emerso che gli utenti desideravano più risultati e, la compagnia ha quindi condotto un esperimento, fornendo ad alcuni utenti una trentina di risultati. Ciò ha determinato un sensibile aumento del tempo di servizio per generare la risposta alla query (da 0.4s a 0.9s) e ciò ha causato una perdita del 20% del traffico (fonte)

Uno degli approcci per ottimizzare il tempo di caricamento delle pagine è quello di utilizzare un HTTP reverse proxy che funge da cache, come ad esempio Varnish, questi salvano il risultato dell’elaborazione di una pagina dinamica nella cache, azzerando così il tempo di elaborazione per le future richieste. Quando l’applicazione web genera i contenuti in base alle preferenze dell’utente (pensate per esempio al vostro social network preferito)  questo approcciò non è utilizzabile.

La risposta di Facebook al problema delle prestazioni dei siti con contenuti dinamici che utilizzano PHP è HHVM, (di cui parlerò in un post successivo) una virtual machine che compila a run-time il bytecode PHP in codice macchina nativo, per migliorare le performance, in modo simile a come viene fatto per altri linguaggi moderni come C# e Java.

Nonostante questa virtual machine sia giovane, è il motore di Facebook, uno dei più grandi software PHP mai scritti, costituito da decine di milioni di righe di codice (fonte)

Facebook ha dichiarato che con l’utilizzo di HHVM ha realizzato un incremento di 9 volte il throughput delle richieste e ha ridotto di 5 volte il consumo di memoria rispetto all’utilizzo di PHP 5.2 engine + APC [16]. Recentemente anche Wikipedia ha migrato da PHP 5.3 a HHVM (fonte)

In un lungo post di Wikimedia Foundation, consultabile online sono state discusse approfonditamente le motivazioni che hanno spinto verso la migrazione e i benefici che ne sono derivati.

Tra questi vi sono:

  • Il livello di utilizzo della CPU sui server di wikipedia è calato drasticamente dal 50% al 10%.
  • L’acquisto di server pianificato è stato ridotto in modo sostanziale.
  • Il tempo medio per salvare una modifica a una pagina di Wikipedia è stato ridotto da circa 6 a 3 secondi.
  • Il tempo medio di caricamento di una pagina, ovvero il tempo necessario per generare una articolo di Wikipedia per la consultazione è calato da 1.3 secondi a 0.9 secondi.

Se siete incuriositi dall’argomento, continuate a seguirci, parleremo ancora di questo tema nei prossimi interventi sul blog.

Alla prossima!