
Software Architecture: The Hard Parts

- If your system requires high performance, then you need to pay attention to managing the time-based behavior of elements, their use of shared resources, and the frequency and volume of their interelement communication.
- If modifiability is important, then you need to pay attention to assigning responsibilities to elements and limiting the interaction
Paul Clements • Software Architecture in Practice, 4th Edition
Most commercial organizations face the following challenges when defining the architectures of their products: Focus on technology details rather than business context. Perception of architects as not delivering solutions or adding value. Inability of architectural practices to address the increase in speed of IT delivery and to adapt to modern del
... See morePierre Pureur • Continuous Architecture in Practice: Software Architecture in the Age of Agility and DevOps (Addison-Wesley Signature Series (Vernon))
The research for the State of DevOps Reports from 2013 to 2019 was a cross-population study that spanned over thirty-six thousand respondents over six years. It showed that architecture determined if it was possible for teams to:58 •make large-scale changes to the design of the system without the permission of someone outside the team or depending
... See moreSteven J. Spear • Wiring the Winning Organization: Liberating Our Collective Greatness through Slowification, Simplification, and Amplification
Problem : Tight coupling leads to fragility - a change in one microservice breaks connected services.
Low cohesion results in unclear responsibilities.
Low cohesion results in unclear responsibilities.
- Solution : Apply loose coupling and high cohesion. In a loosely coupled system, each component is independent and changes in one will not affect the others. High cohesion means that each component i