Skip to main content

What is System Design?

How to approach system design problems?

  1. Get a good idea of the problem we are solving by classifying all the requirements we need to fulfill.
  2. Defining all the functions that is expected from the system we are designing.
  3. Understand the scale of the system we are going to work on, like database, load balancing, caching, etc.
  4. Defining the data model. Identifying all the aspects of data management like storing user data(userId, name, email, etc.), media data(imageId, date, timestamp, etc.), and many more.
  5. High-level design of the system - block diagram showcasing the workflow of the system.
  6. Improving the performance of the system and discussing the possibilities of bottlenecks.

Some important system design question with solutions

  • Design Pastebin.com (or Bit.ly)

    Solution

  • Design the Twitter timeline and search (or Facebook feed and search)

    Solution

  • Design a web crawler

    Solution

  • Design Mint.com

    Solution

  • Design the data structures for a social network

    Solution

  • Design a key-value store for a search engine

    Solution

  • Design Amazon's sales ranking by category feature

    Solution

  • Design a system that scales to millions of users on AWS

    Solution