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.
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:
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.