Microservices rules #5: Deliberative design
This is the second article in the series about microservices rules: what good looks like, which are a set of principles and practices for using microservices effectively. The other articles in the series are:
- Microservices rules #2: Implement fast, automated deployment pipelines
- Microservices rules #10: part 1 - incremental architecture modernization
- Microservices rules #10: part 2 - continuous delivery/deployment
Designing software is all about making decisions. An architecture is created by making a series of design decisions. Each decision solves a particular problem by choosing or creating a solution. The solution modifies the architecture by adding, modifying or deleting architectural elements and the relations between them. The resulting architecture is a composition of all the past design decisions. It’s essential, therefore, to use Microservices rule #5: a deliberative design process.
Miriam-Webster defines ‘deliberation’ as follows:
In other words, deliberative design involves thinking about how to solve a problem and carefully picking a solution.
In this article, I describe the 7 step deliberative design process. But first, let’s look at some unreliable ways to make design decisions.