#1 Leader globale nella resilienza dei dati
Linee guida di Veeam per i clienti interessati dall'aggiornamento dei contenuti di CrowdStrike

Cosa sono i microservizi?

I microservizi sono un approccio architetturale allo sviluppo di applicazioni che suddivide un progetto in servizi più piccoli e indipendenti che comunicano tra loro tramite API. L'uso dei microservizi può velocizzare lo sviluppo delle applicazioni riducendo la complessità di ogni parte del progetto. I singoli microservizi possono essere riutilizzati in più progetti.

Scopri come Veeam Data Platform può aiutarti a proteggere la sicurezza dei dati nel tuo ambiente cloud, ibrido o on-premises.

Architettura monolitica e architettura a microservizi

Storicamente, le applicazioni online utilizzavano un'architettura monolitica. Con questo approccio allo sviluppo del software, tutti i processi all'interno di un progetto sono strettamente collegati tra loro. Un progetto SaaS monolitico può contenere diversi componenti, tra cui:

  • Server Web e strumento di bilanciamento del carico
  • Registrazione e gestione degli utenti
  • Sistemi di pagamento
  • Sistemi CRUD per la creazione e la visualizzazione di contenuti
  • Endpoint API per uso esterno

Il problema con le architetture monolitiche è che se l'applicazione web vede un aumento della domanda, l'intero sistema deve essere scalato. Inoltre, man mano che la base di codice cresce, apportare modifiche diventa molto più difficile. A lungo termine, questo può creare un debito tecnico. Se una parte della tua base di codice si basa su librerie vecchie o obsolete o se desideri passare a un nuovo framework per alcune funzionalità, i problemi con altre parti della base di codice potrebbero ostacolarti.

Con i microservizi, ogni componente è un servizio autonomo. Il servizio utente è indipendente dal sistema di pagamento, che a sua volta è indipendente dal sistema dei contenuti e così via. I servizi non condividono alcun codice tra loro. Piuttosto, comunicano tra loro tramite API.

Poiché ogni componente è indipendente, è possibile scriverlo in lingue completamente diverse, se lo si desidera. Inoltre, se un componente si guasta, ciò non deve necessariamente causare l'arresto dell'intera applicazione. Altri aspetti dell'applicazione che non dipendono da tale componente possono comunque funzionare normalmente.

Architettura orientata ai servizi (SOA) e architettura a microservizi

Un'architettura orientata ai servizi è un'architettura in cui le applicazioni sono suddivise in moduli. Questi moduli hanno ruoli chiaramente definiti e sono più piccoli delle applicazioni monolitiche, rendendo la SOA simile all'approccio dei microservizi. La differenza fondamentale tra le architetture SOA e microservizi è l'ambito dell'architettura.

I moduli costruiti per SOA sono condivisi e riutilizzati a livello aziendale. Al contrario, i microservizi si basano su moduli progettati per funzionare in modo indipendente. Questo non vuol dire che i componenti scritti per un'architettura di microservizi non possano essere riutilizzati, ma l'approccio è diverso. Ad esempio, i moduli costruiti per un'applicazione SOA possono condividere lo stesso livello di storage e comunicare utilizzando lo stesso Enterprise Storage Bus (ESB). In un ambiente di microservizi, ogni servizio disporrebbe di un'API separata e potrebbe usare il proprio spazio di archiviazione.

Vantaggi dei microservizi

I microservizi presentano diversi vantaggi, soprattutto quando un'applicazione è progettata da zero per l'uso di questo modello.

  • Facilità di sviluppo: Poiché i microservizi sono piccole applicazioni autonome, ognuna di esse può essere sviluppata da un team separato. Ogni microservizio ha uno scopo chiaramente definito, semplificando la scrittura di test. La risoluzione dei problemi relativi ai microservizi è in genere più semplice rispetto alla risoluzione dei problemi di un'applicazione monolitica. Inoltre, è possibile riutilizzare i microservizi esistenti, accelerando ulteriormente lo sviluppo man mano che il progetto cresce.
  • Flessibilità: Gli sviluppatori di applicazioni monolitiche spesso si trovano bloccati in determinate tecnologie o modi di fare le cose a causa della difficoltà di apportare modifiche alla base di codice esistente. Con i microservizi è più facile apportare modifiche, sperimentare nuove tecnologie ed eseguire il refactoring del codice al volo, perché il rischio di conseguenze indesiderate è minore quando si lavora con un servizio indipendente.
  • Scalabilità: adattare un'applicazione monolitica può essere difficile. Non è conveniente eseguire semplicemente l'overprovisioning dell'hardware e questo approccio alla scalabilità non è praticabile per far fronte a picchi improvvisi e inaspettati della domanda. I microservizi offrono più opzioni per la scalabilità delle applicazioni e possono aiutare gli sviluppatori ad aggiungere capacità quando necessario e quindi a chiudere i servizi aggiuntivi quando la domanda diminuisce.
  • Resilienza: se un'applicazione monolitica subisce un errore, l'intero sistema ne risente. Con i microservizi, i problemi sono limitati alla specifica applicazione che ha subito un errore. Ad esempio, il malfunzionamento del server di accesso a un videogioco può impedire ai nuovi utenti di autenticarsi, ma chi è già connesso all'applicazione può continuare a usarla normalmente. Un problema con la galleria fotografica può essere limitato a quel piccolo servizio e non interferire con altre aree di un sito web.
  • Migliore utilizzo delle risorse: la suddivisione di un'applicazione in piccoli servizi chiaramente definiti può offrire miglioramenti in termini di efficienza rispetto all'utilizzo di un'architettura monolitica. Piuttosto che gestire un CMS di grandi dimensioni che richiede ingenti risorse per gestire i contenuti di un sito Web, un'azienda potrebbe utilizzare un CMS headless a microservizi e un front-end leggero e personalizzato per visualizzare i propri contenuti.

