Pizza as a service

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

Di cosa si tratta?

*aaS significa qualcosa offerto come servizio (as a Service). Quel qualcosa puo’ essere una web-application, una piattaforma su cui sviluppare, un’infrastruttura tecnologica, etc..

Caratteristica che distingue i vari modelli as a Service è il 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), acuisto la pizza surgelata e mi occupo della cottura

  • Platform as a Service (PaaS), usufruisco della consegna della pizza a domicilio, rimane a mio carico la gestione degli aspetti legati al consumo del prodootto (es. apparecchiare la tavola)

  • Software as a Service (SaaS), vado in pizzeria e non mi preoccupo di altro, posso direttamente consumare il prodotto

Nel seguito andrò in dettaglio anche su CaaS (Container as a Service, declinazione di IaaS) e di FaaS (Function as a Service, estremizzazione di PaaS), nati recentemente con la diffusa adozione dei container.

Infrastructure as a Service Link to heading

Nel modello 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.

Platfom as a Service Link to heading

Con Platfom as a Service si indica l’offerta di una piattaforma gestita su 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.

Software as a Service Link to heading

Per il 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.).

Function as a Service Link to heading

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).

Container as a Service Link to heading

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.