Breaking up the frontend monolith
Our goal is to create a software architecture that enables change. In Chapter 2, Defining Boundaries and Letting Go, we defined the architecture of a system by dividing it into a set of autonomous subsystems. In the remaining chapters, we dive into the details of decomposing subsystems into autonomous services. But first, we need to address the presentation layer.We need to break up the frontend monolith, like the backend, to eliminate the friction that impedes innovation. We must decompose all the layers of the technical architecture to the same level of granularity. The frontend, the backend, and the database all need to work together as a cohesive unit. Then we can give autonomous teams control over a slice of the full stack so that they can move forward independently.Before we get into the technical details, let's look at how we can functionally decompose the frontend into independent but seamless applications. This will allow us to easily extend...