Software Selection

Microservizi: 5 tool open source per svilupparli e amministrarli

Le architetture cloud-native basate su microservizi sono sempre più adottate per modernizzare l’IT e renderla più agile rispetto alle esigenze di business: tuttavia, esse introducono anche complessità, che occorre saper governare con gli strumenti giusti. Molti di questi sono tool open source, e possono aiutare in diversi stadi del processo di sviluppo software

Pubblicato il 25 Mar 2021

tool microservizi Open source

Nel quadro di continua evoluzione delle metodologie di sviluppo e distribuzione delle applicazioni software, la popolarità dei microservizi continua a crescere e, di conseguenza, l’interesse per tool per svilupparli e amministrarli. Lo stile di progettazione basato su microservizi, assieme all’uso di container, service mesh, API (application programming interface) dichiarative, e ‘infrastruttura immutabile’ (quella in cui l’infrastruttura server software non viene mai modificata dopo il deployment), è indicato dalla Cloud Native Computing Foundation (CNCF) come l’approccio da seguire per la creazione delle moderne applicazioni cloud-native. Queste ultime fanno affidamento sui cloud pubblici, privati, ibridi, per rispondere ai requisiti di elevata flessibilità e scalabilità che molteplici applicazioni di business oggi richiedono. L’uso del paradigma cloud-native per lo sviluppo software è promosso dalla CNCF, propagandando e sostenendo un ecosistema di progetti open source, neutrali rispetto ai vendor, per riuscire a rendere accessibili tali innovazioni tecnologiche a chiunque.

Microservizi in piena fase ‘mainstream’

Già qualche anno fa, una survey condotta tra i quasi 2 mila membri della comunità del noto progetto open source per software di web serving NGINX, dell’omonima azienda, ora parte della società F5, aveva messo in evidenza come i microservizi fossero entrati nella fase ‘mainstream’, di larga diffusione nel settore, con un 68% delle organizzazioni che li stavano utilizzando, o ne stavano studiando l’utilizzo, e un 36% delle grandi imprese che li adottavano in ambienti di sviluppo o produzione.

Nel 2020, la stessa survey (“The State of Modern App Delivery 2020 in the NGINX Open Source Community”) mostra che, tra i microservizi in produzione, la proporzione di app costruite utilizzando questa modalità continua a crescere rapidamente, dal 40% del 2019, al 60% del 2020. Da un altro studio (“Mainframe In The Age Of Cloud, AI, And Blockchain”), condotto nel 2019 dalla società di ricerca e consulenza Forrester, e commissionato congiuntamente dalle aziende Ensono e Wipro, emerge che il 76% delle imprese sta riprogettando le applicazioni per ridisegnarle sulla base di microservizi, nel contesto di strategie di modernizzazione dell’architettura applicativa focalizzate sullo sfruttamento delle tecnologie cloud-native.

Implementare microservizi con l’open source

Sviluppare un’applicazione basandola su un’architettura a microservizi, significa realizzarla come un insieme di piccoli servizi, indipendenti l’uno dall’altro ma in grado di comunicare tra loro attraverso API. Questa architettura differisce sensibilmente da quella tradizionale, di tipo monolitico, in cui tutti i componenti chiave dell’applicazione (interfaccia utente lato client, applicazione lato server, gestione richieste HTTP, database, logica di business) vengono sviluppati e integrati all’interno di un unico blocco di codice. Tra i vantaggi dei microservizi vi sono, soprattutto, maggior agilità di sviluppo e time-to-market più rapido per il rilascio di applicazioni e servizi; scalabilità di ciascun servizio in modo indipendente dagli altri; maggior resilienza dell’applicazione, in grado di continuare a funzionare anche in caso di avarie in singoli servizi; maggior adattabilità alle pratiche di sviluppo CI/CD (continuous integration, continuous delivery, continuous deployment), che fanno parte della moderna metodologia DevOps.

La natura modulare e componibile dei microservizi si accorda armonicamente con il modello open source, in quanto molti componenti dell’applicazione da realizzare si possono sviluppare a partire da progetti e strumenti open source esistenti, senza richiedere l’utilizzo di tecnologie proprietarie e il pagamento di licenze. Ancora, le mesh di servizi (service discovery, authentication, scaling, load balancing, monitoring), utili per migliorare la comunicazione service-to-service, soprattutto, quando i microservizi crescono in numero e complessità, sono implementabili attraverso tool e software open source. In aggiunta, adottando software open source, invece che proprietario, non si resta vincolati al ritmo d’innovazione di questo o quel vendor, ma si è più liberi di sviluppare e personalizzare le funzionalità dell’applicazione per rispondere a specifiche necessità e requisiti aziendali.

