The ability re-use concepts and patterns is not limited to design. As we've seen, we can apply it to architecture as well. By using known and recommended practices in the correct contexts, we can alleviate some of the burden of analysis and design. We can also focus more on the value that the system will provide, rather than the infrastructure needed to support it. Supporting data within a system comes at a price. We can use tools and frameworks, such as object relational mappers, to map the data in our system to a particular database, and back, without being forced to write and support a bunch of vendor-specific code. The burden of knowing whether or not a system needs to be distributed at the onset of a project can be alleviated to a certain extent by making some architectural-related decisions, such as preferring Command Query Separating and to model actions as Commands, and to communicate state change through events.
So, as we can see, applying practices to how we architect and...