Nel corso degli anni le offerte dei provider di servizi internet è cambiata enormemente, specialmente per quanto riguarda l’hosting. Mentre prima l’unica scelta abbordabile per gran parte degli utenti era un web hosting condiviso, con l’avvento del cloud computing i prezzi delle offerte per server privati, sia virtuali che dedicati, è di gran lunga diminuita. L’offerta è però talmente variegata che potrebbe risultare difficile scegliere tra le varie offerte, e tra dedicato e virtuale, senza avere una chiara idea delle proprie necessità. E’ infatti fondamentale aver chiaro il punto di arrivo a cui si vuole arrivare, il budget che si vuole investire e di quante risorse realmente necessita il nostro progetto.
Considerazioni sui principali componenti
I parametri essenziali da cui non possiamo prescindere nella scelta sono legati alla potenza elaborativa che ci aspettiamo di avere, in altri termini di quanta CPU e di quanta RAM necessitiamo. Il numero di processori (CPU) è fondamentale per riuscire a processare tutte le informazioni che la RAM riesce a contenere e che vengono passate dai programmi in esecuzione. Solitamente le offerte per server virtuali indicano il numero di core, invece che il numero di CPU.
Seppure da un punto di vista puramente elaborativo si possa considerare vi sia equivalenza tra core e CPU, dobbiamo tenere in conto che una CPU in fault (avaria) causerebbe la perdita di 2 o anche 4 core contemporaneamente. Di contro è importante ricordare che alcuni software vengono licenziati per numero di CPU, quindi potrebbe aver senso cercare una soluzione multicore per contenere i costi di licenze software.
Avere un numero di unità elaborative elevato senza un adeguato supporto di RAM, da cui i processori prendono i dati da elaborare, è ciò che dovremmo evitare. La RAM è la memoria volatile in cui tutti i programmi riversano i propri dati per fare in modo che il processore possa elaborarli. Più questa memoria è grande, più dati e più programmi possono essere eseguiti in concomitanza. RAM e CPU in ambienti virtuali sono condivisi, pertanto in ambienti virtuali potrebbe valere la pena approssimare le proprie necessità per eccesso per contrastare l’eventuale oversubscription o in breve “sovraccarico”.
Di contro, uno degli aspetti più significativi e vantaggiosi di un server virtuale è che solitamente viene attestato su una farm composta da più server fisici in cluster, consentendo pertanto una possibile rilocazione dei server virtuali da un server fisico ad un altro. I costi per avere la stessa ridondanza su server privati dedicati sarebbe decisamente molto più alta.
Importante valutazione nella scelta riveste anche la scalabilità. Aggiungere risorse ad un server virtuale è più semplice e, con tutta probabilità, più economico che un server fisico, seppure ancora una volta le risorse aggiunte sono condivise e, non è da escludere, eccedenti le reali disponibilità fisiche del server che ospita il nostro server virtuale. Altri fattori importanti da valutare nella scelta di un server privato dedicato o virtuale è la disponibilità di spazio disco e, possibilmente, la tipologia di storage che ci viene messa a disposizione.
La tipologia di disco (SATA, SAS, FC, ecc…) può modificare sostanzialmente la velocità con cui una nostra applicazione può leggere o scrivere un dato, indipendentemente dalle disponibilità di RAM e CPU. Per avere una idea di massima, un disco SATA, che ormai è comune nella maggior parte dei computer domestici da qualche anno a questa parte, riesce a gestire senza troppi affanni fino a circa 50 operazioni di lettura o scrittura in 1 secondo (IOPS), mentre un disco FC può tranquillamente gestire 180 IOPS, prima di iniziare a dare i primi segni di rallentamento.
Soprattutto se la nostra idea è quella di realizzare un sito web, magari in php, per esempio creando un blog WordPress, allora potremmo voler utilizzare opcode cache (apc, xcache, eaccellerator), ovvero moduli che salvino in memoria gli script php precompilati aumentando così considerevolmente la velocità di caricamento della pagina, allora potremmo orientarci ad avere una maggiore quantità di ram, anche magari a discapito di una minore potenza elaborativa.
Sia per l’opcode cacher che per il server web, la scelta è ovviamente molto personale. Le maggiori differenze, data per scontata la capacità di interpretare i linguaggi più comuni di programmazione, sono nel supporto e nel seguito che hanno, che spesso porta con sé come conseguenza una maggiore o minore disponibilità di aggiornamento.
Ottimizzare le prestazioni
Nella valutazione delle risorse necessarie, non bisogna tralasciare un certo margine che ci viene garantito dal tuning che noi stessi possiamo effettuare sul server una volta che ci sarà messo a disposizione. Tra le operazioni che possono ad esempio rendere più agevole il carico sulla RAM e aumentare il file di paging troviamo le seguenti:
- Impostare il server all’uso della memoria per i programmi in foreground
- Eseguire gli aggiornamenti al server, quando disponibili
- Escludere il server dallo scan dell’antivirus
In conclusione, valutiamo con attenzione le nostre esigenze, stimando con buona approssimazione le necessità del nostro progetto, anche a breve termine nel caso di server virtuali. Cerchiamo di comprendere in dettaglio cosa ci viene offerto in termini di CPU, di memoria, disco, banda e servizi di gestione. Con una attenta analisi riusciremo sicuramente a scegliere il server che fa al caso nostro, anche se magari non sarà il più economico.
Stay Tuned!