System Design 24 principles
✅ If you need to scale an individual component, stick with Vertical Scaling first. Then, look at Horizontal Scaling when needed
✅ To deal with traffic spikes, evaluate the use of Autoscaling for Dynamic Resource Allocation
✅ If the system requires High Availability with Performance, consider using a Load Balancer
✅ If you’re building a read-heavy system, it’s a good idea to use a Cache
✅ Listen to the system requirements properly and note them down if needed
✅ To reduce the latency of static assets, consider using a CDN
✅ If you want to improve the database query performance, focus on the right indexes
✅ To scale the read requests to your database, consider Database Replication
✅ To scale write requests, consider Database Sharding
✅ Clarify your assumptions before jumping into the solution
✅ For global distribution of data, use a CDN
✅ If you want to store complex data such as videos, images and files, go for an Object Storage
✅ To manage the load on the server and prevent denial-of-service attacks, use Rate Limiting
✅ In order to remove a Single Point of Failure, implement Redundancy and Isolation
✅ Clarify about the Non-Functional Requirements as well and take them into account
✅ To improve the Fault Tolerance and Durability of your data, consider Data Replication techniques
✅ If the system needs to execute long-running tasks, use Async Processing and Background Processes
✅ To build a loosely coupled system, consider the use of Event-Driven Architecture
✅ If the system needs to store unstructured data, consider NoSQL databases
✅ Keep getting feedback during the discussion rather than waiting till the end
✅ To deal with large amounts of data flowing through the network, use Compression and Pagination techniques
✅ For automated builds and deployments, consider implementing CI/CD pipelines
✅ If you want to achieve independent deployments of various parts of the system, consider microservices architecture
✅ Establish good eye contact with the interviewer and answer the questions confidently.
Above all else, remember that System Design questions don't have perfect answers.
They are meant to test your analytical skills and ability to consider trade-offs.
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))