SA-201a · Module 2
The Trade-off Framework
4 min read
A trade-off framework is a structured approach to making architecture decisions that names every option, every cost, every benefit, and every risk — before the decision is made. The framework does not make the decision for you. It makes the decision defensible. When someone in a design review asks "why did you choose event-driven over request-response?" the answer is not "because it is better." The answer is a documented analysis with specific trade-offs evaluated against specific requirements.
- Step 1: Define the Decision State the architectural decision clearly. "We need to choose the communication pattern between the order service and the inventory service." Scope the decision precisely. A decision that is too broad ("what should our architecture be?") cannot be analyzed. A decision that is too narrow ("should we use HTTP or gRPC?") misses the context.
- Step 2: Identify Options List at least three viable approaches. Synchronous request-response. Asynchronous messaging. Event-driven with eventual consistency. If you can only identify one option, you have not explored the space. If you identify more than five, you need to narrow the requirements.
- Step 3: Evaluate Against Criteria Define the evaluation criteria from the business and technical requirements: latency tolerance, consistency requirements, failure handling, team expertise, operational complexity. Score each option against each criterion. Use specific evidence, not general impressions. "Event-driven adds 200ms of latency from queue processing" is an evaluation. "Event-driven is slower" is not.
- Step 4: Assess Reversibility For each option, determine how difficult it would be to change course after implementation. Synchronous-to-asynchronous is a moderate refactor. Monolith-to-microservices is a major rearchitecture. Irreversible decisions deserve proportionally more analysis time. Easily reversible decisions can tolerate faster commitment.
- Step 5: Recommend with Rationale State the recommendation, the criteria it satisfies, the trade-offs it accepts, and the conditions under which the decision should be revisited. "We recommend asynchronous messaging because it satisfies the 99.9% availability requirement while accepting eventual consistency with a 2-second propagation delay. If the consistency requirement changes to strong consistency, this decision should be revisited."