Resilienza cloud nativa

Suggerimento

Questo contenuto è un estratto dell'eBook, Progettazione di applicazioni .NET native del cloud per Azure, disponibile in .NET Docs o come PDF scaricabile gratuitamente che può essere letto offline.

Cloud Native .NET apps for Azure eBook cover thumbnail.

La resilienza è la capacità del sistema di reagire agli errori e di rimanere funzionante. Non si tratta di evitare errori, ma di accettare gli errori e costruire i servizi nativi del cloud per rispondere. Si vuole tornare a uno stato completamente funzionante il più rapidamente possibile.

A differenza delle applicazioni monolitiche tradizionali, in cui tutti gli elementi vengono eseguiti insieme in un singolo processo, i sistemi nativi del cloud adottano un'architettura distribuita, come illustrato nella figura 6-1:

Distributed cloud-native environment

Figura 6-1. Ambiente nativo del cloud distribuito

Nella figura precedente ogni microservizio e servizio di backup basato sul cloud viene eseguito in un processo separato, attraverso l'infrastruttura server, comunicando tramite chiamate basate sulla rete.

Operando in questo ambiente, un servizio deve essere sensibile a molte problematiche diverse:

  • Latenza di rete imprevista: il tempo per cui una richiesta di servizio deve recarsi al ricevitore e tornare indietro.

  • Errori temporanei: errori di connettività di rete di breve durata.

  • Blocco da un'operazione sincrona a esecuzione prolungata.

  • Processo host che si è arrestato in modo anomalo e che viene riavviato o spostato.

  • Un microservizio di overload che non può rispondere per un breve periodo di tempo.

  • Operazione dell'agente di orchestrazione in anteprima, ad esempio un aggiornamento in sequenza o lo spostamento di un servizio da un nodo a un altro.

  • Errori hardware.

Le piattaforme cloud possono rilevare e mitigare molti di questi problemi di infrastruttura. Può riavviare, aumentare il numero di istanze e anche ridistribuire il servizio in un nodo diverso. Tuttavia, per sfruttare al meglio questa protezione predefinita, è necessario progettare i servizi per reagire e prosperare in questo ambiente dinamico.

Nelle sezioni seguenti verranno esaminate le tecniche difensive che il servizio e le risorse cloud gestite possono sfruttare per ridurre al minimo i tempi di inattività e le interruzioni.