Microservizi e container aiutano a ottenere cicli di sviluppo software più rapidi, rilasci e aggiornamenti più frequenti, applicazioni e servizi digitali in grado di adattarsi di continuo alle dinamiche del mercato. In altre parole, queste tecnologie aiutano a rendere l’architettura IT agile e adattabile in rapporto al business: due requisiti imprescindibili per qualunque impresa voglia oggi continuare a competere nell’era della digital transformation.


Microservizi e container per superare la rigidità dell’IT tradizionale

Microservizi e container informatici risultano un approccio tecnologico utile quando, all’interno dell’organizzazione, l’infrastruttura IT esistente si rivela rigida da modificare e aggiornare, costosa da mantenere, e il ciclo di sviluppo software è ancora improntato su modelli sequenziali come quello a cascata (waterfall). Tali ambienti IT, ancora largamente presenti on-premise, non sono adatti a gestire i moderni workload e le applicazioni di ultima generazione. La rigidità delle infrastrutture IT tradizionali è tipicamente causata dalla stretta dipendenza del software dall’hardware sottostante, e dalla larga presenza di applicazioni legacy caratterizzate da un’architettura monolitica.


Architetture monolitiche, i limiti superati da microservizi e container

Ad esempio, un’applicazione tradizionale che gira su hardware mainframe non può essere facilmente trasferita e installata in un altro ambiente IT, come il cloud; inoltre, l’architettura monolitica dell’applicazione è costituita da componenti software (logica di business, database, user interface) strettamente integrati in un solo blocco di codice. Specie quando le dimensioni crescono, tale architettura rende l’applicazione complessa da aggiornare e manutenere, difficile da rilasciare in nuove versioni con alta frequenza, complicata da gestire in termini di scalabilità delle prestazioni, ed anche problematica a livello di affidabilità, in quanto, anche se uno solo dei moduli del programma accusa un guasto, può determinare il blocco dell’intera applicazione.


Modernizzazione con microservizi e container

Per modernizzare queste classiche architetture applicative, un approccio sempre più seguito è la migrazione verso un paradigma ‘cloud native’. Un’applicazione cloud native è progettata in modo specifico per sfruttare i benefici di agilità ed elasticità, nel provisioning delle risorse, tipici dell’architettura cloud. Come spiega la Cloud Native Computing Foundation (CNCF), “le tecnologie cloud native permettono alle organizzazioni di realizzare ed eseguire applicazioni scalabili in ambienti moderni e dinamici, come i cloud pubblici, privati e ibridi”, e tra tali tecnologie cloud native due importanti esempi sono, appunto, i microservizi e container.


Microservizi e container, cosa sono

Un microservizio, nella definizione della società di analisi Gartner, “è un componente applicativo ‘service-oriented’ strettamente mirato, fortemente incapsulato, debolmente accoppiato (“loosely coupled”), implementabile e scalabile in maniera indipendente”. Su questa natura indipendente ed autonoma di ciascun microservizio si fonda il concetto di architettura a microservizi, secondo cui un’applicazione può essere costruita come un insieme di servizi modulari indipendenti, ciascuno dedicato a una determinata funzione ed in grado di comunicare con gli altri tramite API (Application Programming Interface).

Altra tecnologia utile per creare un’architettura applicativa agile sono i container: la containerizzazione permette, ad esempio, di ‘impacchettare’ in un unico file immagine tutti i componenti software (codice, librerie, file binari, dipendenze, file di configurazione) richiesti per eseguire un determinato microservizio. Sviluppare un microservizio in un container permette quindi di renderlo facilmente trasportabile, e di eseguirne il deployment in qualunque ambiente IT (on-premise, cloud privato, pubblico, ibrido) si desideri.


Implementare un IT agile con microservizi e container

Utilizzando microservizi e container è possibile modernizzare le applicazioni legacy monolitiche adottando, ad esempio, una strategia di replatforming, da applicare secondo un approccio incrementale: in sostanza, si può eseguire la migrazione sul cloud in modalità cloud native solo dei moduli e componenti dell’applicazione legacy ritenuti più importanti o critici per determinati requisiti di progetto (prestazioni, scalabilità), e non dell’intera applicazione. Ciò permette di ridurre i costi e rischi del programma di migrazione e, al contempo, di beneficiare, per i nuovi moduli sviluppati, di tutti i vantaggi di agilità e flessibilità dell’IT insiti nel modello cloud.