Design TikTok

Short-video platform inspired by TikTok: async transcoding into adaptive-bitrate renditions, CDN playback with prefetch, a two-stage For You recommender (retrieval, then ranking) and near-real-time learning from engagement, as described in ByteDance's Monolith paper (2022). A teaching design, not ByteDance's internal architecture.

Functional requirements

  • Creators can upload short videos with captions, hashtags, music, and thumbnails.
  • Users can watch videos with low-latency playback and scroll through a personalized For You feed.
  • Users can like, comment, share, follow creators, and save/favorite videos.
  • The platform should support creator profile pages and creator video lists.
  • The system should support near-real-time feed personalization and cold-start recommendations.
  • The platform should support content moderation, policy enforcement, and copyright/takedown workflows.
  • The system should support creator analytics and trending/viral content detection.
  • The platform should support ad insertion and live-commerce or promotional content hooks.

Non-functional requirements

  • Video playback should start quickly on mobile networks with ABR and global edge delivery.
  • Upload requests should return quickly while heavy processing runs asynchronously.
  • The recommendation path should stay low-latency even when offline feature pipelines lag.
  • The platform should survive viral spikes and hot objects without overwhelming origin systems.
  • Moderation, copyright, and policy systems should be isolated so they don’t block the core watch path unnecessarily.
  • The system should remain available during regional failures with clear RPO/RTO and safe rollout controls.

How the design evolves

Stage 1: Single Server, Videos in the Database

See why storing and streaming video through one server and database can't work.

What was missing: Nothing yet: one server receives, stores and streams every clip.

Why that's risky: Every view streams megabytes out of the database through one server, there's one quality for every network, and the feed is just the newest clips.

What gets added: An app server and a database holding each video file in its row.

Trade-offs: Trivial to build, but video is far too heavy for a database and an application server.

Stage 2: Upload, Transcode and Store

Accept uploads quickly and encode them in the background into renditions for every network speed.

What was missing: Videos lived in database rows in one format, encoded during the upload request.

Why that's risky: Viewers still pull every segment from storage through the playback service, which melts under viral clips.

What gets added: An upload service that creates the record and issues a signed URL so the original goes straight to object storage, a transcode queue, and transcoders that build an adaptive-bitrate ladder of HLS segments. A playback service returns manifests.

Trade-offs: A new clip takes a short while to become playable while it's encoded, in exchange for an upload that returns in under a second.

Stage 3: CDN Playback

Serve segments from servers near viewers and make swiping instant.

What was missing: Every segment came from origin storage through application servers.

Why that's risky: The feed is still just recent clips: nothing learns what each viewer likes.

What gets added: A video CDN in front of rendition storage, a metadata cache for hot records and manifests, and client prefetch of the next clips' first segments.

Trade-offs: Segments are immutable, so they can be cached for a long time; removing a clip means invalidating its manifest, not its segments.

Stage 4: For You: Retrieval and Ranking

Pick the next clips for each viewer from billions in well under a second.

What was missing: No personalization: the same recent clips for everyone.

Why that's risky: The model learns only from old data: likes and viewing time aren't captured or fed back yet.