Tool open source: dalle service mesh all’orchestrazione di container

Gli strumenti open source a disposizione per costruire microservizi si estendono a tutti i livelli del processo di sviluppo dell’applicazione.

Quando si deve costruire una service mesh, ad esempio, il tool open source Istio, progettato per gestire le comunicazioni tra microservizi, permette di creare una rete di servizi in architetture applicative distribuite, senza necessità di modifiche nel codice dell’applicazione. L’obiettivo è liberare lo sviluppatore dalla preoccupazione di dover gestire gli aspetti infrastrutturali delle comunicazioni, per consentirgli di concentrarsi unicamente sulla logica di business dell’applicazione e sullo sviluppo di nuove funzionalità. Istio fornisce, ad esempio, funzionalità di connessione e bilanciamento del carico; funzionalità di sicurezza (crittografia, autenticazione, controllo accessi), funzionalità di tracciamento, monitoraggio delle prestazioni dei servizi, gestione del traffico.

Un altro strumento open source da valutare nello sviluppo di microservizi è Redis, un ‘data structure store’, ossia un archivio di strutture dati in memoria (‘in-memory’), utilizzabile come database, cache, e message broker. Specie quando occorre implementare microservizi che necessitano di prestazioni real-time, Redis è in grado di fornire molteplici modelli e strutture dati, tra cui si possono scegliere quelle più adatte per contenere la latenza e ottimizzare le performance di ciascun servizio. Inoltre, il tool Redis può gestire la comunicazione tra servizi, e funzionare come event store, quindi archivio eventi, per la corretta memorizzazione dello stato dei singoli microservizi.

La tecnologia di containerizzazione è un altro strumento fondamentale quando si sviluppa applicazioni usando microservizi: qui, l’open source gioco un ruolo determinante, attraverso una piattaforma come Docker. Infatti, ciascun microservizio, una volta sviluppato, può essere impacchettato, tramite Docker, con tutti i suoi componenti e dipendenze, e incapsulato in un container, per semplificarne la portabilità nella distribuzione e gestione in svariati ambienti on-premise, cloud privati, ibridi, o infrastrutture multi-cloud.

I container si sono diffusi per la loro utilità nell’implementazione di microservizi in ambienti IT eterogenei, nell’adozione delle pratiche CI/CD, e in vari altri casi d’uso. Tuttavia, la complessità di gestione cresce con il numero di container, soprattutto in ambienti di produzione in cui occorre amministrare con efficacia ed efficienza container da cui dipende il funzionamento di applicazioni ‘business-critical’, che non devono subire interruzioni. In questi casi è possibile soddisfare i necessari requisiti di resilienza e continuità del business nelle diverse applicazioni, utilizzando una piattaforma open source come Kubernetes. Quest’ultimo è uno software di orchestrazione container, in grado di amministrare workload e servizi containerizzati su scala enterprise. Tra le diverse caratteristiche, Kubernetes fornisce funzionalità di scoperta dei servizi e bilanciamento del carico, tramite distribuzione del traffico su più container; aggiorna in automatico l’applicazione con modifiche e cambi di configurazione, riportandola, in caso di malfunzionamenti, a uno stato precedentemente funzionante; monta in automatico i sistemi di storage desiderati, disponibili a livello locale o nel cloud; riavvia in automatico i container che hanno subìto un arresto, terminando quelli che risultano non rispondere.

Dal punto di vista del monitoraggio dei microservizi, si può citare il tool open source Prometheus. Le architetture applicative cloud-native moderne, basate su microservizi implementati in container distribuiti in vari ambienti IT, fanno crescere il numero di componenti discreti da monitorare a livello hardware e software (CPU e memoria dell’host, runtime dei container, istanze Kubernetes, applicazioni), generando grandi volumi di dati telemetrici. Sotto questo profilo, integrando un modello di gestione dei dati multidimensionale, assieme a un linguaggio di interrogazione flessibile, e alle caratteristiche di visulizzazione e alle dashboard disponibili grazie al supporto di Grafana, Prometheus è in grado di rispondere ai complessi requisiti di monitoraggio richiesti dalle architetture applicative a microservizi.

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Articoli correlati

Articolo 1 di 4