Prestazioni nel cloud

Il cloud è una fonte inesauribile di risorse ma, per certi tipi di applicazioni, può anche essere una fonte di guai. Portare nel cloud applicazioni database con un elevato numero di transazioni fa emergere in poco tempo i limiti dell’infrastruttura condivisa ed il collo di bottiglia primario diventa l’accesso al disco.

Alcuni fornitori di servizi cloud stanno mitigando questa necessità di I/O con dischi SSD, ma anche questi stanno diventando saturi. Vediamo quindi come districarsi tra “on premise”, “private cloud” e “public cloud” per le applicazioni che necessitano di prestazioni.

On Premise

Si parte da qui, dalle prestazioni del server dedicato ed ospitato nella sala server del cliente. Fisico o virtuale che sia, questo è lo scenario migliore per le prestazioni perché, se il dimensionamento è corretto, le applicazioni hanno a disposizione tutto ciò che serve, in un ambiente dedicato.

Ecco un semplice benchmark di I/O fatto su un server virtuale i cui dischi sono ospitati su una SAN. Il collegamento è iSCSI a 10GbE con 24 meccaniche SAS a disposizione.

Disk performance SAN

Come si può vedere, nel range di I/O più frequente per i database (4-64 KB) le prestazioni hanno una media di 100 MB/sec. Su blocchi più grandi si arriva ad una media di 400 MB/sec (la misurazione è stata fatta durante il carico di lavoro ordinario).

Private Cloud

Se il nostro cloud è “private” significa che ci sono macchine esclusivamente dedicate a noi. In pratica abbiamo delocalizzato la sala server, portandola presumibilmente in un datacenter, per ragioni di gestione, connettività, sicurezza.

Da questo punto di vista “private cloud” e “on premise” devono offrirci le stesse garanzie di performance.

Non dobbiamo aspettarci niente di più e niente di meno di ciò che avevamo prima con il server in casa.

Public Cloud

Con il “public cloud” iniziano i guai perché pochi riflettono sulla reale congestione dei datacenter che offrono questo servizio. È così facile attivare un nuovo server nel cloud che perdiamo la percezione del fatto che si tratta sempre di una macchina, ospitata da qualche parte nel mondo, contesa contemporaneamente tra centinaia (o migliaia) di utenti. E le nostre operazioni si accodano a quelle di tutti gli altri.

Ovviamente nella configurazione del server cloud ci sono diversi profili, ed a ciascun profilo corrisponde un prezzo diverso. Ci si aspetterebbe che prezzi più alti siano sinonimo di prestazioni maggiori, ma spesso non è così. Per alcuni provider il rapporto risorse / utenti  è così basso da rendere imbarazzante la velocità di I/O. Come nel caso seguente:

Disk performance Cloud 1

Nello stesso range di I/O precedente abbiamo una media di 4 MB/sec (!) Basti pensare che lo stesso test sul disco SSD del mio portatile dà un risultato di oltre 150 MB/sec.

Analizzare le prestazioni in base alle dimensioni del blocco è fondamentale perché letture più piccole sono più lente di quelle grandi, perché avvengono con maggiore frequenza. Si dovrebbe infatti più propriamente parlare di IOPS (Input/Output Operations Per Second) ma se non si è abituati, ragionare in MB/sec è più semplice.

Un altro provider offre le seguenti prestazioni nel cloud pubblico di fascia alta:

Disk performance Cloud 2

In questo caso (sempre tra 4 e 64KB) abbiamo una buona media superiore ai 100MB/sec, paragonabile al server on premise da cui siamo partiti.

In conclusione, bisogna sempre valutare tra i costi occulti di una soluzione cloud, quelli dovuti al rallentamento delle performance, in un ambiente che non è dedicato bensì condiviso con altri. Passare nel cloud non può certo essere un passo indietro rispetto a ciò che abbiamo “on premise”, ma mantenere lo stesso livello di servizio può costare parecchio.

Lascia un commento