Scrivo questo post, in quanto in questi giorni sto seguendo un’importante azienda che sviluppa soluzioni ecommerce su Magento, nell’ottimizzare l’hosting per velocizzare sensibilmente la navigazione e l’user experience nei loro siti web.
La ricetta per far ciò è stata quella ben più volte menzionata e documentata in questo blog :
- PHP 5.5
- Zend OpCache (dato che abbiamo montato PHP 5.5) al posto del “solito” APC
- Redis, che abbraccia la filosofia NOSQL come gestore cache e sessioni di Magento
- Memcache
- Percona Server – un fork molto stabile e performante di MySQL
- Nginx, un webserver con gli steroidi che rimpiazzi egregiamente il lento (seppur ottimo) Apache.
La “ricetta” è quella ormai evangelizzata da tutti gli esperti sistemisti che sappiano il fatto loro e che abbiano la necessità di gestire picchi di utenze importanti e carichi elevati.
Ricetta che mi ha dato grossissime soddisfazioni anche su portali famosi come “Il fatto Quotidiano” e “tuttoandroid.net”
La scelta dell’hosting è stata invece “obbligata” su un player importantissimo a livello italiano, che si può definire tranquillamente scelta del mercato : Aruba.
Più precisamente data la necessità di avere una High Availability senza single point of failure, è stato scelto il Cloud di Aruba.
Se è vero che dal punto di vista sistemistico, feature come l’allocazione dinamica delle risorse e la scalabilità sono il forte di ogni Cloud che si rispetti, è anche vero che approfondendo meglio la soluzione proposta da Aruba ci si accorge che non sono tutte rose e fiori.
Ecco un elenco di gravi difetti che ho riscontrato a livello prestazionale sottoponendo la nostra istanza allocata a dei benchmark e comparati ad altre realtà che conosco bene, come un server dedicato con doppio disco RAID su Hetzner (noto hosting provider tedesco).
CPU
E’ evidente come già descritto nelle loro linee guida che “Ogni CPU Virtuale acquistata prevede una potenza minima riservata e garantita di almeno 0,5 core fisici di una CPU Intel Xeon serie 5600.”
Dunque acquistare 4 CPU equivale nella peggiore delle ipotesi avere a disposizione una potenza di calcolo pari a 2 core di un Intel Xeon 5600, senza nemmeno il supporto del multithreading.
Caratteristiche senz’altro discutibili considerando anche il posizionamento di questa CPU nella classifica di CPU Benchmark.
Dal punto di vista di un sistemista bisogna per ovvi motivi ragionare nell’ottica della situazione peggiore, sopratutto quando si intende progettare un servizio di hosting dimensionato alle reali esigenze dell’utente finale.
Per avere insomma 8 core reali su Aruba Cloud dovrei comprare ben 16 vCore. Su un server dedicato invece avrei potuto beneficiare di 4 core reali visti come 8 thread.
Scegliendo l’hypervisor VMWare (il più costoso ma anche il migliore) il costo per 1 singola CPU virtuale è di € 0,025/Ora che significa esattamente 18 euro / mese.
Avendo la necessità di garantirci almeno 4 core reali (ricordando che la potenza minima riservata e garantita è della metà) dovremmo moltiplicare per 8 questo valore : 144 € / mese !
RAM
La RAM è del tutto fisica e dedicata. Nulla da criticare se non fosse il costo sicuramente non trascurabile.
Per ogni GB infatti il costo è di € 0,005 / ora, che significano ben 3,60 euro / mese.
Considerato che un server in produzione ai giorni d’oggi non ha meno di 8 GB di RAM, parliamo di ben 28,8 € / Mese.
DISCO
Questa è la nota più dolente di tutti. Il motivo per cui non consiglierei mai a nessuno di utilizzare questa piattaforma Cloud per progetti commerciali di qualsiasi tipo.
In primis perchè il costo è proibitivo. Secondariamente perchè le prestazioni sono davvero troppo basse per il prezzo pagato.
Ipotizziamo un taglio disco di 100 GB (valore reale del sistema per cui sto prestando consulenza), costando € 0,003 / Ora ogni 10 GB, significa ben 21,6 € / Mese
Costi a parte, considerando che chi fa serio business difficilmente si fa problemi sui costi se il servizio ha un alto valore aggiunto, in questo caso va evidenziato un dettaglio fondamentale : le prestazioni di I/O talmente scarse da poter diventare il collo di bottiglia per l’intera architettura.
Pur notando empiricamente dei transfer rate non ottimali in routine di copia file, abbiamo voluto testare scientificamente le prestazioni con un benchmark dei dischi e comparandolo coi risultati di un server dedicato con dischi da 6 Gb/s 7200 rpm in RAID1 – Software.
Aruba Cloud :
- Timing cached reads: 8834 MB in 2.00 seconds = 4419.74 MB/sec
- Timing buffered disk reads: 28 MB in 3.80 seconds = 7.37 MB/sec
Hetzner – Server Dedicato con dischi RAID
- Timing cached reads: 24252 MB in 2.00 seconds = 12145.40 MB/sec
- Timing buffered disk reads: 344 MB in 3.00 seconds = 114.65 MB/sec
Emerge eloquentemente e senza ombra di dubbio che le performance disco della Cloud di Aruba sono dalle 3 alle 20 volte inferiori a quelle del server dedicato preso come riferimento per il confronto.
Valori indubbiamente bassi per servire grosse quantità di file, ma sopratutto per essere alla base dello storage di grosse basi di dati su MySQL o PostgreSQL, laddove la tendenza del mercato oggi è quella di usare dispositivi di archiviazione a stato solido come drive SSD o periferiche dedicate come Fusion IO.
Sento il dovere di dover chiarire un concetto, nel caso venisse fraintesa l’analisi dei valori : questi dati riguardano esclusivamente il Cloud Aruba e non l’architettura Cloud in generale.
Va detto infatti che altri competitor come Amazon AWS, Azure, o Linode danno valori decisamente ottimi.
Ad esempio un hdparm -tT su una Linode 2048 (virtualizzata XEN): Timing buffered disk reads: 254 MB in 3.01 seconds = 84.48 MB/sec
Cosa vogliamo dimostrare con questa analisi ? Tutto e niente.
Dipende da quello che si deve fare e sopratutto chiedersi (e rispondersi) se veramente il Cloud Aruba è la soluzione adatta al nostro progetto e alle nostre esigenze.
Valutare i “vecchi” sistemi dedicati e compararli sopratutto nel caso di prestazioni spinte.
A livello di costi non ci sono ovviamente paragoni, pur essendo per loro natura prodotti simili, ma non equivalenti e quindi difficilmente comparabili.
Per puro sfizio ecco il preventivo di una configurazione Aruba Cloud per garantire prestazioni equivalenti ad un server di fascia medio alta Hetzner
Emergono due ulteriori conclusioni importanti :
Le risorse allocabili sono limitate, e 8 CPU e 32 GB di RAM sono valori BASSI in un contesto reale, tanto che non riesce ad eguagliare minimamente la comparazione con il server dedicato preso come esempio.
I costi sono decisamente alti : al lordo dell’iva sono 448 € contro i 99 € (iva compresa) dell’offerta tedesca.
Insomma, ne avremmo abbastanza per mettere online almeno 4 server dislocati geograficamente e garantirci un H/A tramite ridondanza geografica.
Qualora abbiate esigenza di progettare o ottimizzare i vostri servizi online contattateci pure, sapremmo sicuramente consigliarvi la soluzione da adottare e il partner più indicato per il vostro business.
Solo un dettaglio … Hdparm non e’ proprio affidabile per misurare le performance di dischi o simili …
I test con hdparm sono poco attendibili.
Inoltre è chiaro che un semplice confronto potenza-cloud con potenza-fisica sarà sempre sproporzionato con qualsiasi cloud provider (anche con altri isp italiani o europei, ma direi anche mondiali, sarà la stessa cosa): il cloud non nasce per aumentare la potenza, ma per aumentare affidabilità,scalabilità e fare del pay per use.
E’ chiaro che queste feature si pagano.
Per chi vuole grandi potenze a disposizione e non gli interessa l’alta disponibilità a tutti i costi, ci sono i servizi di housing, daltronde se tutti i provider continuano ad offrire l’housing (anche aruba) un motivo ci sarà….
Piu` che il troughput dei dischi, era interessante vederne gli IOPS… Che per un sistemista sono molto piu` importanti.
Questo post è francamente scritto come si deve, così come tutto il il sito
in generale. Son un assiduo fan, continuate così.
1 post da spulciare è presente a questo link