2026년 3월 31일 화요일
Search Off the Record 팟캐스트 105화를 청취하셨다면 Googlebot의 내부 작동 방식이라는 Google의 심장(및 서버)에 가까운 주제를 심층적으로 다루는 내용을 들으셨을 것입니다.
오랫동안 'Googlebot'이라는 이름은 인터넷을 체계적으로 읽는 단일하고 지치지 않는 로봇의 이미지를 떠올리게 했습니다. 하지만 현실은 좀 더 복잡하고 훨씬 더 흥미롭습니다. 오늘은 Google의 크롤링 인프라를 자세히 살펴보고자 합니다. 특히 Google의 머리를 아프게 하는 바이트 크기 제한에 중점을 둘 것입니다.
먼저 Googlebot은 단일 프로그램이 아닙니다.
먼저 역사적으로 잘못된 명칭을 바로잡겠습니다. 2000년대 초반에는 Google에 제품이 하나였으므로 크롤러도 하나였습니다. 'Googlebot'이라는 이름이 붙었습니다. 하지만 오늘날 Googlebot은 중앙 집중식 크롤링 플랫폼과 유사한 것의 사용자일 뿐입니다.
서버 로그에 Googlebot이 표시되면 Google 검색을 보고 있는 것입니다. Google 쇼핑, 애드센스 등 수십 개의 다른 클라이언트도 모두 다른 크롤러 이름으로 이 동일한 기본 인프라를 통해 크롤링 요청을 라우팅하며, 더 큰 클라이언트는 Google 크롤러 인프라 사이트에 문서화되어 있습니다.
2MB 제한: 바이트는 어떻게 되나요?
여기서부터 다소 혼란스러워집니다. 크롤러 인프라의 모든 클라이언트는 가져오기에 대한 몇 가지 설정을 지정해야 합니다. 이러한 설정에는 사용자 에이전트 문자열, robots.txt에서 찾을 사용자 에이전트 토큰, 단일 URL에서 가져올 바이트 수가 포함됩니다.
Googlebot은 현재 개별 URL (PDF 제외)에 대해 최대 2MB를 가져옵니다. 즉, HTTP 헤더를 포함하여 리소스의 처음 2MB만 크롤링합니다. PDF 파일의 한도는 64MB입니다.
이미지 및 동영상 크롤러는 일반적으로 다양한 기준 값을 가지며, 이는 주로 가져오는 제품에 따라 달라집니다. 예를 들어 파비콘을 가져오는 것은 이미지 검색과 달리 한도가 매우 낮을 수 있습니다.
한도를 지정하지 않는 다른 크롤러의 경우 콘텐츠 유형과 관계없이 기본값은 15MB입니다.
이는 서버가 와이어를 통해 전송하는 바이트에 어떤 영향을 미치나요?
- 부분 가져오기: HTML 파일이 2MB보다 큰 경우 Googlebot이 페이지를 거부하지 않습니다. 대신 정확히 2MB 컷오프에서 가져오기를 중지합니다. 이 한도에는 HTTP 요청 헤더가 포함됩니다.
- 컷오프 처리: 다운로드된 부분 (처음 2MB 바이트)은 완전한 파일인 것처럼 Google의 색인 시스템과 웹 렌더링 서비스 (WRS)에 전달됩니다.
- 보이지 않는 바이트: 2MB 기준점 이후에 있는 바이트는 완전히 무시됩니다. 가져오지도, 렌더링되지도, 색인이 생성되지도 않습니다.
- 리소스 가져오기: HTML에서 참조되는 모든 리소스 (미디어, 글꼴, 일부 특이한 파일 제외)는 상위 HTML과 마찬가지로 Googlebot을 사용하여 WRS에 의해 가져옵니다. 이러한 리소스에는 자체적인 URL별 바이트 카운터가 있으며 상위 페이지의 크기에 포함되지 않습니다.
대부분의 웹에서 2MB HTML 페이로드는 매우 크며 이 한도에 도달하는 경우는 없습니다. 하지만 페이지에 과도한 인라인 base64 이미지, 대규모 인라인 CSS/JavaScript 블록이 포함되어 있거나 메가바이트 단위의 메뉴로 시작하는 경우 실제 텍스트 콘텐츠나 중요한 구조화된 데이터가 실수로 2MB 표시를 넘어갈 수 있습니다. 이러한 중요한 바이트를 가져오지 않으면 Googlebot에게는 존재하지 않는 것으로 간주됩니다.
바이트 렌더링
크롤러가 바이트를 성공적으로 가져오면 (한도까지) WRS에 바통을 전달합니다. WRS는 JavaScript를 처리하고 최신 브라우저와 유사한 클라이언트 측 코드를 실행하여 페이지의 최종 시각적 상태와 텍스트 상태를 파악합니다. 렌더링은 JavaScript 및 CSS 파일을 가져와 실행하고 XHR 요청을 처리하여 페이지의 텍스트 콘텐츠와 구조를 더 잘 이해합니다 (이미지나 동영상은 요청하지 않음). 요청된 각 리소스에도 2MB 한도가 적용됩니다.
하지만 WRS는 크롤러가 실제로 가져온 코드만 실행할 수 있습니다. 또한 WRS는 스테이트리스로 작동합니다. 즉, 요청 간에 로컬 스토리지와 세션 데이터를 삭제합니다. 이는 JavaScript에 종속된 동적 요소가 Google 시스템에 의해 해석되는 방식에 특히 영향을 미칠 수 있습니다.
바이트 권장사항
Googlebot이 콘텐츠를 효율적으로 가져오고 이해할 수 있도록 다음 바이트 수준 권장사항을 참고하세요.
- HTML을 간결하게 유지: 무거운 CSS와 JavaScript를 외부 파일로 이동합니다. 초기 HTML 문서는 2MB로 제한되지만 외부 스크립트와 스타일시트는 별도로 가져옵니다 (자체 제한 적용).
-
순서가 중요함: 메타 태그,
<title>요소,<link>요소, 표준 URL, 필수 구조화된 데이터와 같은 가장 중요한 요소를 HTML 문서의 상단에 배치합니다. 이렇게 하면 컷오프될 가능성이 낮아집니다. - 서버 로그 모니터링: 서버 응답 시간을 확인합니다. 서버에서 바이트를 제공하는 데 문제가 있는 경우 크롤러가 인프라의 오버로드를 방지하기 위해 자동으로 중단되므로 크롤링 빈도가 떨어집니다.
이 한도는 확정된 것이 아니며 웹이 발전하고 HTML 페이지의 크기가 커지면서 시간이 지남에 따라 변경될 수 있습니다. (또는 축소, 줄어들기를 바랍니다.)
크롤링은 마법이 아닙니다. 고도로 조정되고 확장된 바이트 교환입니다. 중앙 가져오기 인프라에서 이러한 바이트를 가져오고 제한하는 방식을 이해하면 사이트의 가장 중요한 콘텐츠가 항상 선택되도록 할 수 있습니다.
감사합니다.
비하인드 스토리에 대해 자세히 알아보고 싶으신가요? YouTube의 Search Off the Record 팟캐스트 105화 또는 팟캐스트를 제공하는 다른 플랫폼에서 확인하세요.