system design

Intel
ndky

Go to company page Intel

ndky
Oct 30, 2019 14 Comments

i have never done system design, because I dont work in a distributed systems environment. all interviews expect you to be able to design systems, and i am finding it difficult to square the circle.

i have read all kinds of blogs and the educative.io material but i still dont get a good feel about the topic. any ideas on how i can do a couple of projects that will really test my theoretical understanding and help me get better at it?

thanks

comments

Want to comment? LOG IN or SIGN UP
TOP 14 Comments
  • It's not too tough. Only a few topics.

    Read about following topics and visit the pages of some open source software out there to understand motivation, use cases and how they implement some of the distributed systems concepts.

    Caching
    NoSQL DBs - Object store, Column oriented, Document store, Key-Value store
    Partitioning/Sharding
    Load Balancing
    CAP theorem
    Replication
    Messaging Queues
    Servers vs Workers
    Time series DB
    Geolocation

    For most system design problems, you can put in a Load balancer, Application servers, messaging queues, Worker processes, caching DB and main DB. Draw a few blocks representing each. To get fancier, identify major services of your app. eg. For Aibnb, it'll be a property owners service, listings service, reservations service, billing service etc. Draw blocks for each service. Go from there.
    Oct 30, 2019 1
  • Nutanix
    numero

    Go to company page Nutanix

    numero
    You cant understand system design just by going over educative material. There are two parts of design : concepts and actual design. Understand concepts of caching indexing searching partitioning data pipeline etc. for this use your educative material or Wikipedia or designing data intensive app. Now coming to design read engineering blogs of linkedin, uber, airbnb and see how they have solved problems they faced. You would understand for what optimization what design is good. Design is done for design goals so get them correct first wheather it is correctness performance latency etc and then all choices should align with design goals
    Oct 30, 2019 1
  • NVIDIA
    updown77

    Go to company page NVIDIA

    updown77
    I feel you. I was in the same position as you when I started. I have been getting better by giving interviews at companies I am not too keen to join. And also practicing with friends on an actual white board. But I am following this and open to other recommendations here as well.
    Oct 30, 2019 0
  • VMware
    lftl00

    Go to company page VMware

    lftl00
    First and foremost you need a solid understanding of distributed systems. Find a course online or read lots of papers.
    Oct 30, 2019 4
  • Bose
    haITried

    Go to company page Bose

    PRE
    Salesforce
    haITried
    What do you not understand? Any areas in particular? If you cant design a whole end to end architecture you just need to spend more time and practice stuff
    Oct 30, 2019 3
    • New
      xnjo70

      New

      xnjo70
      It is not about right choices. You are supposed to think about trade offs and ask details about the system in order to navigate them.
      Oct 30, 2019
    • Bose, let's say you are asked to design a log aggregator system like Splunk. What kind of database would you choose and why?
      Oct 30, 2019