La confusione tra IaaS, PaaS e SaaS

Una simpatica affermazione che si sente spesso dire nell’ambiente è che il cloud è come il sesso ai tempi del liceo: tutti ne parlano, pochi sanno cos’è, pochissimi lo sanno far bene 😉

Vediamo intanto di chiarire cos’è un cloud: un cloud è una struttura hardware formata da più nodi di calcolo e di storage che lavorano in maniera sincronizzata per offrire dei servizi.

Un qualsiasi cloud, quindi, è formato da tre componenti: lo storage (che può essere una SAN, un NAS, o una struttura complessa formata da un filesystem zeroshare), i nodi di calcolo (quindi un qualsiasi sistema in grado di gestire la virtualizzazione di processi, normalmente per comodità un Hypervisor com VMware, XEN o KVM che virtualizza l’intera struttura hardware) e un controller.

Come già detto in questo articolo, se il numero di processi istanziabili è minore del numero di nodi di calcolo si parla si grid computer (o supercomputer), nel caso in cui i processi istanziabili siano maggiori del numero di nodi hardware, si parla di cloud computer vero e proprio, anche se spesso i termini clud e grid vengono assimilati.

I servizi che possono essere offerti attraverso una struttura cloud sono di tre tipi IaaS, PaaS e SaaS e normalmente sono tutti offerti da chi possiede una struttura cloud. Spesso sentiamo nominare questi tre acronimi, ma di cosa si tratta in realtà? E’ su questa delucidazione che mi voglio soffermare in questo articolo.

IaaS è l’acronimo di Infrastructure as a Service ed è il servizio più vicino a ciò che forma il cloud. Quando acquisto un servizio IaaS, ho a disposizione una virtualizzazione dell’hardware di un computer tradizionale: quindi ho della CPU, della RAM, dello Storage e delle schede di rete con connettività. Attraverso questo sistema ho a disposizione tutte le potenzialità e la flessibilità di un computer fisico, senza avere la preoccupazione di dover pensare all’hardware o alla continuità di servizio in caso di guasto hardware, in quanto è compito del fornitore di servizi occuparsi di questi aspetti di livello basso. Per fare un esempio, il classico servizio EC2/S3 di Amazon è un servizio IaaS: compro il servizio, installo il sistema operativo che preferisco e creo le mie applicazioni in questo ambiente per poter offrire un servizio; d’altro canto dovrò essere io ad occuparmi di tutti gli aspetti legati al bilanciamento di carico su più istanze, a strutturare una base dati adatta, ecc. Per quanto riguarda i costi di un simile servizio, in Italia, normalmente, si è solito offrire servizi IaaS in modalità Flat con fatturazioni periodiche; i veri servizi IaaS, però, permettono la fatturazione “a consumo” in quanto una istanza IaaS è un costo per il fornitore solo quando lavora e non quando è “ferma”: in pratica se un servizio IaaS lavorasse sempre a pieno regime i costi sarebbero analoghi (di poco superiori) a quelli di una modalità Flat standard, ma contando sui “tempi morti” si riescono ad avere costi normalmente molto più convenienti.

PaaS è l’acronimo di Platform as a Service, cioè la virtualizzazione di una piattaforma. In questo caso non mi devo occupare della infrastruttra attraverso la quale è realizzata una piattaforma: ad esempio non mi devo preoccupare di quanto spazio occupa il mio database o come fare a distribuire il carico di lavoro tra più servizi IaaS, in quanto tali problematiche sono già state affrontate da chi mi offre il servizio PaaS (probabilmente utilizzando la sua infrastruttura IaaS): io devo solo preoccuparmi di creare la mia applicazione per poter offrire il mio servizio. In questo caso, però, ho meno oneri ma anche meno flessibilità: difatti il mio fornitore di servizi ha sicuramente optato per delle scelte riguardo alla piattaforma su cui offrire il servizio PaaS a cui mi devo adattare per sviluppare la mia applicazione. Ad esempio, se il mio fornitore ha optato per offrirmi una infrastruttura LAMP (Linux-Apache-MySQL-PHP), dovrò necessariamente scrivere la mia applicazione utilizzando il linuguaggio PHP e una base dati MySQL. Se, al contrario volessi programare in Ruby on Rails oppure avere una base dati Oracle o MongoDB, dovrò scegliere un altro fornitore di servizio o acquistre un servizio IaaS ed arrangiarmi nella configurazione sistemistica. Quindi, giusto per fare un esempio concreto come già accennato, un qualsiasi hosting PHP/MySQL attraverso il quale posso sviluppare una applicazione, è un servizio PaaS. Un altro esempio di PaaS è il Google App Engine che prentende che l’applicazione sia scritta in Java o in Python. Questo tipo di servizio normalmente è fatturato in modalità Flat: si sceglie un “taglio” (quanti MB di spazio su disco, la quantità di banda, ecc.) e si paga con cadenza periodica.

SaaS è l’acronimo di Software as a Service, cioè un servizio software realizzato su una piattaforma che a sua volta poggia su una infrastruttura. E’ il servizio di più alto livello che può essere offerto ed è quello del servizio per l’utente finale. Alcuni esempi di servizi SaaS sono un accesso webmail, un CRM, le classiche “Google Apps”… Questo tipo di servizi è normalmente fatturato con cadenza periodica sulla base del numero di utenti attivati.