Le sfide dei microservizi

La potenza e la flessibilità dei microservizi li rendono una scelta popolare per applicazioni complesse e di grandi dimensioni. Tuttavia, la loro distribuzione presenta alcune sfide.

  • Complessità: sebbene ogni componente di un'applicazione con architettura a microservizi sia semplice, l'applicazione stessa può diventare piuttosto complessa per via dell'alto numero di componenti diversi a cui pensare. La suddivisione di un'applicazione in più parti può introdurre ulteriori aree in cui le cose possono andare storte. Ciò può anche creare un sovraccarico di prestazioni.
  • Coerenza dei dati: quando si utilizza un'architettura a microservizi, possono verificarsi problemi di coerenza dei dati e condizioni contrastanti. Può essere difficile gestire i casi in cui un microservizio legge da un database mentre un altro tenta di aggiornarlo.
  • Comunicazione e individuazione dei servizi: Garantire che tutti i microservizi siano in grado di comunicare in modo efficace tra loro e siano consapevoli di quali servizi sono disponibili e dove può essere una sfida. Questo è un aspetto che dovrebbe essere affrontato fin dall'inizio della fase di progettazione.
  • Test/Debug: In un certo senso, testare i microservizi è più semplice perché ogni componente può essere testato in modo indipendente. Tuttavia, quando si tratta di collegare i componenti, testarli e eseguirne il debug può essere una sfida. L'output imprevisto che stai ottenendo è dovuto a un errore nel componente su cui stai attualmente lavorando o i dati che gli vengono inviati da un servizio diverso non sono quelli che ti aspetti?
  • Monitoraggio e gestione dei servizi: Uno dei vantaggi dell'architettura di microservizi è la possibilità di creare ed eliminare istanze di microservizi su richiesta senza influire su altre aree del programma. La gestione di questo aspetto può richiedere strumenti aggiuntivi, come un software per gestire l'implementazione dei contenitori.

Tecnologie dei microservizi

Esistono molti strumenti e tecnologie utilizzati per gestire le architetture di microservizi. Ecco alcune tecnologie chiave frequenti negli ambienti che utilizzano i microservizi.

Containerizzazione

I contenitori sono una parte fondamentale delle architetture di microservizi. Consentono la rapida implementazione di applicazioni di microservizi in modo prevedibile ed efficiente. Esistono diverse varietà di strumenti di containerizzazione, che spaziano dai tradizionali contenitori Linux LXC all'ormai quasi onnipresente Docker. I container sono versioni pronte all'esecuzione di applicazioni che contengono tutte le librerie e altre informazioni necessarie, consentendo l'implementazione con un clic in quasi tutti gli ambienti.

Orchestrazione

Mentre è possibile gestire manualmente i contenitori su una piccola implementazione, le organizzazioni che eseguono più implementazioni Docker su diversi servizi cloud avranno bisogno di un modo per automatizzare questo processo. Soluzioni come Kubernetes consentono un'automazione su ampia scala. Gli sviluppatori possono usare un linguaggio di serializzazione dei dati leggibile dall'uomo, chiamato YAML, per definire i loro contenitori.

Gateway API

Ogni microservizio comunica con altri microservizi tramite API REST. Quando è presente un numero limitato di servizi noti, far comunicare direttamente questi servizi è abbastanza semplice. Man mano che l'ambiente diventa più complesso, diventa meno efficiente avere servizi che comunicano direttamente tra loro. I gateway API e gli strumenti di gestione semplificano l'integrazione di servizi predefiniti da parte degli sviluppatori. Il gateway riceve le richieste e le trasmette ai sistemi sottostanti. Se è necessario modificare qualcosa sui servizi sottostanti, l'unica cosa che deve essere aggiornata è il gateway. Gli altri servizi possono continuare a passare le richieste al gateway come di consueto.

Registro dei servizi

Un registro dei servizi è un modo efficace per tenere traccia dei microservizi disponibili per l'invio di richieste. Un registro dei servizi è un database di servizi, delle relative istanze e delle relative posizioni. In alcuni modelli, un registro dei servizi può anche essere responsabile della chiamata dei controlli di integrità usando l'API di ogni servizio per confermare che sono attualmente in grado di gestire le richieste. Alcuni sistemi di gestione dei contenitori, come Kubernetes, dispongono di registri dei servizi integrati per facilitare la gestione e il rilevamento dei servizi.

