다음 검색품질, ‘하둡’으로 높인다

“어떻게 하면 좋은 검색 결과를 만들 수 있을까.”

김용우 다음커뮤니케이션 검색품질팀원을 비롯한 다음 검색개발팀이 항상 고민하는 주제다. 사용자는 다음 웹사이트에 들어가 파란색 네모칸 안에 검색어를 입력하면 끝일지 모른다. 하지만 뒷단에서 이를 다루는 이들은 어떻게 하면 검색 품질을 높일 수 있을지 고민한다.

검색품질이란 사용자가 검색어를 입력했을 때, 검색결과 가치 대비 사용자가 만족하기까지 걸리는 시간을 뜻한다. 짧은 시간 안에 사용자가 원하는 자료가 담긴 검색 결과가 나와야 검색품질이 높다고 볼 수 있다.

떠올려 보자. 파란색 네모칸에 검색어를 입력하면 검색결과가 나오기까지 채 1초도 걸리지 않는다. 그 사이 검색창 뒤에서는 수많은 컴퓨팅 작업이 일어난다. 먼저, 사용자가 입력한 단어를 컴퓨터가 처리하게 쉬운 형태로 바꾼다. ‘홍대 근처 맛집’이라고 검색하면 ‘홍대+근처+맛집’이라는 식으로 쪼개 이를 컴퓨터가 이해하는 쿼리로 바꾼다. 컴퓨터는 쿼리를 받은 뒤 이에 해당하는 데이터를 모아 정리한다. 이렇게 나온 결과는 다시 사람이 알아볼 수 있는 형태로 만들어져 화면에 뿌려진다. 이 모든 작업을 1초 안에 처리해 사용자에게 보여준다.

“다음은 사용자가 원하는 검색결과를 제공해주기 위해 검색 로그를 활용하고 있습니다. 검색 로그엔 사용자가 언제 어떤 검색 결과를 입력했고, 어떤 검색결과를 찾고, 어떤 식의 경험을 했는지에 대한 정보가 담겨있지요. 사용자가 입력한 주제에 걸맞은 환경을 보여주기 위해선 장기적으로 데이터를 쌓은 다음 검색 의도를 파악해 결과를 제공해야 합니다.”

하루 이틀 분석한 결과물을 검색결과로 노출하는 게 아니다. 최소한 수개월 이상 검색 로그를 분석해 이를 바탕으로 검색 결과를 보여준다. 문제는 수개월 동안 엄청난 속도로 쌓이는 데이터다. 한 사람이 하루에 한 번 다음 웹사이트에 들어가 딱 한 번 검색한다고 해도, 6개월이면 180개다. 4천만 국민이 검색한다고 가정해보자. 720만개다. 하루에 수도 없이 검색을 한다고 할 때 몇 달간 실로 어마어마한 속도로 검색 로그가 발생한다. 오죽하면 다음 내부에선 이렇게 급증하는 데이터를 기존 컴퓨팅 시스템이 따라잡지 못할 것 같다는 얘기가 나왔을까.

다행히도 이렇게 급증하는 대용량 정보를 안정적으로 관리할 수 있는 도구가 존재한다. 더그 커팅이 개발한 대용량 데이터 병렬처리 도구인 ‘하둡’이다. 하둡은 분산 파일 시스템의 일종으로 사실상 대용량 데이터 처리 플랫폼의 표준으로 통한다. 국내 이동통신사를 비롯해 인터넷 서비스 업체들은 앞다퉈 하둡을 도입해 대용량 데이터를 처리하고 있다.

2009년 말 다음은 검색품질 향상을 위해 하둡을 도입했다. 초창기 검색 서비스를 제공할 때 간단하게 데이터를 분석할 일이 있었는데, 메모리에 데이터를 올리고 처리하는 시간이 오래 걸려 고민하던 중 하둡을 도입한 게 시작이었다. 초창기 클러스터 서버 6개로 시작한 하둡 인프라는 이제 다음 검색 인프라 시스템 전반에 걸쳐 사용되고 있다.

다음은 검색에 활용하는 문서 데이터, 검색 로그, 검색 관련한 데이터를 모두 하둡에 담는다. 원시 데이터 형태로 입력된 그 자체로 넣은 뒤 이를 다시 분석하는 식이다. 다음은 검색 로그 정보를 바탕으로 사용자가 검색을 통해 찾고자 하는 정보를 정확하게 전달하려고 하는 데 하둡을 도입했다. 하둡 바탕의 데이터 처리를 통해 검색 인프라가 사용자에게 적절한 콘텐츠를 전달할 수 있게 검색 플랫폼을 구성하는 식이다.

