Cosa sono i Container as a Service (CaaS)?

I Container as a Service (CaaS) offrono ai team di sviluppo la possibilità di lavorare in maniera estremamente agile, a condizione di conoscere i principi fondamentali nella gestione e nell’orchestrazione dei container compresi nel modello a servizio.

Oggi tutti i principali cloud provider offrono CaaS estremamente scalabili, per soddisfare le esigenze di tutti i carichi di lavoro aziendali, a prezzi sempre più competitivi.

Per orientarsi nella grande varietà di offerta dei servizi CaaS vediamo in cosa consistono e come funzionano nel dettaglio, grazie alla comprovata esperienza sul campo di IFIConsulting.

Container as a Service

Per Container as a Service (CaaS) si intende un servizio basato sul cloud che rende disponibili ambienti per l’esecuzione di applicazioni containerizzate.

Il CaaS utilizza le tecnologie della virtualizzazione per consentire agli utenti di creare e gestire i container senza doversi di fatto preoccupare dell’infrastruttura IT sottostante.

I servizi CaaS prevedono un elevato livello di automatizzazione e vengono resi disponibili mediante interfacce basate su logiche self-service, intuitive e semplici da utilizzare anche da chi non possiede conoscenze di sistemi IT a livello avanzato.

In questo contesto, il provider CaaS offre anche una piattaforma di orchestrazione (es. Kubernetes) che consente di distribuire e gestire i container automatizzando le principali funzioni IT, senza richiedere puntualmente l’intervento di un sistemista.

Dal punto di vista del funzionamento, il CaaS è una piattaforma basata sul cloud che permette agli utenti di semplificare i processi di virtualizzazione grazie a cui operano i container, oltre alla loro gestione e orchestrazione.

Il catalogo dei provider CaaS offre generalmente moltissime possibilità di configurazione, che consentono ai team di sviluppo di trovare la soluzione ideale per eseguire i loro carichi di lavoro, con la garanzia di scalabilità che contraddistingue i servizi cloud based.

Le principali funzionalità di un CaaS comprendono la containerizzazione, l’orchestrazione dei container, la configurazione delle reti e delle piattaforme, oltre alla gestione degli accessi e ai controlli di sicurezza, più che mai essenziali per garantire la resilienza del servizio.

Le piattaforme moderne consentono ai CaaS di automatizzare l’intero ciclo di vita del container, per consentire ai team di sviluppo di essere operativi nel giro di pochi click, disponendo al tempo stesso di un’infrastruttura IT estremamente agile, svincolandosi da qualsiasi preoccupazione relativa all’hardware e ai sistemi operativi.

La portabilità dei container su larga scala costituisce uno dei principali fattori di adozione di questa tecnologia.      

L’orchestrazione è un sistema che consente di distribuire automaticamente i container, oltre ad altre funzioni fondamentali, come il bilanciamento del carico.

La piattaforma di orchestrazione più nota e diffusa è senza dubbio Kubernetes, che dispone peraltro del vantaggio di essere open source, ma non vanno trascurate Docker Swarm e le tecnologie proprietarie degli hyperscaler, come Amazon ECS o Microsoft Azure Container Instances.

Le competenze di orchestrazione dei container sono tra le più ricercate in assoluto nel mercato delle professioni IT.

Le piattaforme CaaS utilizzano generalmente reti virtuali SDN (software defined network) per garantire agli utenti la connettività necessaria all’esecuzione delle istanze dei container.

Gli utenti del servizio interagiscono con le piattaforme mediante opportune API, che consentono l’integrazione con altri sistemi, o più semplicemente attraverso le interfacce web based del front-end del provider, che consentono di configurare rapidamente i servizi, resi disponibili nel giro di brevissimo tempo.

I sistemi CaaS impiegano una o più funzionalità IAM (identity and access management), come i controlli basati sui ruoli (RBAC), oltre ad integrare misure di sicurezza specifiche, come l’isolamento dei container e la scansione automatica delle immagini dei container stessi, utili a scongiurare possibili vulnerabilità nel codice.

Il mercato del CaaS è dato in continuo aumento, anno dopo anno.

