작가의 말
요즘 출시되는 애플리케이션의 주요 요구사항 중 하나는 검색 기능이다. 이런 검색 요구사항을 만족시키는 많은 솔루션을 상업용 제품이나 오픈소스 세계에서 찾을 수 있다. 검색에 많이 쓰이는 라이브러리 중 하나는 아파치 루씬(Apache Lucene)이다. 아파치 솔라(Apache Solr), 인덱스탱크(Indextank), 일래스틱서치 같은 많은 검색 솔루션은 루씬 라이브러리를 기반으로 만들어졌다.
일래스틱서치는 클라우드와 분산 컴퓨팅에 사용할 수 있게 개발됐다. Compass(http://www.compass-project.org) 개발자로 유명한 셰이 바논(Shay Banon)은 일래스틱서치의 주요 개발자며, 2010년 3월에 일래스틱서치의 첫 번째 버전을 배포했다. 일래스틱서치의 주목적은 검색 엔진이 되는 것이며, 일래스틱서치를 데이터 저장소로 사용할 수 있고, 집계를 사용해 분석 엔진으로 활용할 수 있다. 일래스틱서치에는 JSON/REST 기능, 맵(Map)/리듀스(Reduce) 접근 방식의 네이티브 분산 처리 기능, 쉬운 설치 기능, 플러그인 확장 기능 같은 획기적인 기능이 많다. 언급한 기능의 상세한 정보와 그 밖의 일래스틱서치 기능을 이 책에서 살펴볼 것이다. 일래스틱서치 이전에는 아파치 솔라가 일래스틱서치의 일부 기능을 제공했었다. 그러나 아파치 솔라는 클라우드에서 동작하도록 설계되지 않았으며, JSON/REST API는 지원하지 않았다. 최근 몇 년 동안, 2012년에 SlorCloud가 출시되면서 이 상황이 조금 변했다. 일래스틱서치와 아파치 솔라 제품을 완벽히 비교하고 싶은 사용자는 라팔 쿡이 쓴 글(http://blog.sematext.com/2012/08/23/solr-vs-elasticsearch-part-1-overview/)을 읽으면 도움이 될 것이다.
일래스틱서치는 계속 진화하는 제품이며, 일래스틱서치 회사(일래스틱서치의 상업성 지원을 제공하는 셰이 바논이 설립한 회사) 는 새로운 기능을 가진 일래스틱서치를 배포하고, 일래스틱서치 사용자는 플러그인(깃허브GitHub에서 주로 내려받을 수 있다)을 배포한다. 2012년에 설립된 일래스틱서치 회사는 총 1억 4백만 불의 자금을 조달했다. 일래스틱서치 회사의 공동 창업자이자 CEO인 스티븐 슈르만(Steven Schuurman)이 일래스틱서치의 성공을 다음과 같이 잘 표현하고 있다. '이렇게 짧은 시간에 투자자로부터 이런 지원을 받았다는 것이 믿기지 않습니다. 이것은 우리가 하고 있는 일의 중요성을 보여줍니다. 비즈니스는 사람과 기계가 만든 데이터를 계속해서 생성하고 있으며, 비즈니스가 새로운 데이터 중심의 프로젝트에서 시작하든, 현재 비즈니스에서 하둡 또는 그 밖의 빅 데이터 투자를 활용해 시도하든, 이 자산에서 가치를 얻을 수 있는 비즈니스가 전략적 목표가 됩니다.' 일래스틱서치는 검색 제품 중 괄목할 만한 실적을 내고 있으며, 5천만 개의 장소를 색인하는 포스퀘어(Foursquare)와 온라인 음악 배포 플랫폼인 SoundCloud, StumbleUpon과 천 4백만 회원을 가진 기업 소셜 네트워크 Xing 같은 고객에게 도움을 주고 있다. 또한 20테라바이트 데이터와 13억 개의 파일을 검색하는 깃허브, 로글리(Loggly)에도 도움을 주고 있다. 로글리 로그파일을 빨리 분석하기 위해, 데이터 클러스터를 색인할 수 있는 키/값 저장소로 일래스틱서치를 사용한다. 나는 일래스틱서치야말로 시장에서 나온 검색 솔루션 중 가장 강력하고, 사용하기 쉽다고 생각한다. 이 책에서 제시한 많은 예제를 통해 독자가 일래스틱서치를 관리할 수 있는 지식, 열정, 모범 사례를 전달하고자 노력했다.
출판사 서평
★ 이 책에서 다루는 내용 ★
■ 일래스틱서치로 최고의 클라우드 토폴로지를 선택하고 플러그인으로 일래스틱서치 기능 확장
■ 색인 단계를 완벽히 제어할 수 있는 맞춤형 매핑 개발
■ 색인과 도큐먼트로 복잡한 질의 생성
■ 분석 집계를 실행한 검색 결과의 최적화
■ 원본 간 데이터를 동기화하고 전달할 수 있는 리버S(QL, NoSQL, 웹 기반) 관리
■ 주요 태스크를 실행할 수 있는 웹 인터페이스 개발
■ 클러스터와 노드 성능 모니터링
★ 이 책의 대상 독자 ★
이 책은 일래스틱서치를 시작하고 싶거나 일래스틱서치에 관한 지식을 좀 더 쌓고 싶은 사용자와 개발자를 대상으로 한다. 일래스틱서치를 이용한 모든 부분을 다루며, 일상적인 사용을 위한 해결책과 힌트를 제공한다. 예제의 복잡도를 낮춰 일래스틱서치가 다루는 내용에 집중할 수 있으며, 일래스틱서치를 쉽고 완벽하게 이해할 수 있다.
이 책의 후반부에서는 자바 및 파이썬 프로그래밍 언어와의 일래스틱서치 통합을 다루며, 사용자에게 일래스틱서치 기능을 자바와 파이썬 기반의 애플리케이션과 어떻게 통합할 수 있는지 보여준다.
12장, ‘플러그인 개발’은 일래스틱서치와 일래스틱서치 핵심 부분의 고급 기능을 다룬다. 따라서 12장을 완벽히 이해하려면 자바에 대한 사전 지식이 필요하다.
★ 이 책의 구성 ★
1장, ‘시작하기’는 일래스틱서치의 기본 개념과 일래스틱서치와의 통신 방법을 소개한다.
2장, ‘다운로드와 설정’은 일래스틱서치를 시작할 수 있는 기본 단계, 간단한 설치부터 다중 노드의 실행까지 다룬다.
3장, ‘매핑 관리’는 색인과 검색 품질을 향상할 수 있는 데이터 필드의 정확한 정의를 알아본다.
4장, ‘기본 작업’은 일래스틱서치에 데이터를 추가하고 관리하는 데 필요한 공통 작업을 살펴본다.
5장, ‘검색, 질의, 필터’는 일래스틱서치의 핵심 검색 기능을 다룬다. 검색 DSL은 일래스틱서치에 질의할 수 있는 유일한 방법이다.
6장, ‘집계’는 일래스틱서치의 또 다른 기능으로, 사용자 경험을 증대시키고, 정보를 깊이 검색하기 위해 검색 결과를 기반으로 분석할 수 있는 기능을 다룬다.
7장, ‘스크립트’는 다양한 프로그래밍 언어를 이용해 일래스틱서치를 스크립트로 사용자 정의하는 방법을 다룬다.
8장, ‘리버’는 데이터베이스, NoSQL 솔루션, 데이터 스트림 같은 여러 원본으로부터 데이터를 가져올 수 있는 기능으로 일래스틱서치를 확장한다.
9장, ‘클러스터와 노드 모니터링’은 일반적인 위험을 이해할 수 있는 클러스터와 노드의 동작을 분석하는 방법을 보여준다.
10장, ‘자바 통합’은 REST와 네이티브 프로토콜을 사용하는 자바 애플리케이션에서 일래스틱서치를 통합하는 방법을 다룬다.
11장, ‘파이썬 통합’은 공식 일래스틱서치 파이썬 클라이언트와 파이썬 스타일로 개발된 PyES 라이브러리 사용 방법을 다룬다.
12장, ‘플러그인 개발’은 다양한 플러그인 타입, 사이트 플러그인과 네이티브 플러그인을 생성하는 방법을 다룬다. 예시에서 플러그인의 뼈대를 보여주고, 개발 프로세스와 빌드 방법을 설명한다.
★ 옮긴이의 말 ★
일래스틱서치는 루씬(Lucene)을 기반으로 만들어졌지만, 복잡한 루씬 API를 쓰지 않고도 쉽게 검색할 수 있게 도와주며, 성능도 탁월합니다. 또한 주키퍼(Zookeeper) 없이 클라우드 환경에서 확장을 쉽게 할 수 있으며, 복제본replica을 지원해 저장된 데이터의 손실이 없게 도와주는 NoSQL입니다.
저는 카카오에서 일래스틱서치를 이용해 서비스를 개발했고 현재 운영하고 있습니다. 현업에서 일래스틱서치를 처음 쓰다 보니 모르는 것도 많고, 배워야 할 것이 많았습니다. 기존의 여러 일래스틱서치 책에서 도움을 받았지만, Rest API뿐 아니라 자바, 파이썬으로 개발하는 방법, 플러그인 개발 방법, 운영 관점의 책이 필요했습니다.
이 책은 DevOps의 실무적인 관점으로 일래스틱서치를 이해할 수 있는 좋은 책입니다. Rest API뿐 아니라 파이썬, 자바 API를 사용해 효율적으로 개발할 수 있는 가이드를 제공합니다. 플러그인을 개발하는 방법도 살펴볼 수 있습니다. 또한 운영 관점에서 HQ나 HEAD 같은 모니터링 플러그인의 유용성을 설명하고, 리버 플러그인을 통해 여타 NoSQL과 연동하는 방법과 플러그인 개발 방법도 다룹니다. 아키텍처와 DevOps 관점으로 일래스틱서치를 살펴볼 수 있는 책을 번역하게 되어 기쁘게 생각합니다.
이 책에서 설명하는 일래스틱서치의 버전은 1.4입니다. 일래스틱서치의 1.x 버전을 사용하는 경우, 이 책을 참조할 수 있습니다. 그러나 최근에 일래스틱서치 2.0이 배포되면서 일부 바뀐 내용이 있습니다. 이와 관련한 상세한 내용은 https://www.elastic.co/guide/en/elasticsearch/reference/current/breaking-changes-2.0.html에서 참조할 수 있으며, 일래스틱서치의 2.0의 공식 문서는 https://www.elastic.co/guide/en/elasticsearch/guide/current/index-doc.html에서 확인할 수 있습니다.