Interruttore automatico

Gli interruttori automatici vengono usati per monitorare l'integrità dei servizi in un'architettura di microservizi. Quando un interruttore automatico è attivo, i microservizi possono comunicare tra loro normalmente; l'interruttore tiene inoltre il conto degli errori. Se il numero di errori rilevati raggiunge una certa soglia entro un determinato periodo di tempo, l'interruttore automatico si attiverà. Se questo numero non viene raggiunto, l'interruttore reimposterà il conteggio a zero e continuerà il monitoraggio. In questo modo è possibile garantire il funzionamento affidabile dei microservizi, tenendo conto di eventuali timeout accettabili o altri errori.

Casi d'uso ed esempi di microservizi

L'architettura di microservizi è utile per qualsiasi ambiente in cui un'applicazione con connessione Web deve essere in grado di evolversi e ridimensionarsi nel tempo. I microservizi sono utilizzati in tutti i settori, dal gaming all'e-commerce, dalla logistica alla finanza.

E-commerce

Il provider di soluzioni di e-commerce Bigcommerce sostiene l'uso dell'architettura a microservizi e delle soluzioni di e-commerce headless per alcuni dei suoi clienti. Cita l'aumento dell'agilità e della flessibilità come alcuni dei vantaggi principali di questa architettura.

Assistenza sanitaria

I microservizi consentono ai fornitori di servizi sanitari di creare applicazioni separate ma liberamente associabili, che possono lavorare insieme e avere accesso solo ai dati di cui hanno bisogno. L'utilizzo di un'architettura a microservizi offre diversi vantaggi rispetto ai tradizionali sistemi ESB. Non essendovi un unico punto di errore, i problemi di un sistema non si ripercuotono su altri sistemi potenzialmente più critici. Inoltre, i test e la sicurezza diventano più gestibili quando i sistemi sono isolati. La massimizzazione di sistemi e disponibilità dei dati in un ambiente sanitario è fondamentale e il moderno approccio a microservizi sta diventando sempre più popolare perché aiuta a raggiungere questi obiettivi.

Banca e Finanza

Molte organizzazioni del settore bancario e finanziario si affidano a sistemi legacy difficili da aggiornare. Anziché tentare di modificare una codebase legacy monolitica, molte organizzazioni usano microservizi che si connettono a tale codebase esistente per fornire funzionalità aggiuntive. Le istituzioni finanziarie più recenti sono in grado di partire da zero, progettando sistemi basati su microservizi e API individuali. Le istituzioni più datate possono mantenere la loro base di codice monolitica, continuando a migliorare l'esperienza utente e a costruire nuove funzionalità che si interfacciano con il codice. In combinazione con sistemi come i sistemi di sicurezza e protezione dei dati per i servizi finanziari di Veeam, le organizzazioni possono essere sicure che i loro sistemi siano solidi e che i dati degli utenti siano protetti.

Trasporti e Logistica

Il settore dei trasporti e della logistica sta guidando l'adozione di molte tecnologie, tra cui le tecnologie dell'Internet of Things, che possono essere utili per il monitoraggio della catena di approvvigionamento. Un importante progetto, NIMBLE, ha adottato un approccio basato su un'architettura di microservizi per l'IoT federato, offrendo un monitoraggio e un'ottimizzazione affidabili e scalabili in tempo reale delle catene di approvvigionamento.

Adottando un approccio allo sviluppo basato sui microservizi, le organizzazioni possono testare nuovi dispositivi e tecnologie in modo rapido e senza interferire con i flussi di lavoro esistenti. Data la natura 24 ore su 24 delle moderne catene di approvvigionamento, questa agilità è una caratteristica incredibilmente utile.

Come iniziare con Veeam

Veeam semplifica la gestione dei backup e la sicurezza dei dati, indipendentemente dall'ambiente in cui sono ospitati i tuoi dati. Sia che utilizzi un'architettura monolitica on-premises, sia che utilizzi principalmente provider SaaS di terze parti, come Salesforce, per gestire le informazioni dei clienti o ospiti delle applicazioni nel cloud, Veeam può aiutarti a proteggere i tuoi dati.

Offriamo soluzioni di backup e ripristino per le piattaforme cloud AWS, Azure, Google e IBM e per le implementazioni Kubernetes, nonché per le più diffuse soluzioni di virtualizzazione. I nostri strumenti sono progettati per inserirsi nella configurazione esistente nel modo più semplice possibile.

Offriamo edizioni community gratuite di molti dei nostri strumenti. Ad esempio, Veeam Kasten è utilizzabile gratuitamente per un massimo di cinque nodi. Ciò offre agli utenti la possibilità di testare il sistema prima di decidere se implementarlo su scala più ampia. Sono disponibili anche versioni di prova a tempo limitato dei nostri prodotti enterprise.

Proteggi la tua organizzazione dalle violazioni e dalla perdita di dati con la Veeam Data Platform.