Conclusions

Let's sum up what we’ve learned in this course.

Before we conclude, we’d like to congratulate you for completing such a challenging course!

In this course, we learned system design activity from the lens of basic building blocks—the fundamental subsystems that combine to make a bigger system. Doing so enabled us to focus on the specific business use cases instead of repeating the recurring concepts.

We carefully selected our design problems from many different domains, and we've made an explicit effort to incorporate some unique aspects or issues of system design activity in each of them.

Unique Aspects of Each Design Problem

Design Problem Unique Aspect of Design
YouTube Building custom data stores like Vitess and BigTable to meet scalability needs
Quora Vertical sharding of MySQL database to meet the scalability requirements
Google Maps The use of segmentation of a map to meet scalability needs and achieve high performance
Yelp Usage of Quadtrees for speedy access to spatial data
Uber Improved payment service to ensure fraud detection, and matching the driver and rider on maps
Twitter The use of client-side load balancers for multiple services that had thousands of instances in order to reduce latency
Newsfeed A recommendation system to ensure ranking and feed suggestions
Instagram A perfect example of how different building blocks combine to build a scalable and performant system
TinyURL Encoding IDs in the base-58 system for generating unique short URLs
Web crawler Detection, identification, and resolution of Web crawler traps
WhatsApp Message management for offline users
Typeahead The usage of an efficient trie data structure to provide suggestions
Google Docs Concurrency management for simultaneous writes, using techniques like operational transformation (OT) and Conflict-free Replicated Data Type (CRDT)

At this point, we’ve built our system design toolbox, and we can now pick the right tools for the job at hand. We hope that this course has helped you gain enough knowledge to design new problems and solutions using our building blocks. Let’s put our system design knowledge to work and build great systems!

Finally, we would like to thank you for taking the time to complete this course! We hope that it was a great experience for you. Please feel free to drop us an email or leave a comment on our community forum about any suggestions that you may have.

— Team Educative

results matching ""

    No results matching ""