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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly