Design Tinder - System Design Interview (with TikTok Senior Engineer)

preview_player
Показать описание

A Senior Software engineer at TikTok, delves into the intricacies of designing Tinder. Central to the discussion is the choice of NoSQL, geo-sharding, and more. Yen also emphasizes the importance of balancing low latency with real-time recommendations, highlighting the need to prioritize user engagement and quick response times. The recommendation service is intricately designed with multiple filters, ensuring users receive matches that align with their preferences, are active, and are diverse in nature. This interview provides a comprehensive look into the thought processes and considerations behind designing a user-centric and efficient dating app.

Chapters (Powered by ChapterMe) -
00:00 - Intro
07:02 - Profile Creation and Storage Flow Overview
13:54 - Feed Recommendation Requirements for Active Users
17:14 - Recommend Local Users Based on Geographical Location
21:54 - Google S2 and Geosharding for User Recommendations
25:35 - Recommending Users Based on Preferences
30:40 - Low-Latency vs Real-Time Recommendation
35:32 - Core Functionality for Dating App

Watch more system design videos here:

ABOUT US:
Did you enjoy this video? Want to land your dream career? Exponent is an online community, course, and coaching platform to help you ace your upcoming interview. Exponent has helped people land their dream careers at companies like Google, Microsoft, Amazon, and high-growth startups. Exponent is currently licensed by Stanford, Yale, UW, and others.

Our courses include interview lessons, questions, and complete answers with video walkthroughs. Access hours of real interview videos, where we analyze what went right or wrong, and our 1000+ community of expert coaches and industry professionals, to help you get your dream job and more!

#SystemDesignInterview #DesignTinder #TikTokSeniorEngineer #TechInterviewPrep #systemdesigninterviewprep #systemdesigninterview #systemdesign #systemdesignquestions #datadesigninterview #tinderdesign #usercentricdesign #tryexponent #mockinterview
Рекомендации по теме
Комментарии
Автор

1M active users a day generate 1B matches a day? That is 2000 matches a day per person

kakhapilauri
Автор

I really like how she is driving the interview! However, the design seems to be very high-level and monolithic, not necessarily a system you can deploy at scale. I think the functional requirements need to be narrowed even further, because recommendation is a system design question on its own. We touched geosharding, but that discussion seemed out of place for something that was supposed to be high level.

I think back of the envelope estimations were a bit out of place, there was really no reason given for why those calculations were done. We calculated the amount of metadata storage we might need, but not much discussion other than that. No mention of whether this is a read heavy vs. write heavy system and what implications that has on the rest of the design. Do we need to be consistent or highly available? This is a very read-heavy service where people are swiping left and right like crazy, refreshing feeds all the time. You're going to need to be highly available, so someone that is new on the app might not have their profile readily seen until replicas pick them up.

I'm thinking for the feed generation / finding other users in your area, you'd have some sort of document store that you can scale as you go (like Mongo), with support for queries / searching based on strings. We'd have location in the user's metadata, so you'd probably let Google S2 handle the geometry and get all the users in a particular user's location. Honestly you might even consider a Graph DB since you're essentially building a recommended network of users based on a bunch of preferences and biographical information.


There seemed to be no goal in getting a complete, scalable system on the whiteboard, and the interviewer also didn't really do much to steer the candidate in the right direction unfortunately.

herooo.
Автор

I love how she first starts to describe the app in so much detail and at some point gets self conscious. "Oh, I'm actually not a user of Tinder and I have only heard about these super like things from a friend of a friend"

DominikPlaylists
Автор

Is there an error in the calculations of the profile photos storage? It should be around 60TB, not 300-600TB. 200kb * 6 * 50M = 60TB, isn’t it ?

ДенисЛарионов-мц
Автор

Some of the calculations and approaches are not good however I appreciate their times and efforts to explain how we develop systems. Thanks

Neural_Network_News
Автор

I think the calculations were way off.

She did 200kb per picture (which in reality is 3-6mb per pic. and exponent sys design course it mentions to round up or down so rounded up is 10mb)
She also gave herself a hard number of 6, i think calculation wise it would been smart to say 5 or 10.


At 10mb per picture and a user can upload 5 -> 5 * 10mb = 50mb per person
50mb * 50, 000, 000users = 250, 000, 00 Gb -> 2.5 Terra Bytes worth of data just for the pictures

As for text, an average line of text takes up about 70 bytes (rounded up is 100 bytes per person). 0.10 of a Kb.
So for 10 people your looking at about 1kb. Fairly small but for the 50million = 1Kb -> 50, 000, 000 = ~50million Mb -> ~50Gb worth of data for profiles.

So 50Gb x 2.5Tb is around 2.55Terra bytes. Takes a LTO of mental math but her estimate of 300-600Tb was just her throwing a number out there.

playfriends-fm
Автор

Which is this tool that draw design diagram? Can you send me the link? My next system design interview I have to draw whiteboard..I am looking best website that available?

SwikarP
Автор

I am hooked. I love the videos on this channel.

vernielariosa
Автор

i didnt even know what geo sharding was. If you didn't know a certain technology existed in an interview that requires it, does that just mean I am inexperienced?

rjab
Автор

Why she is explaining ERD using JSON? is it not effective, isn't it?

onlypersona
Автор

How to get 1 billion matches per day while the active user per day is 1 million?

SkyLee
Автор

This was use case driven design and will iterate slowly in to a high level system design

ClashRoyaleAtman
Автор

Which software is this, I am shopping for something to do those diagrams with

ComfortChauke
Автор

Thx. Anyone know which tool she is using for the diagram?

peterhorton
Автор

Curious on why NOSQL DB is chosen for profile. IMO SQL in this case would have been better. Any thoughts/perspectives?

theshallowriver
Автор

which tool / website people are using in this video to display the diagrams and text. Its very neat and clean and looking for something like this

SeriM-qcqr
Автор

Yipes! I've never installed a dating app or used one, I've only ever heard of things like "swipe right" in movies and television. I would be very disadvantaged if asked to design something like this. The interviewer would have to define all the business req's since I don't know what is in the app. Is "swiping right" a good thing? Like what is the positive vector for creating the directed graph relationship?

SacWebDeveloper
Автор

minute6 estimate looks off..
profile pic storage estimate is 200kb x 6 x 50M
= 200 x 10^3 x 6 x 50 x 10^6
= (200 x 6 x 50) x 10^3 x 10^6
= (6 x 10^4) x 10^3 x 10^6
= 60 x 10^12
= 60TB

600TB is 1000% of real estimate

HighSky-ltkn
Автор

Wonderful session!
I am wondering how recommending service is handling already recommended users.
Are we going to store the action taken by user on each recommended profile? This can make database bulky.

If we are to store action taken by user on each recommended profile, then what would be the query strategy, how data should be partitioned?

Looking for someone to suggest here! Thankyou

Engineer_With_A_Life
Автор

I think that doing an interview being only assertive, never asking for a feedback on assumptions, requirements, design proposals, or numbers might be leading to failing the interview because it can give the impression of being opinionated and self-centered.
Also, I think there's a lot of concepts that are explained fast, they are not super clear, and there aren't considerations about tradeoffs of why choosing what.
A candidate like this would make me think twice about giving a positive feedback, if I were the interviewer.

cicciove