Last updated on October 27th, 2024 at 05:46 am
Grokking The System Design Interview: Review & Coupon Code
Review & Coupon Code for Grokking The System Design Interview !
Every full loop interview at all the tech organizations now has at least have one System Design round and thats where ‘Grokking the system design’ comes in handy. For those of you who are on the fence on making the decision if it is worth your time and money go on and read my detailed review of the course.
Long Story Short: It is a great buy for beginners who are new to distributed system design!
Grokking The System Design Interview Discount Coupon Code
If you have already made up your mind here is the 20% discount code/coupon for your purchase. Use “mariogerard10” at the time of check out OR Click to get your 20% discount to the “Grokking the System Design Interview” course.
To start the course has over 3k likes for users and is very popular in general. Over the years the authors have consistently updated the material with new design problems and solutions.
I would really recommend starting with the “Glossary of System Design Basics”. This currently has the below-listed topics:-
- System Design Basics
- Key Characteristics of Distributed Systems
- Load BalancingPreview
- CachingPreview
- Data Partitioning
- Indexes
- Proxies
- Redundancy and Replication
- SQL vs. NoSQL
- CAP Theorem
- Consistent Hashing
- Long-Polling vs WebSockets vs Server-Sent EventsPreview
I will be reviewing each of these sections and also be providing some additional information when needed. I start with the “Glossary of System Design Basics” first as I believe that the user should be reading those BEFORE going over the actual designs. Without a solid understanding of the building blocks, it is going to be hard to understand the designs.
Ch1-System Design Basics
A very short overview of what it takes to design High scale systems. I remember one of my first interviews at a tech company where the interviewer asked me a question to the tune of “Today I have a 100 users if I had 100,000 users tomorrow how would my system architecture be different?”. The answer to that question is what you would learn in the following sections.
Ch2 - Key Characteristics of Distributed Systems
This covers most of the concepts of building a system at scale like Scalability, Reliability, Availability, Efficiency, and Manageability. And goes into good depth on each of the topics. In addition to this I would really recommend reading “Art of Scalability” this would give you a clear picture of why System design and building systems that scale are so critical. This foundation would help you as you progress through the course as it will help in understanding the complexities of WHY each piece is important.
I would also recommend doing the below Youtube videos that are free:-
Four Distributed Systems Architectural Patterns by Tim Berglund
Ch3 - Load Balancing
Load balancing is one of the most critical pieces of building a system at scale. This section has some neat diagrams explaining how load balancers work and benefits and the various types of load balancing are made crystal clear to the user. Interestingly the author also provides some good links to further reading.
Ch4 - Caching
Ch5 - Data Partitioning
Really well written and likely a less familiar topic for many. This is a very common interview question so I am glad that this topic is covered. Here we primarily learn about why one would need to do data partitioning and the how-to partition your data and then move on to the considerations while partitioning your data.
Ch6 - Indexes
Ch8 - Proxies
Ch9 - Redundancy and Replication
This is another topic interviewers look for form candidates. This also is one of those topics that is used to gauge the seniority of the candidates. The information provided here though accurate could have been more elaborate in my opinion. But you should be able to find some good articles on the internet on this topic. I really do not fault the author here as I believe you could probably write a book on this topic alone.
Ch10 - SQL vs. NoSQL
For that coming from an orgs that are primarily using RDMBS this is a good primer. The authors have done a good job giving you a neat overview. They go over the difference between the two and then dive into which type of DB to use and why.
However, since this is one of those hot topics everyone talks about I would really recommend reading No SQL distilled by Martin Fowler. It’s a pretty easy read, you could finish this in a couple of hours.
Ch11 - CAP Theorem
Ch12 - Consistent Hashing
One more of the complex topics covered nicely using a diagram that the user can click through. It goes over the reason why hashing is so important in a distributed caching system.
Ch13 - Long-Polling vs WebSockets vs Server-Sent EventsPreview
This gives the reader an overview of Ajax Polling, HTTP Long-Polling, WebSockets, Server-Sent Events (SSEs), This chapter could have been more detailed into the reasons why these are important.
Overall Review for “Glossary of System Design Basics” in Grokking The System Design Interview
If you are short of time, this is an excellent primer.
I also believe the author has not put this as a starting point of the course because he either expects his readers to already know of these things.
Grokking The System Design Interview: System Design Problems Review
- System Design Interviews: A step by step guide
- Designing a URL Shortening service like TinyURLPreview
- Designing Pastebin
- Designing InstagramPreview
- Designing Dropbox
- Designing Facebook Messenger
- Designing Twitter
- Designing Youtube or Netflix
- Designing Typeahead Suggestion
- Designing an API Rate Limiter
- Designing Twitter Search
- Designing a Web Crawler
- Designing Facebook’s Newsfeed
- Designing Yelp or Nearby Friends
- Designing Uber backend
- Design Ticketmaster
System Design Problems Review
Why do we need x ?
Requirements to keep in mind.
- Functional requirements
- Non-Functional requirements
- Extended requirements.
Design Considerations
Capacity Estimation & Constraints
There are three sub-topics covered under this:-
- Traffic Estimates
- Storage Estimates
- Bandwidth Estimates
APIs
Database Design & Database Schema
High-level Application Design & Algorithms
Detailed Component Design
Purging or DB Cleanup
Data Partitioning and Replication
Depending on the size of your storage how do you partition your data when using a traditional DB. This in some solutions is more detailed and others. The author in some cases talks more about the principles rather than how it would actually impact this solution we are designing.
Cache & Load Balancer
How to use a cache, is the system write-heavy or read-heavy and correspondingly who would you design your application. Some good examples of using CDN here as well.
Security and Permissions
Neat stuff like is this open to all users, does the user need to be authenticated? Is the URL private of public etc. This is a good interview discussion point and it’s nice that the author has covered this topic.
That’s 15 Unique Solutions !!!
The possibility of your interviewer asking you one of these questions is high.
But the point to note here is that you as the reader understand each of the concepts that are used and are able to use them to solve similar types of problems.
Instead of reviewing each of these solutions individually I am going to give you a general overview of what you can expect in this course. Each of the design solutions covers most of the areas.