"Resillient Microservices without the Chaos" by Christopher Meiklejohn (Strange Loop 2022)

Discover how to build resilient microservices without chaos, as Christopher Meiklejohn shares his development-first approach and introduces new tools like Filibuster, Workload characterization, and more.

Key takeaways
  • When building microservices, it’s crucial to manage failures, even though it’s difficult.
  • Fault tolerance techniques like retries, circuit breakers, and delayed retries can help.
  • Instead of relying on academics to solve problems, Christopher Meiklejohn focused on development-first resilience tools.
  • Microservices require deeper complexity, making it more challenging to develop, deploy, and operate.
  • Communication between components can lead to unclear error handling, making it difficult to distribute applications.
  • Automated fault injection can help identify bugs, but shouldn’t replace manual testing.
  • Development-first resilience involves thinking about failures early in the process and developing systems that can handle errors.
  • Filibuster, a tool developed by Meiklejohn, helps automate fault injection testing and supports integration with existing workflows.
  • Workload characterization is important for understanding the complexity of systems, and APIs that support dynamic reduction can help reduce this complexity.
  • Failure injection can reveal bugs and help developers understand how their systems respond to failures.
  • Microservices testing requires unique approaches, such as replaying error messages to ensure the system handles failures correctly.
  • Service level fault injection testing helps identify issues with specific services and can be used in conjunction with existing testing strategies.
  • Automated instrumentation simplifies the process of instrumenting RPC libraries and other components, making it easier to test systems.
  • Error handling can be difficult due to complex interactions between components, but automated testing can help identify issues.
  • Microservices development requires a focus on resilience, as single points of failure can bring down entire systems.
  • Chaos engineering is a technique used to identify fault tolerance issues in microservices by inducing failures in production-like environments.