2024년 12월 3일 화요일
웹페이지가 Google 검색 결과에 표시되려면 먼저 Google 검색에서 약간의 작업이 필요하다고 들어본 적이 있으실 겁니다. 그중 한 단계가 크롤링입니다. Google 검색 크롤링은 Google 서버에서 실행되는 프로그램인 Googlebot이 수행합니다. Googlebot은 URL을 검색하고 네트워크 오류, 리디렉션 및 웹에서 작업하는 동안 발생할 수 있는 기타 사소한 문제를 처리합니다. 하지만 자주 언급되지 않는 몇 가지 세부정보가 있습니다. 이번 달에는 사이트 크롤링 방식에 큰 영향을 미칠 수 있는 이러한 세부정보 몇 가지를 매주 살펴보겠습니다.
복습: 크롤링이란 무엇인가요?
크롤링은 새 웹페이지를 발견하고 업데이트된 웹페이지를 다시 방문하여 다운로드하는 프로세스입니다. 간단히 말해 Googlebot은 URL을 가져와 이를 호스팅하는 서버에 HTTP 요청을 한 다음 해당 서버의 응답을 처리하여 리디렉션, 오류 처리, 페이지 콘텐츠를 Google의 색인 생성 시스템으로 전달하는 등의 작업을 수행합니다.
하지만 최신 웹페이지는 순수한 HTML만 있는 것이 아닌데 페이지를 구성하는 다른 리소스는 어떻게 될까요? 이러한 리소스를 크롤링하면 '크롤링 예산'에 어떤 영향을 미칠까요? 리소스를 Google 측에서 캐시할 수 있나요? 이전에 크롤링되지 않은 URL과 이미 색인이 생성된 URL에는 차이가 있을까요? 이 게시물을 통해 이러한 질문에 답변해 드리겠습니다.
Googlebot 및 페이지 리소스 크롤링
최신 웹사이트는 HTML 외에도 JavaScript, CSS 등 다양한 기술을 조합하여 사용자에게 생생한 환경과 유용한 기능을 제공합니다. 브라우저로 이러한 페이지에 액세스하면 브라우저는 먼저 사용자를 위해 페이지 빌드를 시작하는 데 필요한 데이터(페이지의 HTML)를 호스팅하는 상위 URL을 다운로드합니다. 이 초기 데이터에는 JavaScript 및 CSS와 같은 리소스에 대한 참조뿐만 아니라 브라우저가 최종 페이지를 구성하기 위해 다시 다운로드하여 사용자에게 표시되는 이미지와 동영상도 포함될 수 있습니다.
Google도 정확히 동일한 작업을 실행하지만 약간의 차이가 있습니다.
- Googlebot은 상위 URL(페이지의 HTML)에서 초기 데이터를 다운로드합니다.
- Googlebot은 가져온 데이터를 웹 렌더링 서비스(WRS)에 전달합니다.
- WRS는 Googlebot을 사용하여 원본 데이터에 참조된 리소스를 다운로드합니다.
- WRS는 사용자의 브라우저처럼 다운로드한 모든 리소스를 사용하여 페이지를 구성합니다.
브라우저에 비해 페이지 렌더링에 필요한 리소스를 호스팅하는 서버의 감지된 부하와 같은 스케줄링 제약 조건으로 인해 각 단계 사이의 시간이 훨씬 더 길어질 수 있습니다. 이때 크롤링 예산을 고려해야 합니다.
페이지를 렌더링하는 데 필요한 리소스를 크롤링하면 해당 리소스를 호스팅하는 호스트 이름의 크롤링 예산이 줄어듭니다. 이를 개선하기 위해 WRS는 렌더링하는 페이지에서 참조되는 모든 리소스(JavaScript 및 CSS)를 캐시하려고 시도합니다. WRS 캐시의 TTL(수명)은 HTTP 캐싱 지시어의 영향을 받지 않습니다. 대신 WRS는 최대 30일 동안 모든 항목을 캐시하여 다른 크롤링 작업에 사용할 사이트의 크롤링 예산을 보존하는 데 도움이 됩니다.
사이트 소유자의 입장에서 크롤링하는 방법과 리소스를 관리하는 것은 사이트의 크롤링 예산에 영향을 미칠 수 있는 문제이므로 다음을 권장합니다:
- 사용자에게 우수한 환경을 제공할 수 있도록 가능한 한 적은 리소스를 사용합니다. 페이지 렌더링에 필요한 리소스가 적을수록 렌더링 중에 크롤링 예산이 적게 소요됩니다.
- 캐시 무효화 매개변수를 신중히 사용하세요. 리소스의 URL이 변경되면 콘텐츠가 변경되지 않았더라도 Google에서 리소스를 다시 크롤링해야 할 수 있습니다. 당연히 크롤링 예산도 소모됩니다.
- CDN을 사용하거나 다른 하위 도메인에 리소스를 호스팅하는 등 기본 사이트와 다른 호스트 이름으로 리소스를 호스팅합니다. 이렇게 하면 크롤링 예산 문제가 리소스를 제공하는 호스트로 이전됩니다.
이 모든 사항은 미디어 리소스에도 적용됩니다. Googlebot(구체적으로는 각각 Googlebot-Image
및 Googlebot-Video
)이 미디어 리소스를 가져오면 사이트의 크롤링 예산이 소모됩니다.
목록에 robots.txt도 추가하고 싶을 수 있으니 렌더링 시 리소스 크롤링을 허용하지 않으면 일반적으로 문제가 발생합니다. WRS가 렌더링에 중요한 리소스를 가져올 수 없는 경우 Google 검색에서 페이지의 콘텐츠를 추출하고 페이지가 검색 순위에 오르는 데 문제가 발생할 수 있습니다.
Googlebot 크롤링이란 무엇인가요?
Google에서 크롤링하는 리소스를 분석하는 가장 유용한 소스는 브라우저와 크롤러에서 모두 요청한 모든 URL 항목이 포함된 사이트의 원시 액세스 로그입니다. Google은 액세스 로그에서 Google 크롤러를 식별할 수 있도록 개발자 문서에 IP 범위를 게시합니다.
두 번째로 유용한 리소스는 크롤러별로 각 리소스 유형을 분류하는 Search Console 크롤링 통계 보고서입니다.