예를 들어 ‘라면 맛있게 끓이는 비법’이라는 검색어를 입력한 사용자가 있다 치자. 검색팀은 해당 문장을 입력한 후 나온 결과 중 사용자들이 가장 높은 만족도 또는 클릭률을 보였던 검색 로그를 분석해 검색결과 순위를 매긴다. 집단지성을 활용한 셈이다.

“겉보기엔 쉬운 이 작업결과를 얻으려면 반년치 검색 로그를 분석해야 합니다. 그 양이 40TB에 이르지요.”

각 문서에 나온 단어를 사용자가 입력한 문서와 비교하고, 어떤 검색어와 단어가 만났을 때 사용자 반응률이 높았는지 등 수많은 변수가 서로 더해져 계산된다. 매우 복잡하고 방대한 계산이다. 다음은 맵리듀스를 통해 각 변수 특정 값을 설정한 다음 이를 그룹으로 묶어 계산한 뒤 다시 합친다.

“하둡을 사용하지 않았을 때는 이와 같은 분석을 하는 데 6일이 걸렸습니다. 이제는 2시간이면 됩니다.”

과거엔 분석하고 싶었지만, 비용이나 시간 문제로 분석하지 못했던 데이터가 허다했다. 그러나 하둡이 등장하고 좀 더 비용을 절감하면서 데이터를 분석할 수 있게 되자 데이터를 바라보는 자세가 능동적으로 바뀌게 됐다.

“더는 대용량 데이터를 분석할 때 표본을 뽑아야 할 이유가 없게 됐습니다. 하둡은 표본 없이도 결과가 금방 나옵니다.”

현재 다음이 검색 쿼리를 위해 사용하고 있는 하둡 플랫폼은 90개가 넘는 노드로 구성됐다. 사용되는 하둡 클러스터는 2개로, 각 노드의 하드웨어 스펙은 조금씩 다르다. 일반적으로 2x 쿼드코어, 8GB 램, 4TB 하드디스크와 4x 쿼드코어, 16GB 램, 4TB 하드디스크 정도의 사양이다.

하지만 이런 작업도 처리해야 할 데이터양 양이나 건수, 서비스 규모를 파악하지 못하면 소용없다. 내부 기술 인력이 든든하게 뒷받침돼야 하둡을 원활하게 도입해 활용할 수 있다. 김용우 팀원도 다음 내 많은 개발 조직이 직접 하둡을 다루고 운영하면서 그 실력을 쌓았기에 가능했다고 설명했다. 실제로 그 역시 초창기 하둡을 도입하면서 여러 실패 요인을 겪었다. 그 중 가장 흔하게 겪은 일이 디스크 장애다.

하둡은 기존의 관계형 데이터베이스 관리 시스템(RDBMS) 방식으로 처리하기 어려운 데이터를 일정한 크기의 데이터로 나눈 뒤 이를 여러 서버에서 처리한다. 그다음 이렇게 처리된 결과를 모아 묶는 식이다. 게다가 하둡은 데이터 손실을 막기 위해 매무 많은 곳에 데이터를 복제한다. 즉, 여러 디스크에서 데이터를 읽고 쓰는 작업이 빈번하게 발생한다.

“하드웨어를 많이 사용하면 할수록 장애 발생 확률이 높아지지요. 저희도 처음에 디스크 장애를 자주 경험했습니다. 이 부분만 주의해서 다룬다면 하둡은 대용량 데이터를 처리하는 데 있어 최고의 도구라고 볼 수 있습니다.”

[slideshare id=14729540&doc=devon2012o2dataanalysisatdaum-121015030214-phpapp02]

김용우 다음커뮤니케이션 검색품질팀원 발표 자료 보기

블로터닷넷 엔터프라이즈, 클라우드, 기업용 SW를 담당합니다. 하루가 다르게 변화하는 IT 세상에 조금이라도 더 빨리 적응하기 위해 노력중. 마음과 몸이 자라는 기자가 되겠습니다. izziene@bloter.net, @izziene

  • 구글플러스

    블로터 아카데미, 북스, 컨퍼런스 그리고 블로터TV

    아카데미 | Academy

    북스 | Books

    컨퍼런스 | Conference

    블로터 | TV