구글 검색은 어떻게 작동할까? (크롤링, 페이지랭크)

써먹는 독서

구글Google은 사용자가 검색어를 입력하면 무려 30조 개가 넘는 웹페이지web page를 뒤져서 가장 좋은 결과물을 10개로 추린다. 그러면 사용자는 92%의 확률로 첫 페이지에 나온 결과(즉, 가장 좋은 결과물 10개 중 하나)를 클릭한다. 30조 개 중에서 단 10개를 가려내는 건 뉴욕에서 길바닥에 떨어진 동전을 발견하는 것만큼이나 어려운 일이다. 하지만 구글은 평균 0.5초 만에 뚝딱 해치워 버린다. 어떻게 그럴 수 있을까?

사용자가 검색어를 입력할 때마다 구글이 그 많은 웹페이지에 일일이 접속하진 않는다. 대신 데이터베이스database(엑셀 스프레드시트처럼 정보를 일목요연하게 정리해 놓은 표라고 생각하면 된다)에 각 웹페이지의 정보를 저장해두고 알고리즘algorithm을 이용해서 무엇을 보여줄지 정한다. 알고리즘은 일련의 명령어다. 인간에게 치즈샌드위치를 만드는 ‘알고리즘’이 있다면 구글의 컴퓨터에는 검색어에 맞는 웹페이지를 찾는 알고리즘이 있다.

1. 크롤링

구글의 알고리즘은 인터넷상의 모든 웹페이지를 데이터베이스에 저장하는 것으로 시작된다. 이를 위해 ‘스파이더spider’라는 프로그램을 이용해 웹페이지를 ‘크롤링crawling’ 한다. ‘크롤’은 기어다닌다는 뜻이다. 크롤링은 인터넷에 있는 모든 웹페이지를 찾을 때까지(적어도 구글이 판단하기에 그럴 때까지) 지속된다.

스파이더는 일단 몇 개의 웹페이지를 크롤링해서 ‘색인’이라고 하는 웹페이지 목록에 추가한다. 그리고 각 웹페이지에서 밖으로 나가는 링크, 즉 외부 링크를 따라가서 또 새로운 웹페이지를 색인에 추가한다. 그렇게 해서 더는 새로운 웹페이지를 찾을 수 없을 때까지 이 과정이 반복된다.

크롤링은 항상 진행 중이다. 구글은 밤낮없이 새로운 웹페이지를 색인에 추가하고 혹시 기존의 웹페이지에 변동 사항이 있으면 그것 역시 색인에 반영한다. 구글의 색인이 얼마나 방대한가 하면 그 용량이 무려 1억 기가바이트를 넘을 정도다. 1TB(테라바이트) 외장하드에 다 나눠 넣자면 10만 개가 필요한 수준이다. 그 하드들을 하나씩 쌓아올리면 높이가 1.5킬로미터쯤 될 것이다.

2. 단어 검색

사용자가 검색어를 입력하면 구글은 색인을 샅샅이 뒤져서 연관성이 큰 웹페이지를 찾는다.

그 원리는 무엇일까? 가장 단순한 방법은 워드Word에서 Ctrl+F(맥Mac 은 Cmd+F)를 눌렀을 때처럼 특정한 키워드의 출현 빈도를 확인하는 것이다. 실제로 90년대의 검색엔진은 그런 식으로 작동했다. 색인을 뒤져서 검색어가 가장 많이 나오는 웹페이지들을 보여줬다. 이때 그 출현 빈도를 키워드 밀도라고 불렀다.

그런데 이런 방식은 쉽게 악용될 수 있다. 예를 들어 스니커즈 초콜릿으로 검색을 했다면 당연히 snickers.com이 최상위에 표시돼야 한다. 하지만 검색엔진이 단순히 웹페이지에서 ‘스니커즈’라는 단어가 나오는 횟수만 센다면? 누군가 작정하고 ‘스니커즈 스니커즈 스니커즈 스니커즈’라고 해당 단어를 잔뜩 써 놓은 웹페이지가 최상위에 오를 것이다. 그런 결과는 쓸모가 없다.

3. 페이지랭크

