구글 검색 너란 녀석...
구글 검색이 어떻게 이루어지는지 정리해보고자 합니다.
다들 한 번쯤은 구글을 써보았을 것입니다. 그런데 궁금하지 않으신가요?
구글은 어떻게 30조 개가 넘는 웹 페이지들 속에서 사용자가 입력한 검색어에 맞는 결과물을 10개로 추려서 보여줄까요? 그것도 평균 0.5초 만에!
사용자가 검색어를 입력할 때마다 구글이 그 많은 웹 페이지에 접속하진 않습니다. 대신 DB에 각 웹페이지 정보를 저장해 두고 알고리즘으로 무엇을 보여줄지 정하죠.
크롤링
구글의 알고리즘은 인터넷 상의 모든 웹페이지를 DB에 저장하는 것으로 시작합니다. 이를 위해 Spider라는 프로그램을 이용해 웹 페이지를 크롤링해요.
크롤(Crawl)은 기어 다닌다는 뜻입니다. 크롤링은 인터넷에 있는 모든 웹 페이지를 찾을 때까지 계속됩니다.
- Spider는 몇 개의 웹 페이지를 크롤링해서 색인(Index)이라고 하는 웹 페이지 목록에 추가
- 각 웹 페이지에서 외부 링크를 따라가서 새로운 웹 페이지를 색인에 추가
- 더 이상 새로운 웹 페이지를 찾을 수 없을 때까지 이 과정 반복
구글에 크롤링을 검색해보면 나오는 결과 중 대다수는 “파이선으로 크롤링 만들기” 같은 것들입니다. 하지만 웹 페이지 몇 개를 긁는 걸 크롤링이라고 할 수 없어요. 그건 그저 1회성 코드에 불과합니다. DOM 구조가 약간만 변해도 더 이상 쓸 수 없는 코드인 거죠.
크롤러는 수천, 많게는 수만 개의 웹 페이지들을 어떻게 하면 잘 수집할 수 있을까에 대한 고민입니다.
페이지 랭크
구글은 키워드 밀도 대신 페이지 랭크(PageRank)라는 알고리즘을 사용합니다.
90년대에는 특정 키워드의 출현 빈도를 확인해서 가장 많이 나오는 웹 페이지를 보여줬어요. 문제는 페이지에 키워드를 잔뜩 써놓으면 최상위에 노출되어 쓸모없는 결과가 나온다는 점이었습니다.
페이지 랭크는 구글의 창립자 래리 페이지(Larry Page)와 세르게이 브린(Sergey Brin)이 개발했습니다.
당시 두 사람은 어떤 웹 페이지의 중요도를 측정하려면 해당 웹 페이지를 링크하고 있는 다른 페이지를 봐야 한다고 판단했어요.
페이지 랭크는 웹 페이지의 점수를 계산할 때 해당 웹 페이지를 링크한 다른 모든 웹 페이지의 페이지 랭크 점수를 집계합니다.
페이지 랭크에서 중요시되는 것은 양보다 질이에요. 인기 없는 블로거 수십 명이 저의 글을 링크해도 점수가 별로 안 올라갑니다. 하지만 엄청 인기 있는 블로거가 저의 글을 링크한다면? 점수가 대폭 상승하게 됩니다.
구글은 페이지 랭크 외에도 최근 업데이트 시점 확인, 사용자의 현재 위치 반영 등 다양한 요소를 반영해요.
SEO
Search Engine Optimization, 즉 검색엔진 최적화는 웹 페이지를 검색 결과 최상위에 올리기 위해 구글 검색 알고리즘을 역이용하는 방법입니다.
주요 기법을 살펴보면 이렇습니다.
- 백링크 확보: 자신의 웹 페이지를 링크한 웹 페이지를 늘리는 것이 SEO의 기본
- 키워드 최적화: 웹 페이지의 제목과 본문에 적절한 키워드 삽입
- 내부 링크: 동일한 웹 사이트 내의 모든 페이지가 서로 링크되도록 구성
결론
구글도 수시로 검색 알고리즘을 수정합니다. 소소한 알고리즘 업데이트만 해도 500건이 넘어요!
예를 들어 2018년에 모바일 기기에서 로딩 속도가 빠른 웹 사이트에 유리하게 알고리즘이 변경되었습니다. 따라서 구글이 만든 성능 측정 라이브러리인 Lighthouse를 사용하여 페이지 최적화 정도를 측정해보는 것도 좋은 방법이에요.



