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