Tiktok

Func req

  1. Upload / download

  2. Streaming video

NFR

1 billion users, 1 bill DAU

1bill videos viewed per day

10 bill videos uploaded per year

150 countries

Success metrics: time in app (avg hour per day)

1 video 10 sec ~ 1 MB

Uploads: 10^10 uploads / 365 ~ 30^6 uploads per day / 100_000 seconds a day = 300 videos / second (so then approximately 1000 videos per second in peak). So 1000 videos / second * 1 Mb (10Mbits) = 10Gbits ingress (this is not a lot)

Storage: 10^10 uploads * 1Mb = 10PB videos per year (including replication, different formats) -> 100 PB per year (blob storage)

Storage: metadata of video 10^10 * 1KB = 10TB per year (NoSql storage)

Views (downloads): 10^9 per day / 100_000 seconds = 10_000 videos per second -> 100Gbits egress

Assumptions

Video storage

We can store old videos in archive (slow and cheap storage)

Geo distribution

Partitioning video data by region. CDN

Last updated