9장. 웹 크롤러 설계

  • 웹 크롤러
    • robot, spider
    • 검색 엔진에서 널리 쓰는 기술
    • 웹에 새로 올라오거나 갱신된 콘텐츠를 찾아내는 것이 주된 목적
    • 몇 개 웹 페이지에서 시작해서 링크를 따라 나가면서 새로운 콘텐츠를 수집
  • 크롤러 이용
    • 검색 엔진 인덱싱
      • 검색 엔진을 위한 local index 생성
      • ex. Googlebot: 구글 검색 엔진이 사용하는 웹 크롤러
    • 웹 아카이빙 web archiving
      • 나중에 사용할 목적으로 장기보관하기 위해 웹에서 정보를 모으는 절차
      • ex. 미국 국회 도서관, EU 웹 아카이브
    • web mining
      • 웹의 폭발적 성장세 = data mining 업계에 굳
      • 인터넷에 유용한 지식을 도출 가능
      • ex. 기업의 핵심 사업 방향 알아내기
    • web monitoring
      • 인터넷에서 저작권이나 상표권이 침해되는 사례 모니터링
      • ex. Digimarc(디지마크): 웹 크롤러를 통해 해적판 저작물을 찾아내서 보고

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

웹 크롤러의 기본 알고리즘

  1. URL 집합이 입력으로 주어지면, 해당 URL들이 가리키는 모든 웹 페이지를 다운로드
  2. 다운받은 웹 페이지에서 URL들을 추출
  3. 추출된 URL들을 다운로드할 URL 목록에 추가하고 위의 과정을 반복

웹 크롤러 설계 요구 사항 분석

  • 크롤러의 주된 용도는? 검색 엔진 인덱스 생성용? 데이터 마이닝? 이 외 다른 용도?
    → 검색 엔진 인덱싱
  • 매달 얼마나 많은 웹 페이지를 수집?
    → 10억 개
  • 새로 만들어진 웹 페이지나 수정된 웹 페이지도 고려?
    → yes
  • 수집한 웹 페이지 저장 필요?
    → 5년간
  • 중복된 콘텐츠는 어떻게?
    → 무시

좋은 웹 크롤러가 만족해야하는 속성

  • 규모 확장성
    • 수십업 개의 페이지가 존재
    • 병행성(parallelism)을 활용하면 보다 효과적으로 웹 크롤링 가능
  • 안정성 robustness
    • 웹은 함정으로 가득
    • ex. 잘못 작성된 HTML, 아무 반응이 없는 서버, 악성 코드가 붙어 있는 링크
    • 이런 비정상적 입력이나 환경에 잘 대응할 수 있어야 함.
  • 예절 politeness
    • 수집 대상 웹 사이트에 짧은 시간동안 너무 많은 요청을 보내면 X
  • 확장성 extensibility
    • 새로운 형태의 콘텐츠를 지원하기 쉬워야 함
    • ex. 이미지 파일도 크롤링하고 싶다고 할 때 전체 시스템을 새로 설계해야 한다면 곤란.

개략적 규모 추정

  • 매달 10억 개의 웹 페이지 다운로드
  • QPS = 10억 / 30일 / 24시간 / 3600초 := 400페이지 / 초
  • 최대 Peak QPS = 2 * QPS = 800
  • 웹 페이지 평균 크기 500k라고 가정
  • 10억 페이지 x 500k = 500TB/월
  • 1개월치 데이터 보관 500TB → 5년간 보관 500TB 12개월 5년 = 30PB

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

시작 URL 집합

  • 웹 크롤러가 크롤링을 시작하는 출발점
  • 크롤러가 가능한 한 많은 링크를 탐색할 수 있도록 하는 URL을 고르는 것이 바람직
    • 방법1. 전체 URL 공간을 작은 부분집합으로 나누는 전략을 사용
    • 방법2. 주제별로 다른 시작 URL을 사용 (주제별로 세분화, 각각에 다른 시작 URL을 사용)

미수집 URL 저장소

  • 크롤링 상태
    1. 다운로드할 URL
    2. 다운로드된 URL
  • 미수집 URL 저장소(URL frontier) = 다운로드할 URL을 저장 관리하는 컴포넌트
  • FIFO Queue

HTML 다운로더

  • 인터넷에서 웹 페이지를 다운로드하는 컴포넌트
  • 다운로드할 페이지의 URL은 미수집 URL 저장소가 제공

도메인 이름 변환기

  • 웹 페이지를 다운받으려면 URL을 IP주소로 변환하는 절차가 필요
  • HTML 다운로더는 도메인 이름 변환기 사용해서 IP 주소 알아냄

콘텐츠 파서

  • 웹 페이지를 다운로드하면 parsing과 validation 절차가 필요
  • 이상한 웹 페이지는 문제를 일으킬 수 있고 저장 공간만 낭비하게 되기 때문
  • 크롤링 서버 내에 콘텐츠 파서를 구현하면 크롤링 과정이 느려짐
    → 독립된 컴포넌트 생성

중복 콘텐츠인가?

3. 3단계 상세 설계

4. 4단계 마무리

profile
숭실대학교 컴퓨터학부 21

0개의 댓글