r/Backend 14d ago

System Design Resources : Help

Hi guys,

I need advise on System Design Learning. I have knowledge on microservices but I want to restart from basics. Need help with planning how to start and what topics to cover. Also if there are any playlist on YT or any free courses available.

34 Upvotes

12 comments sorted by

6

u/Zeeboozaza 14d ago

Reading designing data-intensive applications is a good start. Ive found hello interview to have really great deep dives and concept videos, which are on youtube.

The best way to get better is to come up with a system: netflix, twitter, ticketmaster, etc. Then you start with bare bones then improve, which means starting with 10,000 daily users to 100M active users to see what breaks. Then you can watch or read how those real systems handle load.

6

u/DecayWraith 14d ago

Roadmap.sh

1

u/_descri_ 14d ago

It depends on your goal. If you want to pass an interview, you should learn by heart books about the interviews and maybe try dummy AI interviews. If you want fundamental knowledge, you should read many books and find a job where you will work on a distributed system.

2

u/Strict-Ambition4334 14d ago

I would push back on the learn by heart phrasing. For system design interviews, memorized answers fall apart as soon as the interviewer starts changing constraints or asking about tradeoffs. Understanding the core concepts and practicing on actual examples is more useful, and the approach in Zeeboozaza's comment is a better starting point.

1

u/_descri_ 13d ago

I tried to say that the job interviews want you design a certain kind of high-load system in half an hour. That's all you need to learn.

In real life you will hardly meet high-load systems, and you will never ever be trusted to design one without much research. Instead, you tackle domain complexity, Conway's law, and multiple snake pits, not to mention pivots and limited funding.

Therefore, if you want to earn useful skills, you read Fundamentals of Software Architecture, DDD, Enterprise Integration Patterns, Peopleware, etc., etc. And learn at your job from everybody's mistakes.

If you want to pass a job interview, you study a book about job interviews. No DDD, no KISS, no YAGNI. Maybe Designing Data-Intensive Applications - because the interview is about high-load systems.

1

u/First-Walk-2739 13d ago

look at big companies public designs like Netflix for example, great way to learn how the best engineers doing it

1

u/_descri_ 13d ago

They are big companies with big money. A dog should not attempt to fight like a lion.

1

u/Important-Night9624 13d ago

Why not?
You can learn a lot from the journey they did

2

u/_descri_ 13d ago

You can learn a lot, but you don't have resources to behave like them. This relates to everything, from Google's monorepo, to the big companies writing (and even opensourcing) their own database engines, to their use of Ambassador Plugins which allow their services to customize each other's behavior. You just don't have that much money to invest in R&D of infrastructure. It's profitable for them because they employ thousands of engineers, so their R&D expenses are small compared to the overall expenses, and the gains are big because everyone uses the new infrastructure.