System design interview questionMediumScheduling / Crawl

Design a Web Crawler

Design a web crawler: discover URLs, fetch pages asynchronously, store content/metadata for later search/index use.

Interview scope

Producer/Client β†’ Gateway/LB β†’ App β†’ Message Queue; workers (App) consume Queue; App β†’ DB and Object Storage. No Client β†’ Queue/DB.

Functional requirements

  • Enqueue URLs to crawl.
  • Workers fetch pages and extract new links.
  • Persist page content or metadata.

Scale and quality goals

  • Crawl must be async β€” don’t block on every HTTP fetch in one request thread.
  • Scale by adding workers consuming a queue.
  • Politely avoid hammering one host forever (high level).

Capacity assumption

Design for this scale

Assume ~100M pages/month β‰ˆ ~40 pages/s average; bursts higher β€” queue + workers absorb spikes.

Practice more than a diagram

Place components on the Froquiz canvas, connect the data flow, and see which decisions the scenario-specific review finds missing. The full exercise and review unlock with Premium.

Explore Premium β†’