Recently, I picked up Susan J. Fowler’s book, Production-Ready Microservices. It was a quick read and it provided an excellent outline for implementing standards across a microservice ecosystem in large organizations. I would definitely recommend it for software engineers or site reliability engineers (SRE’s) who work with microservices.
Production-Ready Microservices starts with a brief explanation of why large organizations have moved away from monolith to microservices architecture. Microservices are certainly not a fit for every team or product, and Fowler outlines the trade offs for both architectures in a clear and concise manner.
Next, Fowler dives right into the standardization of microservices. The book takes an abstract approach by focusing not on specific frameworks, tools, or code samples but instead by carefully examining the standards that we should be able to enforce across all microservices, regardless of purpose or technology stack. She defines five characteristics that make any individual microservice or microservice ecosystem production-ready.
Fowler says that all production-ready microservices must be:
- Stable and reliable.
- Scalable and performant.
- Fault tolerant and prepared for any catastrophe.
- Properly monitored.
- Documented and understood.
Under each of these five categories, Fowler provides helpful questions to ask to determine readiness. For example, what makes a service stable, scalable, or properly monitored? She answers these questions in depth, which helps you to design and build better microservices yourself.
These best practices were developed while Fowler worked at Uber, a large organization with thousands of microservices. A lot of this information is common sense for operating large scale services. Though seasoned engineers who currently work with microservices might not find many new concepts here, the book still contains gems. Fowler includes several valuable checklists and questions to make building and auditing production readiness a much clearer process.