📬 This Week In Product #2

Simran Pandey
This Week in Product
4 min readJul 12, 2020

Software System Design and Architecture

Hi There!

I spent the last few weeks educating myself on building scalable software products, well partly because in college I did read about these concepts but could never relate to their real-life usability (sounds about familiar right?)

This newsletter presents a one week plan requiring an hours time daily and is broadly divided into 5 steps (round-robin):

-> Familiarize -> Deep Dive -> Internalize -> Solidify -> Repeat->

📄 Step 1: Familiarize

What is Scalability? and Why Should I Care About It?

I suggest starting with these two articles as they serve as an introduction to Scalability and it’s core principles:

  1. Think you know what scalability is?
  2. Scalability Principles

▶️ Step 2: Deep Dive To Get Your Basics Right!

This CS75 Scalability lecture by Prof. David J Malan is top-notch and I cannot recommend this enough. He briefly explains all the key scalability concepts by giving interesting analogies. If you have time, then I would recommend watching his other lecture videos too.

Now that’s one long lecture but on the plus side this will have you equipped with concepts like types of scaling, database replication, caching, partitioning, data centers, security, and much more.

Okay! So now that you are somewhat familiar on the topic, it’s time to learn how these are actually applied in real life and the next case studies section will help you with exactly this.

💡 Step 3: Internalize with Case Studies

What better way to understand the real-world software architectures than to hear it from the makers itself, right? Personally, I have watched tons of videos on Scalability but these three stand out from the lot for their concise narrative and lucid explanation.

Case 1: Scaling Dropbox

Dropbox’s core service in itself is a hard problem — having more writes than reads i.e. millions of users trying to sync their data at any point plus Dropbox having to ensure that all this is fast, consistent, and reliable at the same time. In this video, Kevin Modzelewski, Server Team Lead, talks about how they scaled Dropbox over time.

Case 2: Scaling Instagram Infrastructure

This is my favorite talk so far! In the video, Lisa Guo gives an overview of Instagram’s infrastructure, its history, multi-data center support, scaling, performance monitoring, diagnosis, and much more. She explains Instagram’s architecture expansion journey like a story full of interesting anecdotes. You would love this one! :)

Case 3: Scaling Pinterest

In this talk, Marty Weiner — Founding Engineer and Architect at Pinterest explain not only how they scaled Pinterest over time but he also emphasizes on the challenges faced by any start-up while scaling in terms of people, processes, culture, etc.

Watching and learning is great but you know what is even better? Practising! The next section presents a hands-on activity for you to attempt ⭐

📝 Step 4: Solidify While Doing It on your Own

Now your head must be bubbling with all the newly learned terms like Load-balancers, web servers, data servers, APIs, SQL, and what-not…Guess it’s time to put your newly acquired knowledge to test? So here it is -

I want you to Design the Twitter Timeline and Search -

  • Step 1: Outline use cases and constraints
  • Step 2: Create a high-level design
  • Step 3: Design core components
  • Step 4: Scale the design

A detailed solution can be found HERE.

🔁 Step 5: Repeat

Yay! Congratulations if you reached till here. This would have roughly taken you around 5–6 hours but don’t you feel comfortable talking about scaling and the real-world application?

At this point, you should consider re-visiting all these resources again. There’s a lot more information out there on this topic but it would help to have your basics in place first!

✨ BONUS: Additional Resources

I am leaving some additional resources here for you to explore further:

  1. System Design Primer
  2. Master of Scale
  3. High Scalability
  4. InfoQ
  5. System Design Cheatsheet
  6. Crack the System Design Interview

I would love to hear from you!

As always, if you’d like to drop me a note, you can email me at contact@simranpandey.com or find me on Twitter at @simranpandey97, on LinkedIn at @simran-pandey, and on Medium at @simranpandey97

If there’s any specific topic that you want me to write on or if you simply want to give some feedback then you can use this short form here

https://twip.substack.com/p/coming-soon?r=2u3rh&utm_campaign=post&utm_medium=web&utm_source=copy

--

--