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
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
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
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
Last updated
Was this helpful?