Search Engine/IR Papers2009. 2. 21. 15:41


제목: 구글을 지탱하는 기술 - 6점
지은이: 니시다 케이스케
옮긴이: 김성훈
감수자: 전병국
출판사: 멘토르
출간일 : 2008-12-01
ISBN(13) : 9788963050041
반양장본| 376쪽| 214*153mm

이 책은 구글을 지탱하는 기술중에서 스케일러블(확장 가능한) 컴퓨팅을 구현하기 위한 구글의 검색서비스 기반의 기술들에 대한(기술만) 소개한 책이다.

아쉽게도 내 관심사도 아니며, 내가 아는 지식의 협소함으로 인해 대략적인 이해 이상을 할 수가 없다.

이 분야에 관심을 두게 되면, 한번 꺼내서 다시 읽어보면 좋을 듯 하다.

책에서 소개된 개념과 구글의 논문들을 검색해서 링크해 둔다.

1998 - 대규모 하이퍼텍스트 웹 검색엔진 해부, 세르게이 브린, 래리 페이지
(The Anatomy of a Large-Scale HyperTextual Web Search Engine)

구글의 창업자인 브린과 페이지의 새로운 웹 검색엔진에 대한 설계의 성과가 세상에 알려진 순간의 논문이다.

이 논문에는 페이지 랭크, 크롤링, DocID(Doc Index), 랭킹 정보 인덱스등의 기본 설계가 들어있다고 한다.(나는 읽어보질 않아서리...)
Web Search for a Planet: The Google Cluster Architecture
           -  Luiz Barroso, Jeffrey Dean, and Urs Hoelzle
 구글의 첫번째 논문 이후 5년만에 발표된 논문이다. 전세계적 규모의 서비스를 위한 분산처리를 위한 검색 클러스터 아키텍처를 소개하고 있다.

구글 파일 시스템(Google File System - 2003) - Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung
GFS 로 알려진 구글의 분산 파일 시스템에 대한 논문이다. 이 책의 3장은 이 논문에 대한 요약설명이다.
Bigtable: A distributed Storage System for Structured Data - 2006
분산시스템에서 대용량 데이터를 관리하기 위한 구글의 데이타 저장 모델이다.
구글에서는 자신들의 표준 데이타 포맷인 프로토콜 버퍼를 사용하고 있다.

The Chubby lock service for loosely-coupled distributed systems - 2006
Paxos Made Live-An Engineering Perspective - 2007

GFS와 Bigtable 이라는 구글의 분산 시스템에서 사용하는 작은 분산 시스템으로 전체 분산 스토리지의 근간이 되는 Chubby 를 소개하고 구현에 대해 다룬 논문이다.

MapReduce: Simplified Data Processing on Large Clusters - 2004
축적된 데이타를 실제로 어떻게 처리하는지에 대한 핵심 기술중의 하나인 MapReduce 를 소개하는 논문이다.

참조: Condor
구글에서는 Work Queue(분산 머신의 작업량의 부하에 따라 적절하게 작업을 배분하는 기능이다.) 의 설계와 관련하여 상세한 자료를 공개하지 않고 있다. 이와 유사한 시스템으로 한정된 시스템에서 대용량 데이타를 처리하는 시스템으로 Condor 가 있다.

구글은 그들이 만든 GFS와 Bigtable에서 MapReduce 를 효율적으로 하기 위해, 새로운 스크립트 언어를 만들었다.
Interpreting the Data: Paralle Analysis with SawZall - 2005
위 논문은 구글의 분산 스크립트 언어인 SawZall을 소개하고 있다.

대규모 분산 시스템을 위한 오픈 소스 프로젝트 - Hadoop
Hadoop은 미국 Yahoo!가 중심이 되어 개발하고 있는 분산 시스템으로서 이미 GFS를 대신하는 HDFS와 Hadoop 버전 MapReduce 를 구현했고, Bigtable을 대신할 HBase 와 같은 소프트웨어를 만들고 있다. SawZall을 대신할 pig 라는 프로젝트도 시작하였다. 워싱턴 대학에서는 분산 시스템 수업을 Hadoop을 이용하여 MapReduce를 실습하고 있다.(Google Code For Educators)
이미 구축된 대규모 분산 시스템은 Amazon 이 EC2(Elastic Compute Cloud)로 제공하고 있으며, 빌려 쓸 수 있다.
또한 일본의 라쿠텐 기술연구소에서는 Ruby 를 이용한 분산 시스템 개발을 표명하고 있다.

