Bad architecture is a communication problem, not a technical one. It’s rushing in without knowing the domain and its constraints.

Doing IO in the middle of business logic is just bad coding. It’s usually the developer not caring about the architecture (tornado coding or slum coding) or the architecture not existing.