Components depend on each other in a layered order. Removing a component exposes what depended on it.
| Layer | Depends On | Breaks If Absent |
|---|---|---|
| Request Layer (DNS, CDN, LB, API GW) | Nothing above it | All traffic; entry point |
| Application Layer (App Services, Task Queue) | Request Layer + Storage Layer | Business logic |
| Communication Layer (Message Queue, Stream Engine) | Application Layer | Async decoupling; removes backpressure |
| Storage Layer (DB, Cache, Search Index, Object Store) | Communication Layer for writes | All persistence |
| Processing Layer (Batch, Scheduler) | Storage Layer | Offline computation; derived data |
| Observability Layer (Metrics, Logs, Traces) | All layers (reads from them) | Visibility; incident response becomes blind |
| Control Layer (AuthN, AuthZ, Config) | All layers (gates them) | Security and feature control |
Cross-layer rules: The Observability Layer must span all other layers — a gap in any layer produces FM11. The Control Layer must gate all entry points — a gap produces FM10.