And because of this, our distributed software that interacts using request/response can be incredibly hard to reason about...
But this is only true if we decompose our software in the right way and use patterns that fit our context...
One way we try to manage complexity, as an industry, is by breaking our software down into independently-deployable services.