Microservizi: come evitare errori in fase di migrazione dall’ambiente monolitico

pittogramma Zerouno

TechTarget Technology HowTo

Microservizi: come evitare errori in fase di migrazione dall’ambiente monolitico

I programmatori commettono spesso gli stessi errori quando abbandonano ambienti di sviluppo monolitici per passare ai microservizi. In questa guida gli esperti aiutano a capire i punti di attenzione per evitare i problemi

13 Apr 2020

di Laura Zanotti - Fonte TechTarget

Microservizi nell’ambito della programmazione significa una nuova architettura di sviluppo software che rivoluziona il modo di progettare le applicazioni. Grazie a logiche di programmazione granularizzate, infatti, gli sviluppatori acquisiscono maggiore controllo sulle loro applicazioni. Possono creare e aggiornare contemporaneamente i servizi in modo molto più rapido e possono apportare modifiche mirate senza doversi preoccupare del loro impatto sulle prestazioni.

A fronte di questi vantaggi, troppi team di software commettono degli errori durante la fase di migrazione che possono essere fatali. Gli esperti offrono alcuni consigli per aiutare i programmatori a spostare le loro applicazioni da un ambiente monolitico all’universo dei microservizi.

architetture di microservizio 1

Ecco le cinque trappole più comuni che i team di software devono evitare nel passaggio a un’architettura microservices.

#1. Muoversi troppo velocemente

La rapida adozione dei microservizi è uno degli errori più comuni da evitare assolutamente. Anche se i microservizi offrono la possibilità di distribuire rapidamente nuove applicazioni e aggiornamenti, la complessità intrinseca dell’architettura distribuita non è sempre e necessariamente la risposta giusta per determinati tipi di organizzazioni o applicazioni. Innanzitutto, i team di programmazione dovrebbero valutare bene la loro cultura di sviluppo per capire se esistono le giuste competenze a livello di gestione. Inoltre, dovrebbero analizzare le applicazioni esistenti per determinare se sono adatte e pronte per la migrazione ai microservizi. Tutto questo, partendo dal persupposto di lavorare attraverso i principi Agile e DevOps, dal momento che i microservizi non lavorano molto bene con un approccio di sviluppo a cascata.

I team hanno anche bisogno di una formazione mirata e dell’accesso alla documentazione prima di iniziare una migrazione di carichi di lavoro basati su monoliti.

Quando inizia la migrazione ai microservizi gli esperti sottolineano anche come, senza un piano adeguato e investimenti infrastrutturali adeguati, possono insorgere problemi di prestazioni. I team possono mitigare questi problemi solo se i servizi sono davvero sviluppati in modo indipendente l’uno dall’altro, pur comunicando normalmente.

microservizi e containerizzazione 1

2. Rendere i servizi troppo piccoli

DIGITAL EVENT 18 GIUGNO
Think Digital Summit: tecnologie e trend verso una nuova normalità
Cloud
Sicurezza

Lavorare con i microservizi richiede una notevole competenza a livello di dominio. Ciascun microservizio è distribuito in un contenitore separato per cui è importante un dimensionamento adeguato, il che significa che ogni funzione aziendale deve gestire un singolo servizio. L’errore, quando i servizi sono troppo piccoli, è che i team finiscono per ritrovarsi con più servizi di quanti ne possano effettivamente gestire. Nonostante i container siano generalmente più leggeri nel consumo di risorse rispetto alle VM, possono comunque generare un notevole sovraccarico dei servizi. L’impatto di un sovraccarico di servizi isolati nei container è quello di ostacolare l’automazione delle attività chiave, ad esempio quando i team distribuiscono aggiornamenti, ridimensionano il carico e impostano la comunicazione asincrona.

Non esiste uno standard sul dimensionamento dei microservizi. Durante la migrazione delle funzionalità monolitiche ai microservizi, prendere decisioni sulle dimensioni dei servizi aiuta a supportare le applicazioni specifiche. Una buona pratica è iniziare con servizi più grandi che gli sviluppatori vanno poi ad articolare gradualmente in servizi più piccoli quando hanno maturato maggiore esperienza nello sviluppare le giuste alberature rispetto alle operazioni del mondo reale. Trovare l’equilibrio è spesso solo una questione di tempo e sperimentazione.

