Microservices in Production
Standard Principles and Requirements
By Susan Fowler
Released: October 2016
When engineering organizations adopt microservice architecture, and split their large monolithic applications into hundreds (or thousands) of microservices, one of the biggest challenges they face is the lack of architectural and organizational standardization across their microservice ecosystems.
In this report, author Susan Fowler looks at lessons learned from driving a production-readiness initiative across Uber’s more than one thousand microservices. You’ll explore eight production-readiness requirements that she and her fellow SREs at Uber adopted after countless hours of research inside and outside the company—requirements that apply to every microservice while providing real, quantifiable results: stability, reliability, scalability, fault-tolerance, catastrophe-preparedness, performance, monitoring, and documentation.
This report explains why each of these requirements was specifically chosen.
Providing each microservice team with a set of requirements relevant to their service, and their service alone, simply isn’t scalable given that each microservice is a very small piece of an incredibly large ecosystem. And each standard alone isn’t enough to ensure availability, but together they are. You’ll find out how.
This report is an excerpt of Fowler’s forthcoming book, Production-Ready Microservices, in which she shares standards-based strategies for bringing microservices to a production-ready state.
Susan Fowler is a Site Reliability Engineer at Uber Technologies, where she splits her time between running a production-readiness initiative across all Uber microservices and embedding within business-critical teams to bring their services to a production-ready state. After studying particle physics at Penn, she worked on application platforms and infrastructure at several small startups before joining Uber.