Company
Date Published
Author
Brian Kelley
Word count
1509
Language
English
Hacker News points
None

Summary

The concept of building resilient microservices is crucial in today's software architecture, as it creates a path to Continuous Deployment in cloud-native environments, increasing business velocity and flexibility. However, this speed can lead to engineers focusing too much on features and forgetting about potential failures in their highly distributed system. The "Fallacies of Distributed Computing" by L Peter Deutsch in 1994 highlights concerns such as the reliability of the network, latency being zero, bandwidth being infinite, and topology not changing, which are often overlooked by developers. Middleware systems have historically hidden these issues, making resilience less obvious for engineers to consider when writing code. To build resilient microservices, engineers should focus on defensive programming, testing for latency and timeouts, using client-side load balancers, and employing discovery and routing tools to handle topology changes. Additionally, having a unified view of the system through monitoring tools and building operational controls can help manage the chaos that arises from a large team of administrators playing multiple roles in production. By incorporating these strategies into development practices, engineers can build more resilient microservices while increasing their development velocity.