Last updated on April 4th, 2024 at 07:00 am

Grokking The System Design Interview: Review & Coupon Code

Review & Coupon Code for Grokking The System Design Interview !

The “Grokking The System Design Interview” course on Educative has become the cornerstone of tech interview preparations for anyone looking to join a tech organization like Facebook, Amazon, Netflix, Google. For the last three years, all roles, be it a Software Developer (SDE), Software Development Manager (SDM), Product Managers (PM) or Technical Program Managers (TPM) have been using the Grokking The System Design Interview course as an integral part of their prep they are doing before facing an interview at any of the ‘FANG’ organizations. 

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

Grokking The System Design Interview: “Glossary of System Design Basics” Review

 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:- 

  1. System Design Basics
  2. Key Characteristics of Distributed Systems
  3. Load BalancingPreview
  4. CachingPreview
  5. Data Partitioning
  6. Indexes
  7. Proxies
  8. Redundancy and Replication
  9. SQL vs. NoSQL
  10. CAP Theorem
  11. Consistent Hashing
  12. 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

System Design Basics: Horizontal vs. Vertical Scaling

Lecture 9 Scalability Harvard Web Development David Malan

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

Goes into the importance of caching the types of caches and the eviction policies. Additional good links to further reading

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

Give a general overview of the importance of indexing and how it increases the application performance.

Ch8 - Proxies

Talks about the importance of proxies and why it used along with the benefits of using 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

Yes, another significant pillar question asked very often during interviews. Decent overview provided here.

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

In my opinion, it’s a great overview if you are new to system design and have not worked on architecting distributed systems. You would also need to do further reading or watch more youtube videos to get yourself a solid understanding of these topics. 

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

At the time of this review, the authors have listed detailed solutions for:-

  1. System Design Interviews: A step by step guide
  2. Designing a URL Shortening service like TinyURLPreview
  3. Designing Pastebin
  4. Designing InstagramPreview
  5. Designing Dropbox
  6. Designing Facebook Messenger
  7. Designing Twitter
  8. Designing Youtube or Netflix
  9. Designing Typeahead Suggestion
  10. Designing an API Rate Limiter
  11. Designing Twitter Search
  12. Designing a Web Crawler
  13. Designing Facebook’s Newsfeed
  14. Designing Yelp or Nearby Friends
  15. Designing Uber backend
  16. Design Ticketmaster 

System Design Problems Review 

Why do we need x ?

i.e what is the fundamental purpose of this system. What are its use cases? 

Requirements to keep in mind.

  1. Functional requirements
  2. Non-Functional requirements
  3. Extended requirements.

Design Considerations

While designing this system what are the limitations we are imposing for the purpose of this discussion.

Capacity Estimation & Constraints

This section goes over all the sizing requirements on how many VMs you would need as the system scales. This section is very interesting, it gives you an idea of how you would quickly do a back of the napkin estimates on the amount of infrastructure you would need to have. But with most teams working on the cloud now with elastic scaling, I personally am not sure how relevant this section is. Nevertheless, it’s something good to know and does depend on if your interviewer would want to quiz you on this. 

There are three sub-topics covered under this:-

  1. Traffic Estimates 
  2. Storage Estimates
  3. Bandwidth Estimates

APIs

This section in most of the design solutions goes over the various CRUD operations that the system in the discussion would be performing. The great thing is once you understand the patters of these designs you should be able to do the same for any system using the same fundamental principles.

Database Design & Database Schema

This kinda varies from design to design but in most solutions, it postulates what type of DB one would use, RDBMS or NoSQL and then goes into the schema and the various tables that the DB would be using. One word of caution here would be is to remember that these are suggestions from the author.

High-level Application Design & Algorithms

Here we have a pictographic representation of what the block diagram of the application would look like. In most cases, this is what you would be starting with when once you have clarified your use cases during an interview. 

Detailed Component Design

This is pretty much the main piece the authors focus on. In most of the solutions provided the authors go into great detail on how each component has been designed and the reasoning behind it.

Purging or DB Cleanup

We have an overview of the good interview follow up questions like “Should entries stick around forever or should they be purged?” and “If a user-specified expiration time is reached, what should happen to the x or y?”, How long would you need to store this information etc.

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. 


Overall “Grokking The System Design Interview” provides a great primer for individuals to learn the core concepts of system design

I would caution the readers not to simply read through this but practice each of these designs on a whiteboard once you have understood them. Once you have done that the next thing to do would be to try out some design questions that are similar 🙂 

Mario Gerard