Pizza as a service

Leggendo di Cloud si incontrano spesso acronimi come SaaS, IaaS, PaaS.

Di cosa si tratta?

Il suffisso aaS indica ‘un qualcosa’ che viene offerto come servizio (as a Service). Quel qualcosa puo’ essere un software web, una piattaforma su cui sviluppare, una infrastruttura tecnologica, etc..

I vari aaS si differenziano fondamentalmente per il livello di coinvolgimento del cliente nella gestione dei componenti dello stack hardware/software. Proviamo a semplificare ed a fissare i concetti pensando alla pizza:

  • On premise (non cloud), gestisco direttamente tutti gli aspetti partendo dalla preparazione dell’impasto fino alla cottura

  • Infrastructure as a Service (IaaS), acquisto la pizza surgelata, per mangiarla devo solo occuparmi della cottura

  • Platform as a Service (PaaS), usufruisco della consegna della pizza a domicilio, mi preoccupo di apparecchiare la tavola e consumare il prodotto

  • Software as a Service (SaaS), vado in pizzeria e non mi preoccupo di altro, posso direttamente mangiare la pizza

Nel seguito andrò in dettaglio sui vari modelli as a Service includendo anche CaaS (Container as a Service, declinazione di IaaS) e di FaaS (Function as a Service, estremizzazione di PaaS), tipologie di servizio che si sono definite recentemente con la diffusa adozione dei container.

Software as a Service

Nel modello Software as a Service (SaaS) la complessità dell’infrastruttura tecnologica sottostante è completamente trasparente per il cliente. Chi utilizza il servzio non ha visibilità del numero di server installati, di dove i server siano dislocati, di come e dove vengano registrate le informazioni. Come nella cena in pizzeria, il cliente si occupa solo di fruire del prodotto (generalmente una applicazione web).

SaaS ha il grande vantaggio di permettere l’accesso ad una soluzione pronta per l’uso ad una frazione del costo di una analoga soluzione on premise. Lo svantaggio è legato ai limiti imposti dalla soluzione scelta: generalmente la personalizzazione di questo tipo di servizi, ove possibile, è molto onerosa. Esempi: G-Suite, Salesforce.

Nell’adozione di SaaS è fondamentale valutare lo SLA di disponibilità ed il rispetto di eventuali vincoli di natura normativa imposti dal business (es. luogo di conservazione dei dati, privacy, etc.).

Platfom as a Service

Nel modello Platfom as a Service viene offerta al cliente una piattaforma in cui puo’ essere rilasciato una soluzione software customizzata. La piattaforma che è una rappresentazione astratta delle risorse hardware che sottendono al servizio, presenta generalmente alcuni livelli di personalizzazione della potenza di calcolo (es. unità di elaborazione, numero di istanze virtuali).

In PaaS il cliente continua ad ignorare gli aspetti più onerosi della gestione dell’infrastruttura hardware ed ha un maggiore livello di personalizzazione rispetto a SaaS, potendo eseguire una soluzione software custom. Per lo sviluppo della parte software, tuttavia, bisogna comunque operare nel contesto imposto dalla piattaforma (es. utilizzo di particolari linguaggi di programmazione, indisponibilità di alcune API nelle librerie messe a disposizione). Esempi: Heroku, Google App Engine.

Nell’adozione di PaaS è fondamentale valutare il vendor lock-in.

Function as a Service

FaaS è una declinazione di PaaS in cui viene estremizzato il concetto di software rilasciabile sulla piattaforma. La piattaforma infatti è generalmente costituita da un runtime che consente lo sviluppo di un limitato numero di righe di codice raccolto in funzioni, secondo le peculiarità specifiche del servizio utilizzato.

In questo modello l’onere di gestire l’elasticità dell’infrastruttura è totalmente a carico del fornitore di servizi. Se opportunamente progettato, il software ospitato su FaaS costituisce una soluzione infinitamente scalabile e sempre disponibile. Un ulteriore vantaggio del modello è legato ai costi: viene effettivamente pagato solo il reale utilizzo delle risorse di CPU e memoria fornite dalla piattaforma, zero traffico equivale a zero costi (architetture Serverless).

Infrastructure as a Service

In IaaS la configurazione dell’infrastruttura è a carico del cliente, che grande libertà di assecondare le sue esigenze decidendo quali e quante macchine utilizzare, quale sistema operativo installare, quali sono i rapporti tra i vari server. Al vendor rimane delegata la gestione fisica di macchine, networking e data-center.

A fronte di un maggior effort rispetto ad altri modelli as a Service, IaaS presenta comunque notevoli vantaggi rispetto ad una soluzione totalmente on premise. Il cliente ha infatti a disposizione un gran numero di macchine geograficamente distribuite, subito disponibili e controllabili programmaticamente. Questo si traduce in una notevole semplificazione nel provisioning di nuove istanze e nella possibilità di ottenere una infrastruttura elastica (risparmiando i costi di sovra-dimensionamento). Inoltre è possibile sfruttare le primitive di sicurezza messe a disposizione dai vari fornitori per aumentare la solidità della soluzione.

Esempi: AWS EC2, Google Compute Engine.

Container as a Service

CaaS rappresenta una evoluzione di IaaS in cui non si ragiona in termini di macchine virtuali, ma di virtualizzazione a livello di sistema operativo. Il vantaggio di questo modello è soprattutto legato alle peculiarità dei container: essere facilmente replicabili ed essere agnostici rispetto ai vari fornitori di servizi.

L’idea originale di Pizza as a Service deriva da questo articolo ed è stata poi ripresa ed evoluta qui.