마지막으로 크롤링과 렌더링에 관심이 있고 다른 사용자의 생각도 궁금하다면 검색 센터 커뮤니티를 방문하세요. LinkedIn에서도 확인할 수 있습니다.
업데이트
- 2024년 12월 6일 업데이트: 다른 출처의 리소스를 게재할 때 성능에 미치는 영향이 확인되었습니다.
크롤링에 대해 자세히 알아보시겠어요? 12월 크롤링 시리즈 전체를 확인해보세요.
Google Cloud 문서
Google Cloud 제품 및 서비스 관련 종합적인 문서, 가이드, 리소스
Google Ads API
대규모 Google Ads 계정 및 캠페인을 관리하는 도구를 만들 수 있습니다.
Genkit
Code-first framework for orchestrating, deploying, and monitoring generative AI workflows.
Blockly 접근성 개요
개발자, 학생, 조직을 위해 접근 가능한 블록 기반 프로그래밍을 지원하기 위한 Blockly의 노력
Android Developers
Discover the latest app development tools, platform updates, training, and documentation for developers across every Android device.
Privacy Sandbox
쿠키, 광고, ID, 맞춤설정, 사기 방지를 위한 개인 정보 보호 중심의 API 및 업데이트
Chrome Extensions
Chrome 확장 프로그램 개발 방법을 알아보세요.
Firebase Remote Config
앱 업데이트를 게시하지 않고도 일일 활성 사용자 수 제한 없이 무료로 앱의 동작과 디자인을 변경할 수 있습니다.
Google Maps Platform
수백만 개의 웹사이트와 앱이 Google Maps Platform을 사용하여 사용자에게 효과적인 서비스 환경을 제공하고 있습니다.
Gemini Code Assist 개요
Gemini Code Assist Standard 및 Enterprise에서 사용할 수 있는 기능을 간략하게 설명합니다.
Vertex AI 문서
개발자가 비즈니스 요구에 맞게 고품질 모델을 학습시킬 수 있는 머신러닝 도구 제품군인 Vertex AI 문서입니다.
로깅으로 Gemini Code Assist 측정항목 생성
Gemini Code Assist 사용량 측정항목의 일일 사용량 그래프를 만드는 방법을 설명합니다.
Firebase Test Lab
Firebase Test Lab은 다양한 기기와 구성에서 앱을 테스트할 수 있는 클라우드 기반 앱 테스트 인프라이므로 실제 사용자에게 어떻게 제공되는지 더 잘 이해할 수 있습니다.
Cloud Storage for Firebase
Firebase용 Cloud Storage는 Google의 규모를 활용한 강력하고 단순하며 경제적인 객체 스토리지 서비스입니다.
Firebase Performance Monitoring
Firebase Performance Monitoring은 개발자가 Apple, Android, 웹 앱의 성능 특성을 파악하는 서비스입니다.
Firebase In-App Messaging
Firebase In-App Messaging helps you engage your app's active users by sending them targeted, contextual messages that encourage them to use key app features.
Firebase Hosting
Firebase 호스팅은 정적 웹 앱과 단일 페이지 웹 앱을 위한 빠르고 안전한 호스팅을 제공합니다.
Firestore
Firestore는 Firebase 및 Google Cloud의 모바일, 웹, 서버 개발에 사용되는 유연하고 확장 가능한 데이터베이스입니다.
Cloud Functions for Firebase
Firebase용 Cloud Functions는 Firebase 기능과 HTTPS 요청에 의해 트리거되는 이벤트에 응답하여 백엔드 코드를 자동으로 실행할 수 있는 서버리스 프레임워크입니다.
Firebase App Distribution
Firebase 앱 배포를 사용하면 신뢰할 수 있는 테스터에 앱을 쉽게 배포할 수 있습니다. 테스터 기기에 앱을 빠르게 제공하여 앱에 대한 의견을 조기에 자주 받을 수 있습니다. 또한 앱에서 Crashlytics를 사용하면 모든 빌드의 안정성 측정항목을 자동으로 얻게 되므로 출시 시기를 파악할 수 있습니다.
Firebase Realtime Database
Firebase의 유연한 NoSQL 실시간 데이터베이스입니다.
Gemini in Firebase
"Firebase의 Gemini는 Firebase 제품 및 기능에 대한 질문의 답을 얻고 개발을 위한 코드를 생성 및 설명하며 문제 해결 프로세스를 단축하는 데 도움이 되는 AI 지원 도구입니다."
Firebase Cloud Messaging
Firebase 클라우드 메시징(FCM)은 무료로 메시지를 안정적으로 전송할 수 있는 크로스 플랫폼 메시징 솔루션입니다.
Firebase App Check
앱 체크는 수신 트래픽이 내 앱에서 유입되고 있음을 증명하고 유효한 사용자 인증 정보가 없는 트래픽을 차단하여 앱의 악용을 방지합니다.
Firebase App Hosting
Firebase App Hosting is a framework that provides serverless hosting for modern, full-stack and AI web apps.
Firebase Authentication
Firebase 인증을 사용하면 코드 몇 줄만으로 손쉬운 사용자 인증, 로그인, 온보딩을 위한 엔드 투 엔드 ID 솔루션을 앱에 추가할 수 있습니다.
Firebase Crashlytics
Firebase Crashlytics는 가벼운 실시간 비정상 종료 보고 도구로 앱 품질을 저하하는 안정성 문제를 추적하고 우선순위를 지정하고 문제를 해결하는 데 도움이 됩니다.
Firebase Extensions
생산성 향상을 위해 설계된 Firebase Extensions는 코드를 직접 연구, 작성 또는 디버깅할 필요 없이 앱에 확장된 기능을 제공합니다.
Android Studio for Platform
Android 스튜디오는 Android 앱에 최적화된 통합 개발 환경(IDE)을 앱 빌더에게 제공합니다. 지금 Android 스튜디오를 다운로드하세요.
Vertex AI in Firebase
Build AI-powered mobile and web apps and features with the Gemini API using Vertex AI in Firebase