5장은 구글의 운용비용에 대해서 아주 흥미있는 글들이 있다.
The Price of Performance: An Economic Case for Multiprocessing - 2005
High-efficienty power supplies for home computers and servers - 2006
Power Provisioning for warehouse - sized Computer - 2007
아무리 구글이 저렴한 하드웨어로 분산처리를 위한 아키텍처를 구성하고 있다고 하지만, 전기사용료와 같은 비용이 만만치 않을 것이다. 위 논문은 전력성능에 대한 연구 논문이다.
그러한 연구를 바탕으로 구글은 현재의 PC 전원의 문제점을 개선하기 위해
Climate Savers Computing Initiative 라는 단체를 Intel, Dell 등의 하드웨어 제조사들과 함께 발족하였다.

데이타가 많아지면, 가장 관심이 있어지는게 디스크드라이브의 손실과 고장을 피하는 방법이다.
구글 역시 이러한 연구를 한 흔적을 그들의 방대한 디스크 드라이브 이용 상황을 조사해 보여주고 있다.

Failure Trends in a Large Disk Drive Population - 2007

이 논문을 통해 디스크드라이브의 고장에 뚜렷한 영향이 있는 지표를 얻는 것을 목표로 하고 있지만, 아직 뚜렷한 지표는 얻지 못한 것으로 보인다.
우리가 흔히 알고 있는
  • 하드 디스크에 자주 액세스하면 고장이 나기 쉽다.
  • 온도가 높을 수록 고장이 나기 쉽다.
는 이른바 통설에 지나지 않음을 위 논문은 보여주고 있다.

구글의 데이타 센터들
  1. 2006년 오리건주 댈러스
  2. 2008년 노스캐롤라이나 주 레노어
  3. 2008년 사우스캐롤라이나 주 버클리 카운티
  4. 2008년 오클라호마 주 프라이어
  5. 2008년 아이오와 주 카운실 블럽스
2008년에 급격하게 늘어난 구글의 방대한 데이타센터는 새로운 검색엔진을 요구하고 있다.
새로운 요구는 검색엔진의 프레임워크를 바꾸는 것이며, 2005년 말에서 2006년 초에 구글의 데이타 센터에 도입된 Bigdaddy 가 그러한 시스템이다. 구글의 스팸대책 팀을 맡고 있는 Matt Cutts 의 블로그에서 그 모습을 엿볼수 있다.

이 책의 마지막 장은 구글의 개발 체제를 다루고 있다.
자주성을 중시하는 구글의 개발문화와 개발환경과 테스트의 자동화에 대한 간단한 소개글이다.
책의 앞장의 구글의 검색기술에 대해서는 위에서 소개한 논문의 요약이기 때문에 굳이 책을 사 볼 필요는 없으나, 마지막 장은 책을 번역한 사람의 정성을 고려하여 요약하지 않기로 한다.


궁금한 사람은 책을 사서 보기 바란다.


차례.

추천사
감수자 서문
서문

1장 구글의 탄생
1. 검색엔진의 진화
이용자의 편의성을 가장 먼저 생각한다
하드웨어를 확장한다
웹 페이지에 순위를 매기다
Column 페이지랭크의 현재
2. 검색엔진의 구조
검색엔진의 3요소
검색 서버의 역할
검색 백엔드의 역할
인덱스의 역할
검색에 적합한 인덱스 구조
데이터 구조를 색인한다
3. 크롤링-온 세상의 웹 페이지를 수집한다
기능적인 시스템 오류
Column “마음에 드셨나요?”
웹 페이지 수집에는 시간이 걸린다
여러 개의 다운로드를 동시에 진행한다
끝나지 않는 크롤링
4. 인덱스 생성-검색용 데이터베이스를 만든다
웹페이지의 구조 해석
단어 정보의 인덱스
링크 정보의 인덱스
랭킹 정보의 인덱스
검색 순위
5. 검색 서버-요청하는 정보를 즉석에서 찾아낸다
검색 결과에 순위를 매기다
복잡한 검색도 빠르게 실행한다
3단계 랭킹 시스템
구글의 기술력 파헤치기!

2장 구글의 공룡화
1. 인터넷을 검색하는 거대 시스템
값싼 PC를 대량으로 이용한다
하나의 시스템으로 연결한다
숫자만 늘린다고 능사는 아니다
CPU와 HDD를 알뜰하게 활용한다
검색엔진을 개량하자
2. 세계로 눈을 돌린 검색 클러스터
전 세계로 제공되는 웹 검색 서비스
가까운 데이터 센터로 접속한다
다수의 서버로 부하를 분산한다
일정한 페이지별로 인덱스를 분할한다
많은 인덱스를 한번에 검색한다



Posted by BAGE