21 Comments
User's avatar
Ranjeet Nair's avatar

Simply superb is the word for this.Very detailed explanation and all stages of system design beautifully covered in the article .Simply love it .Thanks a lot for sharing this .

Expand full comment
Ashish Pratap Singh's avatar

I'm so happy to hear this, thank you very much for your kind words!

Expand full comment
DB's avatar

Never thought that I would understand the big tech architecture in my 1st read only.

Kudos Ashish 🔥

Expand full comment
Venkatesh Mandapati's avatar

That’s why I like his commitment

Thanks Ashish

Expand full comment
Chinmay Kulkarni's avatar

Best explanation 😁

Expand full comment
Uchechi Ukpa's avatar

A very interesting read, I’m loving your system design articles

Expand full comment
Jay's avatar

Great article Ashish, very detailed.

Is it possible to also include the sequence diagrams for communications between Services or Classes within the system? Like a more granular view.

Just a suggestion !

Article is amazing !

Expand full comment
Ashish Pratap Singh's avatar

Hey, good suggestion.

This article was mostly high-level design.

I think sequence diagram is more low-level, but will try to cover it in a separate article which focuses on low level design.

Expand full comment
jay's avatar

hey ashish could you create a article for high level design for system like yelp.com or uber or ola,because these are related. and loved this article.

Expand full comment
Jay's avatar

Thanks so much Ashish and looking forward to a low level design article next. Cheers ! Thank you again !

Expand full comment
Raul Junco's avatar

Detailed breakdown, Ashish!

I think a cache at the client level will also be beneficial, although it comes with the trade-off of maintaining consistency between the different clients.

Thoughts?

Expand full comment
Ashish Pratap Singh's avatar

Thanks Raul!

I agree that a cache at client level would be helpful specially for offline playback (I have added a line there). But, yeah maintaining consistency would be a bit tricky.

Will try to cover this as part of some other problem.

Expand full comment
Jiten's avatar

Superb explanation ! Loved it! Your articles have sparked an interest in me to design systems!

Expand full comment
Ashish Pratap Singh's avatar

Great to hear this, thank you!

Expand full comment
William's avatar

Where do you create these diagrams? I'm looking for an application to create these diagrams and I can't find any good enough like yours.

Expand full comment
Nitesh Kumar's avatar

Do we really need centralised service like appservers here? Whats the trade of keeping app service as Facade? Will it not increase the integration complexity with the downstream services and the latency due to addition of a new hop? Why client cant directly integrate with the corresponding microservices and Load balancer can do the redirection based on the application context path? We can avoid this service completely?

Expand full comment
Code Beta's avatar

Could've been even better with a code implementation, because after a few scalable systems every system looks exactly the same apart from the initial cost calculations.

Expand full comment
Ali Mohammadnia's avatar

Useful

Expand full comment
Nitin Agrawal's avatar

Good article but I am not able to understand the reason of doing such lengthy estimation.

Expand full comment
Jaf's avatar

Thank you.

Expand full comment
Arpit Verma's avatar

First of all, this is really good break down. 👏

However, i wanted to know , if there is no CDN and server is directly responsible for sending the songs and ads blob files

How will the things work in that cases

Also, if you can provide the protocols will be used in that case, it will be really helpful.

Also, will statelessness of backend server be impacted in case of no CDN ?

Thanks in Advance !!!

Expand full comment