In the quest for simplicity and maintainability, sometimes we need to add components. It seems counter intuitive, perhaps, but sometimes it’s true.
As an example, I once came across a project which had multiple queries, each of which contained over 40 lines of SQL code. I don’t know about you, but 40 lines of code for a single query smacks of being overly complex. The query was too long for the database to optimize and far too long for humans to maintain, let alone understand.
In this case, to “simplify”, the queries were perfect candidates for database views and stored procedures. Thus, by adding components to the architecture, we’ve actually made it simpler and easier to maintain.