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 .
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.
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.
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?
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.
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 .
I'm so happy to hear this, thank you very much for your kind words!
A very interesting read, I’m loving your system design articles
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 !
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.
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.
Thanks so much Ashish and looking forward to a low level design article next. Cheers ! Thank you again !
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?
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.
Superb explanation ! Loved it! Your articles have sparked an interest in me to design systems!
Great to hear this, thank you!
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.
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?
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.
Useful
Good article but I am not able to understand the reason of doing such lengthy estimation.
Thank you.
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 !!!