The 12 Goals of Microservices
In a previous post, we suggested that microservices are essentially implementation components that communicate with each other using network protocols. Understanding what they are is helpful, but, to some extent, it also misses the point. More important is what microservices enable us to do.
Here are twelve goals that we are trying to achieve with microservices:
- Independent deployment of components
- Independent scaling of components
- Independent implementation stacks for each component
- Easy self-serve deployments of components
- Repeatable deployments of components (external configuration management)
- Deployments without service interruptions
- Protection of system availability from individual Instance failure
- Automatic replacement of component instances when they fail (self-healing)
- Easy scaling of components by adjusting a simple parameter value
- Canary testing
- "Red/black" or "blue/green" deployments
- Instant reversal of new revision deployments
Breaking your application into microservices does not by itself deliver these benefits. Several specialized run-time and tool environments—including Mesos/Marathon, Kubernetes, and Netflix OSS—have emerged to manage microservices.
Numerous other teams have rolled their own. Most of the value lies not in microservices themselves, but in these supporting runtime technologies and tools—they are what deliver on the 12 characteristics. If you’re spending significant time worrying about the difference between a service and a microservice, or the relationship between microservices and SOA, you are looking in the light, but under the wrong lamppost.
The microservice runtime environments mentioned above use a combination of patterns and technologies to deliver the 12 characteristics. Although there are differences between them, their fundamental approaches have much in common. In that commonality, you’ll find a significant new architectural style for deploying and managing larger systems. It is this architectural style that makes microservices interesting, and merits the introduction of this industry term.
Why are microservices not just SOA done right? Join the conversation on this topic on the Apigee Community.
Image: Flickr Creative Commons/Terence Lim