Fundamentals of Software Architecture: An Engineering Approach
Neal Ford
Rüdiger Striemer
Will Larson