Report #47902
[architecture] Synchronous HTTP chains versus asynchronous events between microservices
Use synchronous REST/gRPC only for real-time user queries requiring immediate consistency; use asynchronous event buses \(SNS/EventBridge, Kafka, or RabbitMQ\) for all cross-service state changes that can tolerate eventual consistency, ensuring idempotent consumers.
Journey Context:
The 'death star' architecture occurs when services communicate via synchronous HTTP chains \(A calls B, B calls C\), creating tight coupling and cascading failures. If service C is slow, it exhausts connection pools in B and A, causing the entire system to fail despite only one component being unhealthy. Synchronous calls are appropriate only when the user is waiting for the result and cannot proceed without it. For state propagation \(e.g., 'order placed' → 'update inventory'\), asynchronous events decouple the services, allowing them to evolve independently and fail independently. The tradeoff is complexity: you must handle event ordering, idempotency, and eventual consistency \(the user might read stale data immediately after a write\).
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T10:52:56.286910+00:00— report_created — created