What gets added: A feed service that runs two stages: candidate retrieval (nearest neighbours of the viewer's interest embedding, followed accounts, trending pools) narrows billions to thousands, then a ranking model scores those on fresh features and keeps a few dozen. An online feature store and its durable copy hold the features.

Trade-offs: Retrieval is cheap and approximate, ranking is expensive and precise; splitting them keeps latency bounded.

Stage 5: Engagement and Online Learning

Capture every like and how long each clip was viewed, and feed it back into recommendations within minutes.

What was missing: User actions weren't recorded or used, so recommendations couldn't adapt.

Why that's risky: New posts go live without policy or copyright checks, and the feed has no ads.

What gets added: An engagement service that stores likes, comments and follows and publishes every action to an event stream; an online trainer that updates the model and embeddings within minutes; and an aggregator for counts, creator analytics and trends.

Trade-offs: Counts are eventually consistent (a like may take a moment to show); the model updates continuously instead of in daily batches.

Stage 6: Moderation, Ads and Observability

Check every post before it goes live, monetize the feed, and watch quality of experience.

What was missing: Posts went live unchecked, nothing paid for the feed, and nobody could see start-up time or rebuffering.

Why that's risky: Remaining risk is regional: losing a region needs failover of the feed, metadata and CDN routing.

What gets added: A moderation queue and workers (policy classifiers, audio fingerprinting for copyright) that gate a clip going live; an ads service filling sponsored feed slots; and monitoring of start-up time, rebuffering, feed latency and backlogs.

Trade-offs: Moderation delays a clip going live by seconds to minutes; borderline cases wait for human review.

Frequently asked questions

How do you keep playback fast on mobile networks?

Use ABR with HLS/DASH, small segments, quick-start low-bitrate renditions, aggressive CDN edge caching, and client prefetch of the next likely video.

How do you prevent abuse and copyright violations?

Run layered moderation: reputation checks at upload time, async policy classifiers, copyright/audio fingerprint matching, and human review/takedown workflows.

How do you handle viral videos that get a huge spike in traffic?

Use CDN origin shielding, autoscale feed and metadata services, coalesce hot requests, and prioritize prefetch/caching of manifests and hot segments for the viral object.

How do you handle recommendations for new users with no engagement history?

Combine trending content, regional priors, demographic-safe bootstrapping, creator diversity, and simple onboarding signals until enough watch/skip/dwell data exists for personalization.

Why separate retrieval from ranking in the For You feed?

Retrieval finds a broad candidate pool quickly using embeddings, trending pools, and heuristics. Ranking then applies more expensive scoring on a smaller set using online features, quality signals, and safety rules. Separating them keeps latency tractable.

How do you provide creator analytics without hurting user-facing performance?

Stream engagement events asynchronously, aggregate them nearline/offline, and serve creators from a dedicated analytics store rather than reading directly from operational counters or the watch path.

How do you mix ads into a highly personalized feed without killing retention?

Insert sponsored candidates in a separate ad-serving step with pacing, auction, and policy constraints. Apply strict latency budgets, relevance thresholds, and frequency caps; fall back gracefully if ad systems are unavailable.

How do you keep recommendation and moderation failures from taking down playback?

Keep playback and manifest delivery independent from ranking and moderation pipelines. Recommendation can degrade to cached or trending pools, and moderation decisions can apply asynchronously with emergency blocks for high-risk content.

PRISM
System Design Interview
Round 1 of 4 · Architecture Design · 60:00 remaining
PRISM logo PRISM logo
Problems
AI Interview
Interview Challenges
Build & Stress Test NEW
System Architectures
Design & Fix NEW
Interactive Roadmap
System Design Guides Interview Prep Guide
Problems
Today's mission
Notifications
    Theme
    Pricing Community NEW Send feedback Report a problem NEW
    Sign in
    Theme
    Community NEW Send feedback Report a problem NEW
    All problems
    Phase
    Build & Stress Test
    Phase 01: Thinking in Systems
    Upcoming

    Components

    User
    CDN
    Load Balancer
    Server
    Cache
    Database
    Blob Storage
    Search Index
    Queue
    Worker
    Rate Limiter
    Service
    API Gateway
    Reverse Proxy
    WebSocket Server
    Third-party API

    Inspector

    Notes
    Use clear names so your design intent is easy to understand.
    Good
    Name by business meaning
    "Order API", "Restaurant Service"
    Avoid
    Generic names = zero signal
    "Server 1", "API", "Queue"
    A short description for each component makes feedback much better.
    100%
    Start by identifying:
    • Users & entry points
    • APIs & services
    • Databases & storage
    • Traffic flow & scale

    Round 1 of 4 Architecture Design

    Run a simulation to see results.

    Time Remaining
    60:00
    System Design Interview

    What are the core functional requirements?
    What are the key non-functional constraints?

    Questions

    Start Evaluation to unlock questions.

    EVALUATE MODE

    Test yourself like it's the real thing.

    A structured 4-module evaluation that mirrors how top companies assess system design candidates.

    Architecture Design
    Draw your system on the canvas. Define components, connections, and data flow.
    FR & NFR Requirements
    Answer functional and non-functional requirement questions about your design.
    MCQ Round
    Multiple choice questions testing your depth on the chosen system.
    Tradeoff Analysis
    Justify your design decisions and defend your architectural tradeoffs.
    AI Report Generated
    Choose a Problem
    No problem selected
    • 30 min
    • 45 min
    • 60 min
    Round 2 of 4
    MCQ Round
    Answer multiple-choice questions based on your design.

    Exit Interview?

    You're in the middle of an interview session. Leaving now will end your current attempt.

    Your progress will be saved.

    Open a saved design

    Select a design to load into the canvas.

    My Evaluations

    Your past evaluation sessions

    Here’s a simple request flow that follows the expected layer order.

    External User
    →
    Edge CDN → API Gateway → Load Balancer
    →
    Compute App Servers / Services
    →
    DataAccess Cache
    →
    Storage Database / Search Index
    →
    Async Queue → Worker

    Tip: keep arrows moving forward through layers (Edge → Compute → Storage). Avoid sending storage back to compute.

    Evaluation Instructions

    Read the rules carefully before starting. The test auto-submits on refresh.

    Before you start

    • Build your architecture on the canvas. The timer starts when you click Start Evaluation.
    • Don't forget to answer Functional Requirement and Non Functional Requirements.
    • When satisfied with your design, click Next to lock it and view the questions.
    • Please answer final step questions to complete the evaluation.

    Dos

    • Do read each question carefully before answering.
    • Do include required components to maximize component coverage.
    • Do save a copy of your design if you want to keep it before submission.

    Don'ts

    • Don't refresh or close the tab during an active evaluation — this will auto-submit your answers.
    • Don't switch app modes or open another tab while the evaluation is running.
    • Don't attempt to edit the design after clicking Next; the workspace will be locked.

    All the best!!

    Confirm

    Input

    Notice

    Evaluation Report
    Report a problem

    Evaluation Complete

    Generating Your Report

    Hang tight — our AI is evaluating your design…

    Did you know?

    Loading…

    Share feedback

    Tell us what worked well and what we can improve.

    Let's personalize this

    Answer a couple of quick questions so we can tailor your journey and missions.

    Your welcome gift: of Full PRISM Access

    Your Pro access starts as soon as you press Start my journey.

    SYSTEM BRIEF

    System Constraints

    What the system must do — every item is a user-facing behaviour your architecture must support.

      ↑ Engineering Constraints

      These are the failure modes you must design against — latency SLAs, durability targets, traffic ceilings.

        ⇆ Architecture Constraints

        Core Concepts to Master

        Your Journey
        PHASE – –
        0 / 0 0%
        0
        Mock Interview Checklist

        Pick a topic to start

        Explore concept overviews, real-system examples, key tradeoffs, and interview talking points for each roadmap section.

        Phase Mastered

        You've conquered this phase. These are the skills you now own:

          +500 XP

          Company Interview Paths

          Progress Summary