Chapter 2: Defining Boundaries and Letting Go
In Chapter 1, Architecting for Innovation, we learned that the role of architecture is to enable change so that autonomous teams can confidently and continuously deliver business value. The key concept here is autonomy, but we need more than just autonomous teams. We need an architecture that promotes autonomy. We ultimately accomplish this by creating autonomous services with fortified boundaries. But first, we need to define the architectural boundaries of the subsystems within our system. Then we need to do the hardest thing of all, let go and trust the autonomous teams to deliver within their boundaries.
In this chapter, we're going to cover the following main topics:
- Building on SOLID principles
- Thinking about events first
- Dividing a system into autonomous subsystems
- Decomposing a subsystem into autonomous services
- Dissecting an autonomous service
- Governing without impeding