Fundamentals of Software Architecture: An Engineering Approach
Neal Ford
John Ousterhout
Rüdiger Striemer
Robert C. Martin