Il cloud computing non e' un'idea nuova, anzi l'idea nasce negli anni 60 dal computer scientist John McCarthy. Che cosa lo ha reso cosi' popolare cosi' recentemente? I motivi sono veramente innumerevoli e per ora sorvolero' rimandando nel prossimo futura l'analisi piu' approfondita.
Di certo uno dei motivi principali della popolarita' oggi e' il costo. Con pochi dollari al giorno si possono gestire milioni di transazioni business senza dover fare investimenti infrastrutturali ingenti a priori. Ecco che quindi possiamo iniziare a pensare a usufruire di public utilities installandoci i nostri servizi e mettendoci i nostri dati, senza preoccuparci di investire a priori un euro (o dollaro) in infrastruttura. Se il nostro business va bene, pagheremo [volentieri] di piu', altrimenti pagheremo meno. Se abbiamo un piccho di utilizzo in un certo periodo dell'anno non dovremo preoccuparci di comprare 50 server che rimarranno a dormire 300 giorni all'anno, sara' un problema del cloud provider.
In questo post mi soffermero' su uno degli aspetti del cloud computing: storage. Supportare anche pochi milioni di dati dei clienti per un servizio online richiede un certo livello di infrastruttura, licenze e manutenzione. Sono costi up-front veramente ingenti (centinaia di migliaia di dollari) su un business basato interamente su delle proiezioni. La soluzione potrebbe essere quella di affidarsi ad un cloud provider.
Tanto per citare un esempio, ho fatto una stima dei costi per supportare un sistema di provisioning con 5 milioni di clienti, contanto lo storage e la banda (in e out). Il costo sarebbe di circa 21 dollari al mese (tutti i providers si equivalgono in termini di pricing)!
Negli USA i cloud providers piu' popolari sono:
- Amazon S3, SompleDB e SQS
- Windowws Azure Storage (Table, Blob e Queue) e SSDS
- Google MegaStore
Praticamente tutti provvedono un set di API basato su protocolli ed architetture standard, REST (HTTP POX) e SOAP.
La domanda che ci dobbiamo porre quindi e', ma come ci arrivo li? Prendo il mio database e lo copio nel data center ed inizio a fornire il servizio? No! Bisogna fare i conti con le limitazioni, piu' o meno comuni a tutti i providers:
- Non e' un database relazionale
- Non c'e' supporto alle transazioni
- La latenza e' un dato di fatto percettibile
- Ci sono piu' possibilita' di race condition
- Non tutti supportano la data locality
- Il numero di timeout aumenta
- Le tipologie query sono decisamente limitate
- I data types sono limitati
Ora, molti si saranno detti:
- Leggendo la prima parte del post "bellissimo, lo voglio!"
- Leggendo la seconda parte del post "non se ne parla nemmeno!"
Ottimo, se siete arrivati sino a qui, allora avete resistito abbastanza. La prossima volta parlero' dei singoli punti e come mitigarli il piu' possibile.