marp | theme | class | paginate | style | backgroundColor | color |
---|---|---|---|---|---|---|
true |
default |
invert |
true |
img[alt~="center"] {
display: block;
margin: 0 auto;
}
a {
color: red;
}
|
The 8 fallacies should serve as a warning for architects and designers of distributed systems.
Believing these statements are true results in troubles and pains for the system and its creators further down the line.
We should expect and prepare for the exact opposite of these statements if we want to have a dependable distributed system.
Problem:
- Calls over a network will fail
Solutions:
- Fault tolerant infrastructure
- Automatic retries
- Idempotency and Determinism
Problem:
- Calls over a network are not instant
Solutions:
- Bring back all the data you might need
- Move the data closer to the clients
Problem:
- Bandwidth is limited
Solutions:
- Network traffic control
- Lightweight data formats
Problem:
- The network is insecure
Solutions:
- Defense in Depth
- Security mindset
- Threat modelling
Problem:
- The topology does change constantly
Solutions:
- Abstract the physical structure of the network
- Cattle, not pets
- Test (Chaos Engineering)
Problem:
- There is no one person that knows everything
Solutions:
- Embrace DevOps
- Centralized Logging & Monitoring
Problem:
- Transport cost is not zero
Solutions:
- Efficiency
Problem:
- The network is heterogenous
Solutions:
- Choose standard formats