웹에 새로 올라오거나 갱신된 컨텐츠를 찾아내는 것이 주된 목적
1단계 문제 이해 및 설계 범위 확정
- 기본 알고리즘
- URL집합이 입력으로 주어지면, 해당 URL들이 가리키는 모든 웹페이지를 다운로드한다.
- 다운받은 웹 페이지에서 URL들을 추출한다.
- 추출된 URL들을 다운로드한 URL 목록에 추가하고 위의 과정을 다시 반복한다.
- 요구사항
- 검색엔진 인덱싱
- 매달 10억개의 웹 페이지를 수집
- 새로 만들어진 웹 페이지나 수정된 웹 페이지도 고려
- 수집한 웹 페이지는 5년간 저장
- 중복된 페이지는 무시
- 좋은 웹 크롤러가 만족시켜야 할 속성
- 규모 확장성(Parallelism)
- 안정성 → 잘못 작성된 HTML, 반응없는 서버, 장애, 악성코드가 붙어있는 링크와 같은 비정상적 입력이나 환경에 대응하는 능력
- 예절 → 크롤러는 수집대상 웹 사이트에 짧은 시간 너무 많은 요청을 보내면 안된다.
- 확장성 → 새로운 형태의 콘텐츠를 지원하기가 쉬워야한다.
- 개략적 규모 추정
- QPS → 10억 / 30일 / 24시간 / 3600 초 → 400 페이지
- 최대 QPS ? 2 * QPS → 800
- 웹페이지 크기 평균을 500k로 가정하면 월 저장용량은 500TB(10억 * 500k)
- 1개월치 데이터를 보관하는 데는 500TB, 5년간 보관한다면 500TB *12 * 5 → 30PB
2단계 개략적 설계안 제시 및 동의구하기

시작 URL 집합
- 정답은 없음
- 만약 어떤 대학 웹사이트로부터 찾아갈 수 있는 모든 웹 페이지를 크롤링하는 가장 직관적인 방법은 해당 대학의 도메인이름이 붙은 모든 페이지의 URL을 시작 집합으로 정하는 것
- 만약 전체 웹을 크롤링할 경우, 크롤러가 가능한 한 많은 링크를 탐색할 수 있도록 하는 URL을 고르는 것이 바람직함.
- 일반적으로는 전체 url 공간을 작은 부분집합으로 나누는 전략을 사용한다.
- 주제별로 다른 시작 URL을 사용하는 것이다. URL공간을 쇼핑, 스포츠 등의 주제로 세분화하고 그 각각에 다른 시작 URL을 사용
미수집 URL 저장소
- 크롤링 상태
- 다운로드할 URL을 저장 관리하는 컴포넌트를 미수집 URL 저장소라고 함
- FIFO 식 Queue
HTML 다운로더