Pizza as a service

Il Cloud è un perfetto abilitatore di business, consente di costruire rapidamente una infrastruttura tecnologica anche complessa e di gestirla programmaticamente riducendo i costi di IT operation.

Ma che cos’è il cloud?

Non si tratta semplicemente di un gruppo di macchine server ospitate in un qualche datacenter, ma piuttosto di un insieme di servizi che permettono di delegare al fornitore parte (o tutta) la responsabilità dell’infrastruttura tecnologica.

Per ospitare le propie soluzioni in cloud esistono diverse modalità, indicate generalmente con il suffisso as a Service (aaS). Questi modelli si categorizzano in base al livello di coinvolgimento del cliente nella gestione dei componenti hardware/software dello stack architetturale. Per semplificare possiamo definirli con una analogia legata al mangiare la pizza:

  • On premise (non cloud), gestisco direttamente tutti gli aspetti dall’impasto alla cottura

  • Infrastructure as a Service (IaaS), acquisto la pizza già pronta, ma gestisco la parte della cottura

  • Platform as a Service (PaaS), usufruisco della consegna a domicilio, mangiando la pizza dove preferisco

  • Software as a Service (SaaS), vado in pizzeria

Inoltre, lo sviluppo recente della tecnologia legata ai container, ha dato origine ad alcune evoluzioni:

  • Container as a Service (CaaS), declinazione di IaaS
  • Function as a Service (FaaS), estremizzazione di PaaS

Software as a Service

Nel modello Software as a Service (SaaS) la complessità dell’infrastruttura tecnologica sottostante è completamente trasparente, chi utilizza il servzio non ha visibilità su quanti server siano installati, dove siano dislocati, come e dove vengano registrate le informazioni. Come nella cena in pizzeria, il cliente si occupa solo di fruire del servizio.

Il vantaggio di SaaS è offrire l’accesso ad una soluzione pronta per l’utilizzo ad una frazione del costo di una analoga soluzione on premise. Tuttavia si è generalmente molto limitati dalle modalità e dai termini offerti dalla soluzione scelta e le personalizzazioni, ove disponibili, sono molto onerose. Esempi: G-Suite, Salesforce.

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

Platfom as a Service

Nel modello Platfom as a Service il cliente si occupa di sviluppare il software che viene poi rilasciato su una piattaforma completamente gestita dal fornitore di servizi.

Il cliente puo’ ignorare gli aspetti più onerosi della gestione dell’infrastruttura ed ha un maggiore livello livello di personalizzazione rispetto a SaaS, ad esempio è possibile in generale configurare aspetti come la potenza di calcolo (es. unità di elaborazione, numero di istanze virtuali). Tuttavia, bisogna comunque operare nel contesto imposto dalla piattaforma per lo sviluppo della parte software (es. utilizzo di particolari linguaggi di programmazione, indisponibilità di alcune API nelle librerie utilizzate). Esempi: Heroku, Google App Engine.

Nell’adozione di questa tipologia di servizi è importante 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 gestisce delle funzioni che devono essere sviluppate secondo le peculiarità specifiche del servizio utilizzato.

In questo modello l’onere di gestire l’elasticità dell’infrastruttura è 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.

Infrastructure as a Service

In IaaS la configurazione dell’infrastruttura è a carico del cliente, che ha maggior libertà di assecondare le sue esigenze e decidereç 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 agli altri modelli as a Service, IaaS presenta comunque notevoli vantaggi se confrontata con 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 (no 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.