2. Agenda
• Se qualcosa va storto?
• Monitoraggio asincrono di processi asincroni…
• Monitorare se stessi
3. Learn to build better systems
from Udi Dahan
Advanced Distributed Systems Design
2 days (out of 5) for FREE
Sign up here: http://go.particular.net/COPItaly
Access code: MPNGNC
Expiration date: 25/5/2015
5. Gestire errori asincroni non è semplice
• Quando un sistema è guidato da messaggi non possiamo perdere
nulla:
• Perdere un messaggio significa corruzione dei dati;
• Esistono due principali tipologie di fallimento:
• A livello di messaggio;
• A livello di endpoint;
• ServicePulse è il tool di amministrazione per Ops / DevOps;
6. Errori a livello di messaggio
• Ci possiamo trovare di fronte a 3 tipologie:
• Bug: non ha senso riprovare finché non è fissato;
• Inefficienze temporanee: riprovare può essere molto utile;
• Errori di business: in teoria non ha nessun senso riprovare;
• Se un messaggio fallisce:
• -> First level retries;
• -> Second Level retries;
• -> coda di errore;
7. Errori a livello di endpoint
• Ci possiamo trovare di fronte a 2 tipologie :
• L’intero endpoint: il processo che ci ospita crasha o non parte proprio;
• Errori in sistemi da cui dipendiamo: il processo teoricamente va ma non è in
grado di lavorare;
9. Recap
• ServicePulse è lo strumento di monitoraggio per l’intero sistema;
• Possiamo introdurre i custom checks per verificare lo stato delle
dipendenze;
11. Auditing
• In un sistema composto da tanti attori è molto facile perdere il
controllo;
• NServiceBus ha attivo l’auditing attraverso le code di “Audit”;
• Una coda di audit è semplicemente una coda;
• ServiceInsight è lo strumento DevOps per il debug live di un sistema;
13. Recap
• ServiceInsight è uno strumento pensato per il mondo Dev / DevOps:
• Ma anche un omino di business capisce cosa sta succedendo;
• Si può connettere a qualsiasi ambiente presidiato da ServiceControl;
16. Gli eventi di ServiceControl
• Ogni volta che lo stato di qualcosa cambia un evento viene
pubblicato;
• Chiunque si può sottoscrivere a:
• MessageFailed
• HeartbeatStopped
• HeartbeatRestored
• CustomCheckSucceeded
• CustomCheckFailed
• Il concetto è “nessuna nuova buona nuova” :-)
18. Recap
• Il sistema stesso può reagire a cambiamenti e/o errori;
• Dato che gli eventi di ServiceControl messaggi standard di
NServiseBus:
• Il monitoraggio è affidabile;
• Il monitoraggio, come qualsiasi altro endpoint, può essere scalato
orizzontalmente;