Design failures
It's one thing to scale down by fixing our code as it stands today. For example, by taking features out, or by modifying existing components to accommodate newly planned features. But that'll only get us so far into the future. Design ideas that seemed like a good idea two years ago were for the features we were thinking about two years ago, some of which may no longer be around today.
To make a lasting impact on our architecture, we have to repair broken patterns. They still work in our product because we make them work, even though they may not be the best tools for the job. Figuring out the right design isn't a one time event, it happens as our software changes, and as our scaling influences command.
In this section we'll look at a few ways we might address some flaws in our design. Perhaps there're a lot of moving parts we don't need. Perhaps we're processing our API data inefficiently, due to the complexity of our component communication model. Or maybe the structure of...