From clean code to clean architecture
This section is a discussion of how concepts that were emphasized in previous chapters reappear in a slightly different shape when we consider aspects of large systems. There is an interesting resemblance to how concepts that apply to more detailed design, as well as code, also apply to large systems and architectures.
The concepts explored in previous chapters were related to single applications, generally, a project, which might be a single repository (or a few), of a source control version system (Git). This is not to say that those design ideas are only applicable to code, or that they are of no use when thinking of an architecture, for two reasons: the code is the foundation of the architecture, and, if it's not written carefully, the system will fail regardless of how well thought-out the architecture is.
Second, some principles that were covered in previous chapters do not apply only to code but are design ideas instead. The...