Magazine

PaaS vs CaaS: comprendere le differenze tra i due modelli cloud

26/09/2019
Differenze fra Paas e Caas
PMIPrivati

Nel vasto mondo dell’offerta di servizi cloud c’è ancora una certa confusione riguardo alla differenza tra CaaS e PaaS. Questo perché il termine Cloud Computing viene spesso utilizzato per indicare genericamente livelli di servizio molto diversi tra loro, dalle caratteristiche e finalità assai diverse.

Per facilitare la comprensione delle numerose sigle (IaaS, CaaS, PaaS, SaaS, FaaS, fino ad arrivare al XaaS o Everything as a Service) è quindi opportuno fare un passo indietro.

Uno dei tanti punti di forza del Cloud Computing è la capacità di ridurre la cosiddetta IT Footprint e pertanto la necessità di possedere e mantenere un’infrastruttura IT proprietaria (detta anche on premise).

Quando un’azienda dispone di un’infrastruttura on premise si deve occupare dell’intera gestione del processo produttivo delle proprie applicazioni: questo significa provvedere alla manutenzione dell’intera infrastruttura fisica (quindi l’hardware, il networking e lo storage) e all’organizzazione di tutti gli aspetti di virtualizzazione e di gestione dei sistemi e degli ambienti operativi necessari allo sviluppo, al test e alla distribuzione degli applicativi finali. Senza considerare altri elementi di attenzione come la sicurezza fisica della piattaforma, la gestione degli eventuali guasti o dell’impianto di condizionamento.

Il cloud computing è in grado di astrarre molti di questi aspetti, a partire dall’hardware. È il caso dell’Infrastructure as a Service, dove invece di possedere fisicamente le macchine (e quindi dover provvedere a tutta la manutenzione e il supporto per il funzionamento) il cliente utilizza un hardware virtualizzato. Il provider di servizi solleva il cliente da tutti questi aspetti, che si trova così a lavorare su macchine virtuali, sulle quali può installare i sistemi operativi e gli ambienti di sviluppo desiderati.

Proseguendo in alto sulla scala del cloud computing troviamo quindi la possibilità di andare oltre e di astrarre la gestione a livello di Piattaforma (Platform as a Service). In questo caso, il provider di servizi si occupa interamente della gestione di tutto il software di sistema (sistema operativo, middleware e sistemi di runtime), ovvero i mattoni essenziali che permettono agli sviluppatori di progettare, programmare e distribuire le applicazioni.

Idealmente, il cloud PaaS offre l’indiscutibile vantaggio di focalizzarsi completamente sul proprio business: nel caso di uno sviluppatore, ad esempio, sarà sufficiente caricare il codice creato sul cloud per arrivare direttamente all’operatività, senza doversi preoccupare delle premesse tecniche per la creazione, la gestione e la distribuzione dell’applicazione, che invece saranno a carico del service provider.

Nel workflow di sviluppo di un’applicazione, tuttavia, può essere necessario un maggiore controllo su come rendere disponibili ai programmatori gli ambienti di sviluppo e i container necessari a gestire tutte le fasi di compilazione, packing e deploy dell’applicazione.
Per assicurare questa possibilità è nato un modello di cloud computing che si pone tra lo IaaS (che richiede la presenza in azienda di risorse IT) e il PaaS (che invece riduce al minimo questa esigenza): il CaaS.

CaaS o Container as a Service

Il modello CaaS (o Container as a Service) si differenzia dallo IaaS principalmente per il diverso approccio alla virtualizzazione attraverso l’utilizzo della tecnologia dei container. Non si tratta più di preparare per ogni diverso framework che si renda necessario agli sviluppatori delle macchine virtuali con un proprio sistema operativo separate gestite per mezzo di un hypervisor, ma di utilizzare contenitori isolati che girano su un singolo sistema operativo: le micro istanze che ne risultano richiedono solo una frazione della capacità computazionale di una singola virtual machine.

Ognuna di queste micro istanze incapsula le applicazioni (file system incluso) e offre quindi completa libertà di scelta dei linguaggi e dei framework di programmazione, sulle quali le applicazioni possono essere ridimensionate e scalate a seconda delle esigenze.

In pratica, nel CaaS si incontrano la flessibilità del modello IaaS e il livello di astrazione del modello PaaS, con l’aggiunta di un livello di controllo delle risorse (e quindi anche dei costi) in più: possiamo parlare quindi di un’infrastruttura elastica, modulabile sulle esigenze del cliente, alla quale è possibile aggiungere risorse on demand.

Un ulteriore vantaggio del CaaS è dato dalla possibilità di organizzare più container in architetture complesse attraverso l’utilizzo del tool di orchestrazione. In tal modo è possibile sviluppare applicazioni multi-container gestite in maniera automatizzata.

Quali sono le differenze tra CaaS e PaaS?

Il PaaS è principalmente operazionale e pertanto il modello di distribuzione dell’applicazione è gestito dal provider di servizi, mentre il CaaS offre contenitori e tools attraverso i quali è possibile controllare tutti gli aspetti di delivery dell’applicazione.

Nel primo, quindi, il provider di servizi distribuisce, ospita ed esegue le applicazioni per conto degli sviluppatori, che si possono così concentrare completamente sullo sviluppo del codice: non c’è necessità di preoccuparsi dei dettagli della compilazione, gestione del database, bilanciamento del traffico, automazione dei DNS e via dicendo. Nel modello CaaS questi aspetti sono lasciati al controllo degli sviluppatori, che però devono definire strutturalmente l’ambiente a partire da un livello d’astrazione più basso (il sistema operativo) e occuparsi dell’operatività: questo presuppone avere un’idea chiara del flusso di produzione e distribuzione.

Quindi, se da un lato il PaaS è indubbiamente un modello più veloce e meno impegnativo in termini di gestione, sacrifica però la possibilità di controllare il flusso, il comportamento e la performance dell’applicazione a un livello molto più profondo (e la possibilità di trarne utili insights).

Il CaaS, d’altro canto, richiede di certo maggior lavoro e capacità progettuale, aspetti che vengono controbilanciati da una maggiore libertà e comprensione dell’intera pipeline di lavoro, con il vantaggio di poter assegnare le risorse on demand ai singoli containers e cluster, risparmiando notevolmente sui costi.

Il grande vantaggio del modello Container as a Service, è indubbiamente la flessibilità. Il PaaS è vantaggioso in termini di velocità e di produttività, ma il CaaS libera gli sviluppatori da tutte le costrizioni di una piattaforma definita e produrre applicazioni funzionali indipendentemente dalla piattaforma utilizzata: è qua che entra in gioco il vero cuore della moderna tecnologia CaaS, ovvero l’orchestrator tool, in grado di accorciare la distanza operativa tra CaaS e PaaS e rendendo lo sviluppo di applicazioni portabili un processo semplice e versatile.