Facendo una media dei principali forecast, possiamo stimare un volume d’affari nell’ordine dei 7 miliardi di dollari entro il 2027, con un tasso di crescita medio annuo (CAGR) pari al 30%.

Gli sviluppatori utilizzano il CaaS nel contesto dello sviluppo delle applicazioni moderne, basate sull’architettura a microservizi, che consiste nel decomporre la tradizionale applicazione monolitica in vari blocchi funzionali, implementabili in maniera tra loro indipendente, in maniera estremamente agile e flessibile.

Per tale ragione, i container sono una tecnologia essenziale nello sviluppo di applicazioni CI/CD (continuous integration / continuous deploy), dove i rilasci delle nuove versioni avvengono in maniera del tutto trasparente per l’utente finale.

La containerizzazione consente inoltre di modernizzare le applicazioni legacy più rapidamente, senza doverle necessariamente riscrivere da zero.

Nel contesto enterprise, le aziende impiegano il CaaS per automatizzare i deployment e ridurre i costi legati all’infrastruttura IT necessaria per lo sviluppo, con la possibilità di poter scalare in qualsiasi momento le risorse in base alle effettive esigenze dei carichi di lavoro.

A livello concettuale, il CaaS si pone in una condizione intermedia tra IaaS (infrastructure as a service) e PaaS (platform as a service), i due principali modelli a servizio disponibili in cloud, oltre al SaaS (software as a service).

IaaS rappresenta il livello fondamentale del cloud computing, e consente di virtualizzare e rendere disponibile via internet le risorse hardware, senza doverne fisicamente disporre nel proprio data center.

Utilizzando IaaS, i sistemisti e gli sviluppatori possono eseguire il provisioning e configurare le istanze delle macchine virtuali su cui vengono installati i sistemi operativi e il resto del software.

PaaS si basa sulla virtualizzazione al livello del sistema operativo, rendendo l’utente finale responsabile soltanto del livello dall’applicazione in su.

Il CaaS consente di snellire ulteriormente questo concetto, utilizzando ambienti di runtime indipendenti dal sistema operativo su cui vengono eseguiti.

In tempi più recenti ha iniziato a diffondersi anche il FaaS (function as a service), modello di distribuzione alla base delle architetture serverless, che consentono agli sviluppatori di caricare direttamente le funzioni del codice ed eseguirle senza configurare o gestire alcuna infrastruttura o dipendenza di sistema sottostante. Ciò avviene mediante una logica basata sugli eventi.

Il serverless, contrariamente da ciò che farebbe pensare il nome stesso, non elimina l’infrastruttura, ma la rende del tutto trasparente all’utente finale.

I container consentono di rendere disponibili gli ambienti di sviluppo in maniera più rapida ed efficiente rispetto alla tradizionale configurazione delle macchine virtuali.

I container semplificano la creazione, il test e la distribuzione del software basato su architettura a microservizi e consentono ai team di sviluppo di ridimensionare le app containerizzate grazie a tecnologie appositamente concepite per tale scopo.

Grazie al CaaS, le aziende possono ottenere una serie di importanti benefici:

  • Pagare soltanto le risorse strettamente necessarie per l’esecuzione del software, facilmente gestibili mediante istanze che tengono conto del bilanciamento del carico e delle funzionalità di pianificazione richieste;
  • Favorire l’automatizzazione mediante le distribuzioni IaC (Infrastructure as a code);
  • Avvalersi delle funzioni di sicurezza avanzate garantite dai principali provider cloud;
  • Favorire l’innovazione, grazie al fatto che i cloud provider implementano continuamente nuove evoluzioni tecnologiche, ad esempio nuove funzioni basate sull’intelligenza artificiale.

Tale premessa, tipica del cloud pubblico, non esclude tuttavia la possibilità di beneficiare dei vantaggi del cloud nel contesto di un cloud privato.

Il CaaS può essere configurato anche su infrastruttura locale gestita in cloud.

Questo approccio IT consente ai sistemisti un maggiore controllo nella creazione e nella gestione dei container, soprattutto quando vengono coinvolti dati che non possono essere condivisi su infrastrutture di terzi, per ragioni normative o legate ad accordi di natura privatistica.