Quando si ha a che fare con un sito web con moltissime visite, prima o poi si dovrà fare i conti con le risorse insufficienti, l’inefficienza del sito e col portafogli.
Col portafogli perchè se continuerete ad avere un sito lento, non venderete; ma anche perchè per aumentare le performance probabilmente vi venderanno servizi cloud e servizi di hosting da svariate migliaia di euro al mese.
Questo è infatti il modo di ragionare puramente commerciale e per niente etico di molti fornitori di hosting.
Nella maggior parte dei casi invece sarebbe bastato solo rivolgersi alle persone giuste per fare un tuning intelligente del sistema, sostituire eventuali servizi con equivalenti più efficienti e mettere in piedi tecniche per massimizzare le performance e minimizzare i costi.
Verosimilmente in alcuni casi potremmo dimezzare i costi o addirittura decimare, aumentando le prestazioni in quei casi particolarissimi in cui realmente serve avere il massimo dell’efficienza.
Tra gli esempi di alcuni casi potrebbero essere portali giornalistici, community online, blog, o altri siti generici che hanno molte visite concorrenti e che richiedono funzionalità di lettura/scrittura verso il database ed hanno un interprete lato server come PHP.
Siti del tipo “Il fatto quotidiano” o la community su android “Tuttoandroid“.
Come gestire tutti quegli utenti in contemporanea ? Come dimensionare l’hardware ? Come settare il database per avere il massimo delle performance ? Quale webserver usare ? Come configurare l’interprete PHP ?
Per rispondere a queste domande bisogna avere una approfondita conoscenza sistemistica, conoscere i pro e i contro delle varie soluzioni disponibili e mettere in piedi un ambiente ottimale per dare il massimo dell’efficienza. In poche parole : Ottimizzare.
Brevemente possiamo dire che nell’ottica di gestire una mole elevatissima di utenti concorrenti bisogna scordarsi di implementare le soluzioni standard che il mercato offre in ambiente hosting.
In primis va scelto un hosting dedicato e non condiviso. Un server dedicato ben dimensionato con connettività possibilmente europea se si vuol rimanere contenuti nei costi.
Uno Xeon Quad core con 32 Giga di RAM e 3 terabyte di dati, 100 Mbit di banda normalmente lo si può trovare a meno di 80 euro / Mese.
Il webserver che normalmente viene configurato in questi casi è NGINX che offre (a differenza di Apache) di servire rapidamente i contenuti statici con un utilizzo efficiente delle risorse di sistema. È possibile distribuire contenuti dinamici HTTP su una rete che utilizza i gestori FastCGI per gli script, e può servire come un bilanciatore di carico software molto capace.
Ad esso dovrà essere abbinato PHP-FPM.
PHP-FPM è una derivazione di Php Fastcgi molto interessante, che apporta modifiche ed un nuovo modello di utilizzo al progetto originario. Incluso ultimamente nella release di Php 5.3.3, PHP-FPM rappresenta una tecnologia abbastanza matura da poter essere utilizzata in ambienti di un certo calibro. PHP-FPM ha la capacità di avviare pool multipli di processi Fastcgi in ascolto su porte separate per soddisfare le richieste su ambienti di hosting virtuale multidominio, anche se il modello di progettazione principale non consiglia utilizzi orientati all’hosting multiplo. PHP-FPM è stato principalmente pensato per siti web oberati da numerose richieste HTTP ed è dunque molto indicato per ambienti mono sito, con web server come Nginx e Lighttpd.
Il database se MySQL dovrà essere configurato in maniera adeguata in modo di gestire al meglio l’allocazione delle risorse come la cache delle query, i thread concorrenti, i vari engine di storage (MyISAM e InnoDB in primis), ecc…
Non basterebbe un libro intero sul tuning di MySQL, ma vi basti sapere che il settaggio può fare il buono e il cattivo tempo.
Se utilizzate CMS che lo permettono (o applicazioni da voi scritte appositamente) potrete affiancare a questa potentissima ricetta MEMCACHED.
Memcached aumenta le prestazioni e la scalabilità di siti web dinamici con tecnologia MySQL attraverso un caching dei dati e degli oggetti nella memoria per minimizzare il carico del database. I più grandi nomi del web, come YouTube, Facebook, Fotolog e Wikipedia utilizzano Memcached e MySQL per soddisfare le esigenze di milioni di utenti e di miliardi di visualizzazioni delle pagine ogni mese.
A livello WEB invece molti CMS (Drupal, Joomla, WordPress, ecc…) permettono l’implementazione di appositi moduli per effettuare il caching dei contenuti, ovvero far in modo di ridurre sensibilmente la generazione di pagine dinamicamente tramite PHP e MySQL e dunque far in modo di servire contenuti statici.
A questo potrebbe essere utile implementare e configurare servizi CDN specifici per distribuire le risorse e rendere più efficace il tutto.
I nodi CDN sono geograficamente distribuiti, spesso connessi a diverse dorsali; questi nodi collaborano vicendevolmente per soddisfare le richieste di contenuti, trasferendoli in maniera trasparente al fine di ottimizzarne il processo di consegna: un sistema centralizzato con unico server centrale non sarebbe in grado di soddisfare le molteplici richieste di servizio da parte di numerosi utenti. Le ottimizzazioni possono portare come vantaggi la riduzione dei costi per l’ampiezza di banda, o il miglioramento delle prestazioni, o entrambi.
Per gestire forum con centinaia di migliaia di iscritti invece, bisogna affidarsi alla soluzione commerciale di punta (peraltro molto economica), ovvero Vbulletin. Molto malleabile ed estremamente ricco di funzionalità, eccelle per la sua indiscussa velocità.
Abbiamo visto fino a qui alcuni dei passi principali per mettere online un sito rivolto a centinaia di migliaia di utenti, sicuramente non tutti, e non discussi approfonditamente.
Si potrebbe parlare di APC, di database NOSQL come MongoDB, Redis, ecc… di Web Accelerator come Varnish, o di un sacco di altre cose che sapientemente installate e configurate possano portare a risultati a dir poco sorprendenti.
Se pensi che il tuo sito Web abbia bisogno di dare il massimo in termini di velocità, o se credi di spendere troppo per la tua soluzione hosting o server dedicato attuale non ottimizzato e vuoi risparmiare oltre 2 terzi del canone mensile, siamo sicuramente la soluzione ai tuoi problemi.
Con un’analisi iniziale gratuita possiamo farti la nostra migliore offerta per avere il massimo delle performance al minor costo.
Contattaci per un preventivo gratuito