Source: educative.io
- Always get clarification on the scope of the design
- Clarify what is and is not needed
- If there is a user-facing component, clarify what the user can / cannot do
- Confirm what APIs will be needed
- Confirm how widely the application will have to scale
- This will help when making choices about storage, partitioning, load balancing and caching
- Design your tables and how they interact together
- This will help when choosing the DB you will need
- Dig deep into key components
- The conversation should guide where you should focus and dig deep
- We want to have multiple options, and we want to know the pros and cons / tradeoffs for our choices
- Determine points of failure
- Determine backup plans for server outages
- Determine how you would mitigate system failure