한 편으로는 구글과 같은 검색 엔진이 어떻게 웹상에 흩어져있는 무분별한 문서들을 검색 엔진에 적용시킬 수 있는지 알 수 있게 되는 귀한 시간이었다.
궁금한 점
시작 URL을 지정한다는 말이 잘 이해가 안간다. www.naver.com, www.google.com과 같은 주소를 시작 URL로 보고, 거기 안에 있는 www.naver.com/booking, www.google.com/index 등과 같은 서브 URL로 탐색을 한다는 의미일까? (아시는 분 계시면 알려주세용.. )
DFS와 BFS를 고민하는 부분도 잘 이해가 안갔다. DFS는 콜스택을, BFS는 힙을 사용하는데.... 아? 스택보단 힙 영역을 쓰는 BFS가 조금 더 낫다고 판단한건가? 흠...
페이지의 우선순위를 결정하는 기준이 궁금하다. 논문을 읽어야하나? 쓰읍... ㅋㅋㅋ 어떤 기준으로 애플이라는 키워드가 들어간 페이지와 애플 페이지를 구분할 수 있을까 아시는 분 계시면 알려주십쇼..
크롤러에 대해 잘 알지 못했는데, 크롤러가 어디에서 사용되며, 전체적으로 어떤 아키텍처를 가지는지, 그리고 구현하며 고려해야하는 것들이 무엇이 있는지 알게된 시간이었다. ( 다음에 혹시 크롤러를 구현할 일이 생기면 꼭 다시 봐야지 .. )
작업 흐름을 다이어그램으로 보고서, 꽤 간단하게 구현할 수 있겠네? 라는 생각이 들었지만.. 상세 설계 부분을 읽으면서 .. 고려해야할 수 많은 문제들이 있구나.. 어렵다! 라는 생각이 들었다. 역시 모든 것은 디테일로 들어가면 어려워지고, 또 가장 중요하다는 이치를 체감했다.
끄적끄적
크롤링 활용 분야
검색 엔진 인덱싱
웹 아카이빙
웹 마이닝
웹 모니터링
크롤러가 만족시켜야할 속성
규모 확장성 : parallelism 활용
안정성 : 잘못 작성된 HTML, 아무 반응 없는 서버, 장애, 악성 코드가 붙어 있는 링크 등 비정상적 입력이나 환경에 잘 대응할 수 있어야 한다.
예절 : 크롤러는 수집 대상 웹 사이트에 짧은 시간 동안 너무 많은 요청을 보내서는 안된다.
확장성 : 새로운 형태의 컨텐츠를 지원하기 쉬워야 한다.
개략적 규모 추정
매달 10억 개의 웹 페이지 다운로드
QPS = 10억 = 대략 400페이지/초
Max QPS = 800
웹 페이지 크기 평균은 500k
10억 페이지 x 500k = 500TB/월
5년간 보관한다고 가정하면 30PB 의 저장용량 필요
작업 흐름
시작 URL들을 미수집 URL 저장소에 저장
HTML 다운로더는 미수집 URL 저장소에서 URL 목록을 가져옴.
HTML 다운로더는 도메인 이름 변환기를 사용하여 URL의 IP 주소를 알아내고, 해당 IP 주소로 접속하여 웹 페이지를 다운 받음.
컨텐츠 파서는 다운된 HTML 페이지를 파싱하여 올바른 형식을 갖춘 페이지인지 검증
컨텐츠 파싱과 검증이 긑나면 중복 컨텐츠 확인
페이지가 이미 컨텐츠 저장소에 있다면 버리고, 아니라면 저장소에 저장한 뒤, URL 추출기로 전달
URL 추출기는 해당 HTML 페이지에서 링크를 뽑음.
골라낸 링크를 URL 필터로 전달
필터링이 끝나고 남은 URL만 중복 URL 판별 단계로 전달
이미 저장소에 있는 URL은 버리고, 저장소에 없는 URL은 URL 저장소에 저장하고, 미수집 URL 저장소에 전달
느낀 점
궁금한 점
시작 URL을 지정한다는 말이 잘 이해가 안간다. www.naver.com, www.google.com과 같은 주소를 시작 URL로 보고, 거기 안에 있는 www.naver.com/booking, www.google.com/index 등과 같은 서브 URL로 탐색을 한다는 의미일까? (아시는 분 계시면 알려주세용.. )
DFS와 BFS를 고민하는 부분도 잘 이해가 안갔다. DFS는 콜스택을, BFS는 힙을 사용하는데.... 아? 스택보단 힙 영역을 쓰는 BFS가 조금 더 낫다고 판단한건가? 흠...
페이지의 우선순위를 결정하는 기준이 궁금하다. 논문을 읽어야하나? 쓰읍... ㅋㅋㅋ 어떤 기준으로 애플이라는 키워드가 들어간 페이지와 애플 페이지를 구분할 수 있을까 아시는 분 계시면 알려주십쇼..