sydepsystem design atlas

Web Crawler / Search Indexer

Discover pages, crawl them, extract content, and index for search.

AdvancedDataPlatform
Crawler SchedulerComputeFetcherComputeContent ExtractorAnalytics & DataSearch IndexStorageWork QueueMessagingCrawl HistoryStorage

A crawler scheduler discovers seeds and URLs, a fetcher retrieves pages, an extractor parses content, and an indexer writes the resulting document corpus into a search index for downstream retrieval.

When to use it

  • You need to create a search engine or content discovery system over a large public or private web surface
  • Discovery and indexing are naturally batch-like and can tolerate a best-effort crawl

Trade-offs

  • Crawling the open web means dealing with robots.txt, rate limits, duplicate content and legal constraints
  • A crawler can be operationally expensive if it needs to be polite and resilient at scale

Components used

Batch / Scheduled JobContainer ServiceStream ProcessingSearch IndexMessage QueueRelational Database

How it works

  • A frontier queue holds URLs to visit. Fetchers pull from it, download pages, extract links, and feed newly discovered URLs back in.
  • A seen-set prevents revisiting the same URL, and politeness rules rate-limit requests per host regardless of how many are queued.
  • Extracted content is parsed and written to a search index separately from the crawling loop.

Used in the wild

  • Search engine indexing.
  • Price and content monitoring across competitor sites.
  • Building training or retrieval corpora from public web content.

Good to know

  • Crawler traps are everywhere: infinite calendars, session ids in URLs and faceted navigation generate unbounded unique URLs that will consume the frontier forever without depth and pattern limits.
  • Politeness is what keeps you unblocked. Respecting robots.txt and per-host delays matters more to a crawler's long-term throughput than raw fetch concurrency.