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