Percorso 05Lezione 7 / 8

Definisci limiti sicuri per il self-healing

Automatizza azioni note di recupero con autorità, verifica e condizioni di arresto esplicite. Separa il recupero runtime dalle modifiche al software.

Avanzato12 minRevisionato

Pubblicato da Come scriviamo

Verifica cosa hai capitoIl controller ha riavviato un worker due volte. La coda continua a crescere e il database non è raggiungibile. Cosa deve fare la policy?Svolgi l'esercizio
Il controller ha riavviato un worker due volte. La coda continua a crescere e il database non è raggiungibile. Cosa deve fare la policy?

Cosa imparerai

  • Distinguere il self-healing da una correzione permanente del software.
  • Definire una policy di recupero limitata e verifiche indipendenti del successo.
  • Riconoscere quando l'automazione deve fermarsi e attivare l'escalation.

Recupera una condizione nota

Il self-healing rileva automaticamente un guasto definito e tenta un’azione autorizzata di recupero. Riavviare un processo fallito o sostituire un’istanza non sana sono possibili esempi. L’azione deve essere adatta al guasto e al modello di stato del servizio.

Kubernetes può sostituire istanze fallite dei carichi di lavoro e riallineare lo stato dichiarato. Non corregge la logica applicativa difettosa o ogni guasto dello storage. Recupero infrastrutturale e correttezza del software richiedono verifiche diverse. Self-healing di Kubernetes.

Definisci l’obiettivo prima del meccanismo. Ripristinare un’esportazione significa che il lavoro ammesso termina correttamente. Un container in esecuzione è solo una precondizione.

Separa tre tipi di modifica

ModificaEsempioDecisione richiesta
Recupero runtimeSostituire un worker stateless guastoPuò essere autorizzato da una policy di recupero preapprovata
Correzione softwareCorreggere la perdita di memoria che ferma il workerRevisione, test, controlli di rilascio e verifica in produzione
Modifica della policyAumentare la frequenza di riavvio consentita o l’ambito di accessoApprovazione esplicita del responsabile della policy

Un agente può proporre una correzione dopo il recupero. La proposta è una nuova modifica software. Non deve ereditare autorità illimitata dal controller di recupero.

Il controller non deve neppure modificare i propri criteri di successo quando una verifica fallisce. Altrimenti il sistema può dichiarare un miglioramento senza migliorare il servizio.

Scrivi la policy di recupero prima di abilitarla

La policy seguente è fittizia. I numeri illustrano scelte progettuali; non sono valori predefiniti consigliati.

Campo della policyRegola fittizia del worker di esportazione
Condizione di avvioHeartbeat del worker assente per 90 secondi e lavoro presente in coda
PrecondizioniUn altro worker è sano; le verifiche delle dipendenze passano; nessun sospetto di compromissione o guasto dell’integrità
Azione consentitaSostituire un worker usando l’artefatto attualmente approvato
Protezione dello statoI job usano storage persistente e una chiave di idempotenza verificata
LimiteAl massimo due sostituzioni in 15 minuti; mai più di una per volta
PausaAttendere cinque minuti dopo la sostituzione prima di un altro tentativo
SuccessoUn job sintetico termina correttamente e la coda interessata inizia a svuotarsi
Arresto ed escalationUna precondizione fallisce, si raggiunge il limite o il successo non è verificabile

Usa un’identità con privilegi minimi. Registra versione della policy, prove della condizione di avvio, azione, risorsa e risultato. Prevedi un modo indipendente per disabilitare il controller. Definisci il responsabile umano che riceve l’escalation.

Verifica i percorsi di guasto oltre al recupero riuscito

Un nuovo tentativo può ripetere un effetto collaterale. Un worker potrebbe salvare un file e fermarsi prima di confermare il job. Verifica l’idempotenza prima di consentire un’altra esecuzione. Vedi l’esempio di guasto cloud native.

I nuovi tentativi possono anche aggravare il sovraccarico di una dipendenza. Usa tentativi limitati, timeout e backoff adeguato. Evita tentativi sincronizzati tra le istanze. AWS spiega perché backoff e jitter aiutano a ridurre questa amplificazione. Indicazioni sui nuovi tentativi.

Prova la policy fittizia in tre casi. Un solo worker fermo deve recuperare. Un’indisponibilità del database deve impedire sostituzioni ripetute. Un guasto incerto dell’integrità deve fermare l’automazione e richiedere una decisione di risposta.

Controlla anche la telemetria mancante. L’assenza di heartbeat può indicare un worker guasto o un percorso di raccolta guasto. Il controller ha bisogno di prove sufficienti per la sua azione, non di fiducia in una spiegazione AI.

Misura se la policy aiuta

Registra recuperi verificati, tentativi falliti, escalation, lavoro duplicato e durata dell’impatto sugli utenti. Confrontali con il metodo operativo precedente in condizioni simili.

Mantieni il difetto sottostante come lavoro ingegneristico. Riavviare ripetutamente un processo con una perdita di memoria può ridurre l’impatto immediato mentre la perdita continua. Prosegui con il miglioramento automatico per collegare l’osservazione a una correzione duratura.

Svolgi l'esercizio

Progetta una policy di recupero per il worker fittizio di esportazione della lezione. Specifica condizione di avvio, esclusioni, azione consentita, limite di tentativi, pausa tra tentativi, verifica del successo e responsabile dell'escalation. Provala con un'indisponibilità del database e un guasto sconosciuto dell'integrità dei dati.

Scarica la scheda di lavoro (Markdown)
Verifica cosa hai capito ↑

Continua a imparare

Fonti e approfondimenti

Letture correlate di Taiga

← Lezione precedente: Collega la consegna a SOC e SIRT