Condividi tramite


Implementare applicazioni resilienti

Suggerimento

Questo contenuto è un estratto dell'eBook "Microservizi .NET: Architettura per le applicazioni .NET incluse in contenitori", disponibile in .NET Docs o come PDF scaricabile gratuitamente che può essere letto offline.

.NET Microservices Architecture for Containerized .NET Applications eBook cover thumbnail.

Le applicazioni basate su microservizi e cloud devono essere in grado di gestire gli errori parziali che sicuramente si verificheranno. È necessario progettare l'applicazione in modo che sia resiliente a questi errori parziali.

La resilienza è la capacità di recupero da errori che consente un funzionamento continuativo. Non significa evitare gli errori, ma accettare il fatto che si verificheranno e trovare una modalità di gestione degli errori che eviti tempi di inattività o perdita di dati. L'obiettivo della resilienza è riportare l'applicazione in uno stato pienamente operativo dopo un errore.

È piuttosto difficoltoso progettare e distribuire un'applicazione basata su microservizi. Ma è anche necessario mantenere l'applicazione in esecuzione in un ambiente in cui è certo che si verifichi un determinato tipo di errori. Pertanto, l'applicazione deve essere resiliente. Deve essere progettata per gestire errori parziali, ad esempio interruzioni della rete o arresti anomali di nodi o macchine virtuali nel cloud. Anche lo spostamento di microservizi (contenitori) in un nodo diverso all'interno di un cluster può causare brevi errori intermittenti nell'applicazione.

I diversi componenti singoli dell'applicazione devono inoltre incorporare le funzionalità di monitoraggio dell'integrità. Seguendo le indicazioni riportate in questo capitolo, è possibile creare un'applicazione in grado di funzionare senza problemi malgrado tempi di inattività temporanei o le normali interruzioni che si verificano nelle distribuzioni complesse e basate su cloud.

Importante

eShopOnContainer usava la libreria Polly per implementare la resilienza tramite client tipizzati fino alla versione 3.0.0.

A partire dalla versione 3.0.0, la resilienza delle chiamate HTTP viene implementata usando una mesh Linkerd, che gestisce i nuovi tentativi in modo trasparente e configurabile, all'interno di un cluster Kubernetes, senza la necessità di gestire tali problemi nel codice.

La libreria Polly viene ancora usata per aggiungere resilienza alle connessioni di database, specialmente durante l'avvio dei servizi.

Avviso

Tutti gli esempi di codice e le immagini di questa sezione erano validi prima dell'uso di Linkerd e non vengono aggiornati in base al codice effettivo corrente. Quindi hanno senso nel contesto di questa sezione.