Automation and Scalability Flashcards
1
Q
Designing for scalability
A
Resource usage should increase linearly.
Design for 10x growth in data, users, traffic.
needs to be available (resilient to failure, recoverability from failure, graceful degradation)
2
Q
How to achieve scalability and availability
A
- Automate as much as possible to save time and prevent human error
- Asynchrony as much as possible/background jobs. Avoid client-side transactions as much as possible. Helps with latency and helps avoid peak load time (cost). Do offline batch processes where appropriate (generate recommendations, import data, etc.)
- Assume everything fails
- Partition everything. Split every problem into manageable chunks.
- Ability to learn/improve over time with minimal human effort
- Rollback: all changes must be undoable!
- Real-time failure detection