3. Servizi di accoppiamento troppo stretti

Il concetto alla base dei microservizi è quello di sviluppare servizi indipendenti che non hanno bisogno l’uno dell’altro per funzionare. Il che significa che ciascuno di questi servizi può essere modificato senza registrare tempi di inattività in altre parti dell’applicazione. Tuttavia, i team tendono a commettere l’errore di mantenere i servizi strettamente accoppiati analogamente a quanto avviene in un approccio monolitico. Dal momento che le applicazioni monolitiche si basano su forti connessioni tra i componenti, in fase di migrazione è frequente non considerare il cambio di passo e le modalità di intervento necessarie a disaccoppiare le interdipendenze.

Quando si suddividono le applicazioni monolitiche in servizi, gli sviluppatori devono stare molto attenti a intervenire in modo diretto nel disaggregare le connessioni, per evitare l’errore di realizzare quello che si chiama modello monolitico distribuito. Il rischio, infatti, è di ottenere un’applicazione che è ancora monolitica in natura e che richiederà complessi sforzi di gestione nella sua granularizzazione in chiave di microservizio.

Per evitare questa trappola i team devono imparare a creare servizi che siano accoppiati il ​​più liberamente possibile. Come? Progettando ogni singolo servizio in modo che possa funzionare senza alcun aiuto da parte di altri servizi. I servizi più piccoli, che richiedono regolarmente ridimensionamenti o aggiornamenti, dovrebbero essere progettati in modo completamente indipendente.

4. Archiviazione dei log nei container

Le applicazioni monolitiche archiviano i log in una posizione centralizzata, in grado di risalire a qualsiasi componente all’interno dell’architettura. La registrazione diventa complicata nei microservizi, specialmente quando gli sviluppatori scelgono di posizionare i log all’interno delle singole istanze del contenitore. In poco tempo, infatti, queste istanze diventano difficili da trovare in tempi rapidi. Senza contare che tutti i registri archiviati in un contenitore di breve durata vengono eliminati una volta esaurita la funzione del container.

Per evitare questo problema, i team devono archiviare i log in un database centralizzato o in una piattaforma di analisi dei log in grado di connettersi ai contenitori distribuiti. Solo in questo modo gli sviluppatori possono accedere facilmente ai log e mappare gli errori ai rispettivi servizi e risolverli.

5. Mancata considerazione del monitoraggio

La migrazione ai microservizi introduce uno scenario di monitoraggio complesso e sconosciuto ai team IT abituati alla produzione delle app monolitiche. Questo perché i componenti dei microservizi spesso sono sviluppati su stack tecnologici completamente diversi, distribuiti e comunicanti, che rendono difficile individuare esattamente l’origine di un problema. Nonostante i migliori sforzi compiuti per abilitare l’indipendenza di un servizio, può comunque capitare che si scatenino delle conseguenze imprevedibili su uno o altri servizi. Ecco perché è importante introdurre sistemi di monitoraggio centralizzati che assicurano il presidio delle applicazioni. Solo grazie a questo tipo di investimenti è possibile assicurarsi del comportamento corretto delle applicazioni: qualsiasi anomalia non prevista sarà registrata e messa a sistema, aiutando i team a ripristinare e indirizzare al meglio i microservizi problematici.

Z

Laura Zanotti - Fonte TechTarget

Giornalista

Ha iniziato a lavorare come technical writer e giornalista negli anni '80, collaborando con tutte le nascenti riviste di informatica e Telco. In oltre 30 anni di attività ha intervistato centinaia di Cio, Ceo e manager, raccontando le innovazioni, i problemi e le strategie vincenti delle imprese nazionali e multinazionali alle prese con la progressiva convergenza tra mondo analogico e digitale. E ancora oggi continua a farlo...

Argomenti trattati

Approfondimenti

M
Microservizi
Technology HowTo
Microservizi: come evitare errori in fase di migrazione dall’ambiente monolitico

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

    LinkedIn

    Twitter

    Whatsapp

    Facebook

    Link

    Articolo 1 di 4