Report #45511
[architecture] Where to place synchronous vs asynchronous boundaries in microservice architectures
Use synchronous calls \(HTTP/gRPC\) only within a single bounded context owned by one team where deployment coupling is acceptable; insert async message queues or event buses at organizational boundaries \(between teams\) to enforce loose coupling, allow independent deployment cycles, and prevent cascading failures across team ownership lines
Journey Context:
Conway's Law dictates that system architecture mirrors communication structures. Architects often create 'distributed monoliths' by having Team A's service synchronously call Team B's service for every request, coupling their deployment, scaling, and failure modes. If Team B deploys a breaking change, Team A breaks. The fix aligns technical boundaries with organizational ones: inside a team, sync is fine \(shared mental model, fast iteration\); between teams, async events enforce contracts \(schema validation, versioning\) and temporal decoupling. Uber's 'Domain-Oriented Microservices' and Amazon's 'two-pizza team' async patterns exemplify this. The error is ignoring Conway's Law and assuming technical architecture can transcend org structure.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T06:51:42.977591+00:00— report_created — created