9장 : 웹 크롤러 설계

웹 클롤러는 검색 엔진에서 널리 쓰는 기술로, 웹에 새로 올라오거나 갱신된 콘텐츠를 찾아내는 것이 주된 목적이다. 여기서 콭텍츠는 웹 페이지일 수도 있고, 이미지나 비디오, 또는 PDF 파일일 수도 있다. 웹 크롤러는 몇 개 웹 페이지에서 시작하여 그 링크를 따라 나가면서 새로운 콘텐츠를 수집한다.

  • 크롤러 이용 사례

    • 검색 엔진 인덱싱

    • 웹 아카이빙

    • 웹 마이닝

    • 웹 모니터링

1단계 : 문제 이해 및 설계 범위 확정

웹 크롤러의 기본 알고리즘

  1. URL 집합이 입력으로 주어지면, 해당 URL들이 가리키는 모든 웹 페이지를 다운로드한다.

  2. 다운받은 웹 페이지에서 URL들을 추출한다.

  3. 추출된 URL들을 다운로드할 URL 목록에 추가하고 위의 과정을 처음부터 반복한다.

요구사항 범위 정리

  • 규모 확장성 : 병행성(parallelism)을 활용하면 보다 효과적으로 웹 크롤링을 할 수 있다.

  • 안정성 : 잘못 작성된 HTML, 반응 없는 서버, 장애, 악성 코드가 붙어 있는 링크같이 비정상적 입력이나 환경에 잘 대응할 수 있어야 한다.

  • 예절 : 크롤러는 수집 대상 웹 사이트에 짧은 시간 너무 많은 요청을 보내서는 안 된다.

  • 확장성 : 새로운 형태의 콘텐츠를 지원하기가 쉬워야 한다.

개략적 규모 추정

  • 매달 10억 개의 웹 페이지를 다운로드한다.

  • QPS = 10억(1billion, 1,000,000,000)/30일/24시간/3600초 = 대략 400페이지/초

  • 최대(Peak) QPS = 2 x QPS = 800

  • 웹 페이지의 크기 평균은 500k라고 가정

  • 10억 페이지 x 500k = 500TB/월

  • 1개월치 데이터를 보관하는 데는 500TB, 5년간 보관한다고 가정하면 결국 500TB x 12개월 x 5년 = 30PB의 저장용량이 필요할 것이다.

2단계 : 개략적 설계안 제시 및 동의 구하기

웹 크롤러 작업 흐름

3단계 : 상세 설계

중요 컴포넌트 및 구현 기술

DFS vs BFS

  • 웹 크롤러는 보통 BFS를 사용한다. BFS는 FIFO 큐를 사용하는 알고리즘이다. 이 큐의 한쪽으로는 탐색한 URL을 집어넣고, 다른 한쪽으로는 꺼내기만 한다.

  • 문제점

    • 한 페이지에서 나오는 링크의 상당수는 같은 서버로 돌아가기 때문에 이런 크롤러는 보통 ‘예의 없는’ 크롤러가 될 수 있다.

    • 표준적 BFS 알고리즘은 URL 간에 우선순위를 두지 않는다. 그러나 페이지 순위, 사용자 트래팩의 양, 업데이트 빈도 등 여러 가지 척도에 비추어 처리 우선순위를 구별하는 것이 온당할 것이다.

미수집 URL 저장소

  • URL 저장소는 다운로드할 URL을 보관하는 장소로, 잘 구현하면 '예의'를 갖춘 크롤러, URL 사이의 우선순위와 신선도를 구별하는 크롤러를 구현할 수 있다.

    • 예의

    • 우선순위

    • 신선도

    • 미수집 URL 저장소를 위한 지속성 저장장치

HTML 다운로더

  • HTML 다운로더는 HTTP 프로토콜을 통해 웹 페이지를 내려 받는다.

  • Robots.txt

    • 로봇 제외 프로토콜이라고 부르기도 하는 Robots.txt는 웹사이트가 크롤러와 소통하는 표준적 방법이다.

  • 성능 최적화

    • 분산 크롤링

    • 도메인 이름 변환 결과 캐시

    • 지역성

    • 짧은 타임아웃

안정성 확보 전략

  • 안정 해시(consistent hashing) : 다운로더 서버들에 부하를 분산할 때 적용하는 기술이다.

  • 크롤링 상태 및 수집 데이터 저장 : 장애가 발생한 경우에도 쉽게 복구할 수 있도록 크롤링 상태와 수집된 데이터를 지속적으로 저장장치에 기록해 두는 것이 바람직하다.

  • 예외 처리(exception handling) : 대규모 시스템에서 에러(error)는 불가피할 뿐 아니라 흔하게 벌어지는 일이다. 예외가 발생해도 전체 시스템이 중단되는 일 없이 그 작업을 우아하게 이어나갈 수 있어야 한다.

  • 데이터 검증(data validation) : 시스템 오류를 방지하기 위한 중요 수단 가운데 하나다.

확장성 확보 전략

  • 본 예제의 경우 새로운 모듈을 끼워 넣음으로써 새로운 형태의 콘텐츠를 지원할 수 있도록 설계하였다.

문제 있는 콘텐츠 감지 및 회피

  1. 중복 콘텐츠

  2. 거미 덫

  3. 데이터 노이즈

Last updated