Fundamental Software Architectural Patterns
tl;dr: "Patterns are essentially reusable solutions to common problems. When faced with a problem it is reasonable to consider a catalog of patterns in order to find suitable existing solutions before designing something entirely new. Then, it will be a matter of adapting these patterns to the scope of our reality." The author discusses client server, pipe and filter, SOA patterns, and more.