구글은 키워드 밀도 대신 페이지랭크PageRank라는 혁신적인 알고리즘을 사용한다. 페이지랭크는 설립자 래리 페이지Larry Page와 세르게이 브린Sergey Brin이 1998년에 박사 논문을 작성하며 개발했다. 당시 두 사람은 어떤 웹페이지의 중요도를 측정하려면 다른 중요한 웹페이지에서 그 웹페이지로 들어오는 링크를 봐야 한다고 판단했다. 비유하자면 파티에서 인기인을 찾으려면 다른 인기인들이 주변에 있는지 보면 되는 것과 같다.

페이지랭크는 웹페이지의 점수를 계산할 때 해당 웹페이지를 링크한 다른 모든 웹페이지의 페이지랭크 점수를 집계한다(물론 다른 웹페이지들의 점수 역시 또 다른 웹페이지들의 점수를 기준으로 계산되는데 이때 선형대수학이 이용된다).

예를 들어 우리가 에이브러햄 링컨Abraham Lincoln을 소개하는 웹페이지를 만들었다고 치자. 처음에는 페이지랭크 점수가 무척 낮을 것이다. 그러다 방문자가 별로 없는 어떤 블로그가 이 웹페이지를 링크하면 페이지랭크가 조금 올라간다. 페이지랭크에서 중요시되는 것은 들어오는 링크의 양이 아니라 질이다. 그래서 인기 없는 블로그 수십 개가 우리의 웹페이지를 링크해도 점수가 별로 안 올라간다. 하지만 《뉴욕 타임스The New York Times》 기사(아마도 페이지랭크가 높을 것이다)에 링크가 걸린다면 점수가 대폭 상승할 것이다.

구글은 색인에서 검색어가 언급된 웹페이지를 모두 찾은 후 페이지랭크 외에도 여러 가지 기준으로 그 순위를 매긴다. 예를 들면 웹페이지의 최근 업데이트 시점을 확인하고 사용자의 현재 위치를 반영한다. 그래서 똑같이 ‘football’로 검색해도 미국에서는 NFL 미식축구가 나오고 영국에서는 프리미어리그가 나온다. 그리고 스팸으로 의심되는 웹사이트(예: ‘스니커즈 스니커즈 스니커즈 스니커즈’ 사이트)는 무시한다.

4. 페이지랭크 조작?

하지만 페이지랭크에도 허점은 있다. 과거에 스패머들이 ‘스니커즈 스니커즈 스니커즈 스니커즈’ 수법으로 키워드 밀도를 공략했다면 최근에는 ‘링크팜link farm’, 즉 서로 연관 없는 링크를 잔뜩 넣은 웹페이지를 생성하고 있다. 웹사이트 운영자들은 링크팜에 돈을 주고 자신의 웹페이지로 들어오는 링크를 포함시켜서 페이지랭크를 인위적으로 올리려고 한다. 그러나 가만히 앉아서 당할 구글이 아니다. 링크팜을 색출하는 기술을 도입한 것이다.

링크팜이 음지의 기술이라면 양지에서 사용되는 기술도 존재한다. 이른바 SEOSearch Engine Optimization, 즉 검색엔진 최적화다. 웹페이지를 검색 결과 최상위에 올리기 위해 구글 검색 알고리즘을 역이용하는 방법이 어엿한 산업으로 자리잡았다. SEO의 기본은 자신의 웹페이지를 링크한 웹페이지를 늘리는 것이다. 그 밖에도 웹페이지의 제목과 본문에 적절한 키워드를 넣고 동일한 웹사이트 내의 모든 웹페이지가 서로 링크를 걸게 하는 등 여러 가지 기법이 동원된다.

그러나 구글도 수시로 검색 알고리즘을 수정한다. 소소한 알고리즘 업데이트가 연간 500건 이상이다. 간간이 대대적인 업데이트가 있으면 SEO 전문가들은 또 어떻게든 변동 사항을 이용할 방법을 모색한다. 예를 들어 2018년에 모바일 기기에서 로딩 속도가 빠른 웹사이트에 유리하게 알고리즘이 변경되자 SEO 전문가들은 구글에서 제공하는 AMP(Accelerated Mobile Pages), 즉 가속 모바일 페이지라는 도구를 이용해 웹페이지의 군살을 뺄 것을 권했다.