È probabile che i microservizi siano apprezzati dai dirigenti e dai responsabili di progetto almeno quanto dagli sviluppatori. Questa è una delle caratteristiche più insolite dei microservizi, perché l'entusiasmo verso un'architettura è in genere riservato ai team di sviluppo software. Il motivo è che i microservizi riflettono meglio il modo in cui molti dirigenti aziendali desiderano strutturare e gestire i loro team e processi di sviluppo.
In altre parole, i microservizi sono un modello architetturale che consente di realizzare meglio il modello operativo desiderato. In una survey IBM del 2021 condotta su oltre 1.200 sviluppatori e dirigenti IT, l'87% degli utenti di microservizi ha convenuto che l'adozione dei microservizi vale la spesa e l'impegno.
Questi sono alcuni dei vantaggi dei microservizi per le aziende:
Distribuibili in modo indipendente
Probabilmente, la caratteristica più importante dei microservizi è che, essendo i servizi più piccoli e distribuibili in modo indipendente, è molto meno complesso modificare una riga di codice o aggiungere una nuova funzione all'applicazione.
I microservizi promettono alle aziende di risolvere il problema legato alle piccole modifiche che richiedono enormi quantità di tempo. Il valore di questo approccio, che coniuga facilità e velocità, è ben chiaro anche ai non addetti ai lavori.
La velocità, tuttavia, non è l'unico valore di questa modalità di progettazione dei servizi. Un modello organizzativo emergente comune è quello di riunire team interfunzionali intorno a un problema aziendale, un servizio o un prodotto. Il modello dei microservizi si adatta perfettamente a questa tendenza perché consente a un'organizzazione di creare piccoli team interfunzionali intorno a un servizio o a una raccolta di servizi e di farli operare in modo agile.
L'accoppiamento debole dei microservizi permette inoltre un certo grado di isolamento degli errori e promuove una maggiore resilienza nelle applicazioni. Inoltre, le dimensioni ridotte dei servizi, combinate con i loro confini chiari e i pattern di comunicazione, rendono più facile per i nuovi membri del team comprendere la base di codice e contribuirvi rapidamente: un chiaro vantaggio sia in termini di velocità che di morale dei dipendenti.
Lo strumento giusto per ogni lavoro
Nei tradizionali pattern di architettura a livelli, un'applicazione in genere condivide uno stack comune, con un ampio database relazionale a supporto dell'intera applicazione. Questo approccio presenta diversi svantaggi evidenti, il più significativo dei quali è che ogni componente di un'applicazione deve condividere uno stack, un modello di dati e un database comuni, anche se per determinati elementi esiste uno strumento migliore e più adatto allo scopo. Questo va a discapito dell'infrastruttura, ed è frustrante per gli sviluppatori che sono pienamente consapevoli dell'esistenza di un modo migliore e più efficiente per creare questi componenti.
Al contrario, in un modello di microservizi, i componenti vengono distribuiti in modo indipendente e comunicano tramite una combinazione di REST, event streaming e broker di messaggi, quindi è possibile ottimizzare lo stack di ogni singolo servizio per tale servizio. La tecnologia cambia continuamente ed è molto più facile e conveniente aggiornare un'applicazione composta da diversi servizi più piccoli con una tecnologia migliore non appena è disponibile.
Scalabilità precisa
Con i microservizi, i singoli servizi possono essere distribuiti individualmente, ma anche essere scalati individualmente. Il vantaggio che ne deriva è evidente: se eseguiti correttamente, i microservizi richiedono meno infrastruttura rispetto alle applicazioni monolitiche, perché consentono di scalare in modo preciso solo i componenti che lo richiedono, anziché l'intera applicazione nel caso di applicazioni monolitiche.
I microservizi, tuttavia, presentano anche delle criticità:
Gli importanti vantaggi dei microservizi comportano anche delle sfide significative. Passare da un'architettura monolitica ai microservizi implica una maggiore complessità di gestione: molti più servizi, creati da molti più team, distribuiti in molti più luoghi. I problemi in un servizio possono causare o essere causati da problemi in altri servizi. La registrazione di log (utilizzata per il monitoraggio e la risoluzione dei problemi) è più complessa e può essere incoerente tra i diversi servizi. Le nuove versioni possono causare problemi di compatibilità con le versioni precedenti. Le applicazioni comportano più connessioni di rete, il che significa maggiori possibilità di problemi di latenza e problemi di connettività. Un approccio DevOps può risolvere molti di questi problemi, ma l'adozione di DevOps presenta ulteriori ostacoli.
Nonostante tutto, queste sfide non impediscono ai non adottanti di adottare i microservizi, né agli adottanti di intensificare i propri sforzi in materia i microservizi. I dati della survey IBM già citata rivelavano che il 56% degli attuali non utilizzatori avrebbe adottato probabilmente, o molto probabilmente, i microservizi nei due anni successivi, mentre il 78% degli attuali utilizzatori di microservizi avrebbe aumentato probabilmente il tempo, il denaro e gli sforzi investiti nei microservizi.