Architecture Trade-offs
Almost nothing in architecture is free
System Design rarely comes down to finding a solution with only benefits. Every meaningful improvement is usually paid for with something: money, complexity, latency, additional infrastructure, or constraints elsewhere in the system. This exchange is an architecture trade-off.
The same choice looks different under different requirements
Suppose data is stored in only one storage instance. That is simple and inexpensive, but failure of that node can stop the system. Adding copies can improve resilience, but it also introduces extra cost and questions about keeping data synchronized.
Simpler More resilient
Client → DB Client → DB + Replicas
fewer components more infrastructure
easier to operate harder to synchronize
You cannot say that the second option is always “more correct.” For a small pet project, the first may be reasonable, while for a critical service its risk may already be unacceptable.
A trade-off exists only relative to a goal
To compare options, you need to know the system priorities. If minimal latency matters most, you may accept higher resource usage. If low cost matters more, you may accept less spare capacity. If data loss is unacceptable, storage and recovery will have to become more complex.
That is why the phrase “this architecture is better” almost always needs a continuation: better for which requirements?
Common trade-off axes
- simplicity ↔ flexibility;
- cost ↔ performance headroom;
- low latency ↔ additional consistency and checks;
- fast development ↔ future operational complexity;
- centralization ↔ component independence;
- redundancy ↔ resource usage.
These are not ready-made formulas. They help you notice the cost of a decision and state clearly which property we improve and what we pay for it.
How to explain a chosen solution
A strong explanation usually has three parts: the requirement, the decision, and the cost of that decision.
Requirement: the service must survive the loss of one instance.
Decision: run multiple application instances.
Cost: more infrastructure and more complex operations.
This format is more useful than simply listing technologies. It shows the cause-and-effect relationship and makes it possible to revisit the architecture if the requirements change later.