“구글이 어떻게 웹페이지를 수집하냐면…”

가 +
가 -

전세계에는 약 60조개에 이르는 웹페이지가 존재한다. 매일 1억개 페이지를 수집해 살펴본다고 해도 10년이 걸리는 엄청난 양이다. 정보의 바다로 불리는 인터넷. 만약 사용자가 원하는 정보를 찾아주는 구글이나 네이버, 다음과 같은 검색 서비스가 없다면 어떻게 됐을까. 아마 서울에서 김서방 찾는 격으로 정보를 더듬고 있을 지 모른다.

다행히도 우린 검색 서비를 이용해 0.01초도 안되는 시간에 원하는 정보를 찾는다. 구글과 네이버 다음은 순식간에 60조개 웹페이지를 뒤져 사용자가 원하는 정보만 골라 보여준다. 어떻게 이런 일이 가능한 것일까.

“분산 시스템과 머신 러닝 기술을 이용해 웹페이지에서 사용자가 원하는 정보를 찾아줍니다.”

김영진 구글 엔지니어는 10월15일 네이버가 주최한 개발자 컨퍼런스 ‘데뷰 2013’에서 구글이 어떻게 검색 서비스를 운영하는지를 소개했다. 구글이 수조개에 이르는 웹페이지에서 어떻게 정보를 수집하는지, 어떻게 컴퓨터를 학습시켜 원하는 검색어를 빨리 찾게 만드는지와 같은 구글의 검색 노하우를 상세히 공개했다.

deview google

“구글 검색은 사용자가 찾고자 하는 검색어가 포함된 모든 결과를 찾아 보여줍니다. 매번 60조개 웹페이지를 분석할 순 없습니다. 개중엔 똑같은 정보를 전달하지만 URL만 다른 웹페이지도 있을 수 있습니다. 우선, 이런 웹페이지부터 골라내야지요.”

김영진 엔지니어 설명에 따르면, 구글은 검색 서비스를 제공하기 위해 먼저 웹페이지를 모은다. 잘 알려진 웹사이트부터 방문해 웹페이지를 수집한다. 예를들어 네이버(naver.com)를 방문한 다음 네이버 웹사이트에서 볼 수 있는 모든 웹페이지 주소를 수집하는 식이다. 이 작업을 ‘크롤링’이라고 부른다.

검색 서비스는 이렇게 크롤링을 반복하며 웹페이지를 수집한다. 크롤링해 수집한 웹페이지를 다시 크롤링하고, 그 웹페이지와 연결된 또 다른 웹페이지를 크롤링해 무수히 많은 웹페이지를 모은다.

“크롤링 과정에서 신경써야 할 부문이 있습니다. 구글이 아무리 좋은 목적으로 크롤링을 한다고 하지만, 특정 웹사이트에서 한 번에 너무 많이 크롤링을 하게 되면 해당 웹사이트 가 다운될 수 있습니다. 그래서 웹페이지 기반 시스템을 고려해 크롤링을 합니다.”

겉으로 보이는 웹사이트는 하나지만 그 안에는 무수히 많은 웹페이지가 연결돼 있다. 네이버 웹사이트 안에는 뉴스를 볼 수 있는 웹페이지와 쇼핑몰 웹페이지가 연결돼 있다. 이 웹사이트는 특정 데이터센터의 서버 위에서 작동한다. 구글은 각 웹사이트 하단에 있는 서버가 어떤 구조로 연결돼 웹사이트 내 웹페이이들과 상호작용하는 지 파악한 다음 크롤링을 한다.

“모든 웹페이지를 크롤링 할 순 없습니다. 특정 웹사이트에 여러개 링크가 존재한다고 해서 그 링크를 모두 긁을 순 없지요. 사용자가 볼 법한 중요한 페이지를 크롤링하기 위해 순서를 웹페이지별로 순위를 매깁니다.”

예를 들면 이렇다. 눈으로 보는 웹사이트는 하나지만, 실제로 그 웹사이로 가는 길은 여러가지인 경우가 있다. ‘www.naver.com’을 주소창에 입력하면 네이버 웹사이트가 뜨지만, ‘naver.com’을 주소창에 입력해도 네이버 웹사이트가 뜬다. 같은 정보를 보여주는데 ‘www.naver.com’과 ‘naver.com’ 웹페이지 정보를 따로 수집할 필요가 있을까.

“크롤링할 때 중복제거 기술이 필요한 이유입니다. 비록 웹주소가 다르더라도 보여주는 콘텐츠 내용이 같으면 한 주소만 수집합니다. 그래야 데이터센터 네트워크 사용량도 줄일 수 있고, 하드디스크와 메모리 같은 컴퓨팅 자원도 아낄 수 있습니다.”

구글은 머신러닝을 활용해 최대한 중복 없이 웹페이지를 크롤링한다. 크롤링한 이후에 비교 분석할 웹페이지를 찾기 시작하면 이미 늦다. 수집도 하기 전에 웹페이지 주소만 보고 중복 여부를 파악해야 컴퓨팅 자원을 효율적으로 사용하면서 크롤링할 수 있기 때문이다.

“우선 수집하려는 URL이 중복된 URL이 아닌지를 파악합니다. 물음표(?) 다음에 나오는 값과 sid 값도 비교합니다. 보통 ? 다음에 나오는 값은 같은데 sid 값이 다르다면 같은 웹페이지일 확률이 놓습니다. 이런 방식으로 봇을 학습시켜 중복 웹사이트를 수집하지 않습니다.”

여기에 더해 구글은 무의미한 분석(insignificance analysis), 중요한 분석(significance analysis), 파라미터 분류(parameter classification),  동등한 규칙 정의(Equivalence rule construction)을 사용해 중복된 웹페이지를 걸러낸다.

“하지만 현실은 생각만큼 쉽지 않습니다. 아무리 알고리즘을 만들어도 완벽하게 중복된 페이지를 수집 안 할 순 없습니다. 쇼핑몰 웹사이트는 2개의 파라미터가 한꺼번에 동작하는 경우가 있거든요. 이 경우엔 내용이 같아도 서로 다른 주소를 수집하게 됩니다.”

이베이처럼 파라미터를 표시할 때 다른 명령어를 쓰는 경우도 있다. 일반적으로 웹페이지 주소에서 파라미터 값을 나누기 전에 ‘?’를 쓰는데, 이베이는 QQ를 쓴다. 이런 웹페이지 주소에 ‘?’로 중복된 페이지를 찾는 알고리즘을 넣어봤자 헛수고다.

“크롤링은 끝나지 않았습니다. 그러니까 2만명이 넘는 사람이 아직도 조금씩 검색엔진을 손보고 있는 게 아닐까요.”

네티즌의견(총 1개)