I hate to break this to you, but your distributed systems are going to experience errors at runtime. External systems you depend on will be down, internal subsystems may be distressed, databases might be overloaded, and any operation that goes over a network is vulnerable to hiccups at runtime. You should also assume that your own system's code will occasionally encounter errors with who knows what unforeseen permutation of inputs or system state.
The reasonable goal we should strive for is a system that's resilient in the face of errors and can take the right error handling actions to prevent the system from getting into an inconsistent state by losing in flight work. Hopefully our systems can do this without requiring human intervention or downtime to fix issues related to system errors.
In this talk, we'll run through different types of runtime errors and match them with useful exception handling policies. We'll also make sure to understand when and where a transactional outbox and inbox makes sense within your system architecture. I'll be using Wolverine as the messaging framework for the samples, but the conceptual approaches should transfer to any other robust messaging tooling.
Jeremy Miller started his career as a “real” engineer but wandered into software because that looked like more fun. Since then, Jeremy has worked in and led software development teams in the computer manufacturing industry, finance, insurance, health care, and banking industries. Lately, Jeremy has been focused on leading software architecture teams and helping mentor other software architects. Having had roles both as an in-house software architect and as a software consultant, Jeremy has a great deal of insight into the challenges that confront companies developing and maintaining enterprise systems over time.
Jeremy is well known for his Open-Source Software tools starting with Structure Map and continuing today to Marten and Wolverine. Jeremy is also a frequent author and technical speaker at software conferences. Jeremy recently helped found JasperFx Software to build a sustainable business around the "Critter Stack" tools.