Microservizi e container: parola d'ordine "agilità"

triangolo

Container e microservizi: isolamento e ottimizzazione delle risorse IT

L’accoppiata tecnologica microservizi e container è la soluzione architetturale più moderna per lo sviluppo e la modernizzazione degli applicativi informatici. Questo binomio supera l’implementazione oramai obsoleta di architetture monolitiche e l’utilizzo di macchine virtuali: i limiti di queste tecnologie di sviluppo software sono diverse e comportano tempi e costi molto più alti, sia in fase di development che di manutenzione. 

Per questo motivo, anche gli applicativi attualmente basati su architetture monolitiche possono essere migrati su soluzioni distribuite e a servizi. Questo tipo di migrazione rappresentava in passato un passaggio molto complesso e comportava spesso disfunzioni all’applicativo: questo processo è oggi molto più agevole grazie all’approccio lift and shift che prevede la migrazione di piccoli pezzetti di software e, solo in ultima fase, lo smantellamento del monolite, assicurando la stabilità e la continuità applicativa.

Microservizi e container sono due tecnologie diverse, non devono essere utilizzate congiuntamente, ma spesso le aziende decidono di investire su entrambe. Con l’architettura a microservizi, ogni singolo componente è indipendente dagli altri e lavora su una singola funzione, comunicando con gli altri tramite l’esposizione di API

Questa architettura permette quindi una gestione più snella del processo di sviluppo software. L’indipendenza e la segmentazione dell’architettura a microservizi sono i punti di forza della soluzione e il motivo dietro il suo rapido successo:

  • Spezzettando l’applicativo in parti più piccole e indipendenti tra loro, è possibile scalare orizzontalmente a livello di singolo servizio in base alle risorse necessarie, ottimizzandone l’utilizzo;
  • Se uno dei servizi presenta dei problemi, il resto dell’applicativo rimane intatto (fermo restando che alcune connessioni potrebbero comunque non essere disponibili);
  • Continuous delivery: gli sviluppatori aggiornano i singoli servizi separatamente, invece che intervenire sull’intero applicativo: in questo modo, i compiti dei singoli developer sono più chiari e il processo di aggiornamento più rapido e frequente;
  •  Il lavoro su codice ridotto e sui singoli segmenti permette un’attività di manutenzione più rapida ed efficiente e, spesso, una riduzione del suo costo.

Scarica il White Paper sui Microservizi

Un container è un insieme di dipendenze, librerie, unitamente al codice applicativo, salvato sotto forma di immagine (container image) che può essere eseguito su qualsiasi macchina supporti l’esecuzione dei container (incluso il cloud), senza ulteriori limiti di compatibilità. Non sono solo altamente portabili ma anche replicabili.

Rispetto alle macchine virtuali, i container sono molto più leggeri: invece di utilizzare un hypervisor, i container condividono il kernel del sistema operativo dell’host. In questo modo, i container allocano in tempo reale solo quelle risorse (ad esempio installazioni, dipendenze e codice) di cui le applicazioni hanno effettivamente bisogno. Ciò significa che possono arrestarsi e avviarsi più rapidamente, assicurando prestazioni migliori rispetto alle macchine virtuali. Nella pratica, isolare gli applicativi con i container richiede decisamente meno risorse rispetto alle macchine virtuali.

I vantaggi di un’architettura a microservizi e container

L’implementazione congiunta di microservizi e container permette di impacchettare un singolo servizio all’interno di un container e di ridimensionarlo indipendentemente dal resto dell’applicazione, in base alle necessità.

I container sono la modalità più diffusa per implementare un’architettura distribuita a servizi. Questo perché:

  • I container possono essere avviati in pochi secondi (una VM impiega invece diversi minuti);
  •  L’agilità dei microservizi è massimizzata se ospitati all’interno di container;
  • Lato sicurezza, i container forniscono isolamento per ogni applicativo o microservizio, riducendo nettamente il rischio di diffusione di eventuali vulnerabilità;
  • È più semplice per i microservizi comunicare tra loro quando vengono eseguiti in container gestiti sulla stessa piattaforma (si evitano ad esempio situazioni disfunzionali dove ogni host potrebbe avere configurazioni di rete diverse),
  •  Allo stesso modo, i microservizi sono più facili da orchestrare quando vengono eseguiti in container su una piattaforma condivisa.

Un sistema basato su microservizi e container riduce l’insorgenza di colli di bottiglia e consente inoltre la creazione e gestione di pipeline CI/CD per le applicazioni e la modernizzazione dello stack tecnologico. 

Aziende come Amazon e Netflix hanno riprogettato le applicazioni monolitiche in applicazioni a microservizi, stabilendo un nuovo standard per la tecnologia dei container.

È possibile containerizzare anche gli applicativi basati su un’architettura monolitica, infrastruttura che caratterizza, ad esempio, i software legacy. Utilizzare una piattaforma di container management anche per software datati permette infatti di renderli più flessibili e di facilitare la migrazione al cloud e trarre vantaggio da questa tecnologia.

Oltre a favorire il passaggio al cloud, un’architettura monolitica containerizzata riduce al minimo il rischio di guasto in caso di rimozione delle connessioni tra le varie parti di un sistema, proprio per l’isolamento fornito dai container e ottimizza l’allocazione delle risorse.

La containerizzazione dei software legacy consente anche di ridurre i costi di manutenzione molti alti degli applicativi di vecchia data e di ridurre il time-to-market, rendendo il software e quindi il business molto più reattivo ai cambiamenti.

Nel contesto più generale di modernizzazione dei software legacy, la software replatform in container è una delle strategie consigliate per ottimizzare e velocizzare il processo di sviluppo, snellire le attività di manutenzione, riducendone i costi e per migrare gli applicativi più facilmente sul cloud.

In generale, implementare microservizi e container, o meglio, distribuire i servizi su container è però il miglior compromesso tra sicurezza, prestazioni e gestione. 

Scarica il White Paper sui Microservizi