작성일: 2010년 10월 7일 목요일

저희는 입력보다도 빠른 검색 경험을 제공하는 구글 순간검색을 소개해드렸습니다. 이는 사용자가 검색어 입력을 완료하기 전에 검색결과를 얻는 검색입니다. 구글맵스와 지메일도 그랬듯이, 순간검색을 위해 정적인 HTML 페이지를 에이잭스(AJAX) 애플리케이션으로 전환시켰습니다. 보다 자세한 내용은 지난번 블로그 글을 보시면 됩니다만 이런 기능을 만드는 과정에서 설계, 구조 및 로깅에서 저희가 직면했던 여러 기술적 어려움도 여러분과 함께 공유하고 싶었습니다.

설계 과제: 검색결과는 관련성이 높으면서도 사용자의 시야를 방해하지 않아야 한다.

설계상의 핵심 과제는 사용자를 방해하지 않으면서 관련성 있는 결과를 제공해야 한다는 점이었습니다. 저희는 올바른 디자인을 찾기까지 엄청난 테스팅을 거쳐야 한다는 사실을 알고 있었습니다. 그래서 저희는 여러 프로토타입을 만들어보고, 사용자 반응 연구 (지역사회 주민 참여 테스트), 도그푸딩(dogfooding, 구글직원 참여 테스트), 검색실험(search experiments) (소수의 구글 사용자 그룹 테스트)을 거쳤습니다. 초기 프로토타입 중 일부는 완벽하지 않았습니다. 예를 들어 사용자가 입력을 멈출 때까지 기다렸다가 검색 결과를 보여주는 프로토타입도 있었지만, 만족스러운 성과를 거두지 못했습니다. 그리고 속도가 더욱 빨라야 성공적인 결과를 얻을 수 있다는 것을 깨달았습니다. 저희는 확률에 근거해 다양한 검색어 결과를 그룹화해서 보여주는 다른 인터페이스를 고려했습니다.

예를 들면 아래와 같습니다:


<그룹화 검색 결과의 프로토타입>


<혼합 검색 결과의 프로토타입>


그러나 그룹화 또는 혼합해서 검색결과를 보여주는 인터페이스는 검색어 입력을 함과 동시에 모든 검색 결과를 훑어보기란 매우 어려워 보였습니다. 따라서 단일 검색을 기반으로 한 모델을 채택해, 조화롭게 구동되는 두 가지 기능을 생각해냈습니다. 우선 검색창에서 예측 되는 검색어 부분을 회색으로 처리하고, 이어서 사용자가 입력 하는 도중에 상위에 나오는 결과를 실시간으로 업데이트하는 것이었습니다. 사용자 연구 결과를 통해 사람들이 구글과 상호작용하는 새로운 방법을 빠르게 터득하고 있다는 것을 알 수 있었습니다. 즉, 사용자는 회색 부분의 텍스트가 자신이 의도하는 검색어와 일치할 때까지 입력을 계속하며, 그 후에 해당 결과로 시선을 옮긴다는 점입니다. 그러나 구글의 놀라운 속도 때문인지 대부분의 사용자는 변화를 인지하지 못하는 것을 발견했습니다. 순간검색이 얼마나 자연스럽게 접목되고 있는지 확인한 후, 저희도 놀랐습니다.

인프라 도전과제: 기존 표준 검색보다 5 ~ 7배 더 많은 결과 페이지

지난 10년간 구글 검색은 성능과 속도를 최적화하기 위해 노력을 기울여 왔으며, 이를 통해 얻은 교훈은 매초가 중요하다는 점이었습니다. 저희가 인프라팀에게 “구글 순간검색으로 검색어 당 결과페이지가 기존에 비해 5-7배 많아지게 될 것”이라고 하자 처음에는 아연 실색했습니다. 하지만 결국 인프라팀은 이를 가능케 하는 방법을 찾아냈습니다! 순간검색이 나오기 이전에도 구글은 하루에 10 억개 이상의 검색어를 처리했으며, 저희의 시스템은 이러한 검색이 최대한 빠르게 (일반적으로 0.25 초 미만) 가능하도록 최적화돼 있었습니다. 그렇다면 기존의 시스템에서 오류나 지연 없이 더 많은 검색 결과가 나오게 할 수 있었던 비결은 무엇일까요?

한 가지 방법은 단순히 서버 용량을 대폭 늘리는데 투자하는 것이었습니다. 하지만 저희는 이 보다 현명한 방법을 찾고 싶었습니다. 저희는 시스템의 백 엔드(back-end) 용량을 증가 시키기도 했지만, 동시에 다양한 전략을 효과적으로 추진해 순간검색의 엄청난 테이터 처리 수요를 해결했습니다. 이들 중 일부는 매우 기술적이며, 다음은 이와 같은 예를 정리한 내용입니다.

-지속적으로 크롤링(crawl) 및 색인 재생성(re-index) 작업을 함과 동시에, 항상 최신의 결과 페이지를 유지하면서 빠른 요청 속도를 처리할 수 있는 새로운 캐시를 개발했습니다.

-사용자에게 이미 보여진 결과 페이지를 추적하기 위해 사용자 속성 데이터를 백엔드에서 처리하도록 했습니다 – 이렇게 하면 동일한 결과를 반복적으로 가져 올 필요가 없기 때문입니다.

-저희는 이 시스템의 나머지 부분은 웹 브라우저가 처리할 수 있도록 페이지- 렌더링 자바 스크립트를 최적화했습니다.

결국 이 같은 노력 끝에 여러분에게 순간검색을 선보일 수 있게 되었으며, 동시에 사용자가 구글에 기대하는 수준의 빠른 검색 속도는 그대로 유지했습니다.

엔지니어링 팀

구글 순간검색 프로젝트가 막바지에 이르자 저희는 핵심 개발팀을 본사 건물 내 두 개의 커다란 방으로 모은 뒤, 매일 50 명 이상의 사람들이 참여하는 스탠딩 회의를 했습니다. 이러한 힘든 과정 끝에 순간검색을 세상에 내놓게 되어 매우 기쁘게 생각합니다! 하지만, 이는 “대화형” 상호작용 검색의 시작에 불구합니다. 항상 그래왔듯이 구글은 새로운 시도를 추구해 나갈 것입니다. 그리고 여러분의 피드백에 힘입어 순간검색을 꾸준히 발전시킬 수 있길 고대합니다! 지금으로선 매우 큰 변화이지만, 언젠가는 지난날을 뒤돌아보며, 순간검색이 없는 검색을 떠올리기 힘든 날이 올 것이라 믿습니다.

구글 순간검색 개발팀 일원들이 순간검색 출시 발표를 지켜보고 있다.

작성자: 구글 책임 엔지니어(Distinguished Engineer) 벤 곰스 (Ben Gomes)