엔지니어링

Elasticsearch 2.0.0 GA 출시

Elasticsearch 1.0.0 출시 이후 추가된 477명의 committer들이 제출한 2,799건의 pull request의 반영과Lucene 5.2.1이 기반이 된 Elasticsearch 2.0.0 GA 의 출시를 발표하게 되어 자랑스럽게 생각합니다.

충분하지 않을 수도 있지만 버전 2.0.0 Shield security 및 Watcher alerting plugin이 추가되었으며, 완전히 새롭고 간결해진 Marvel 모니터링 plugin 이 자유롭게 사용 가능합니다. 또한 새로운 open source인 Sense 편집기가 추가되었습니다.

다음에서 Elasticsearch 2.0.0을 다운로드 하고 2.0.0의 중요한 변경사항을 확인할 수 있습니다. 전체 변경사항 목록은 다음에서 확인할 수 있습니다.

상용 plugin의 변경 이력은 다음에서 확인할 수 있습니다.

Elasticsearch의 새로운 기능

Elasticsearch 2.0.0의 획기적인 새로운 기능은 다음과 같습니다.

Pipeline Aggregations

파생 데이터, 평균의 변화, 그리고 다른 aggregation에 대한 산술 변화를 집계하는 기능입니다. 클라이언트 프로그램에서만 실행 가능하던 이 기능들이 이제 Elasticsearch에서 더욱 쉽고 강력한 분석 쿼리들을 통해 수행됨으로써 클라이언트의 코드를 상당량 단순화시키는 것이 가능해졌습니다. 이 기능을 통해 예측적 분석 및 비정상 패턴을 검출하는 역량이 크게 향상될 것입니다. Pipeline Aggregations에 대한 자세한 내용은 다음에서 확인할 수 있습니다.

쿼리/필터 병합

더 이상 필터는 없습니다. 모든 필터 문법이 쿼리 문법으로 대체되었습니다. 쿼리 문법을 사용하면 관련성 순위 결정에 필요한 점수를 반영하는 반면에, 필터 문법은 단순히 문법과 매치되지 않는 도큐먼트들을 배제시키는 역할만 합니다. 이러한 문법의 재구성은 가능한 가장 효율적인 순서로 쿼리 실행이 자동으로 최적화될 수 있음을 의미합니다. 예를 들어, phrase와 geo 쿼리와 같이 시간이 오래 걸리는 쿼리는 빠른 쿼리를 먼저 실행해 대상을 줄이고, 다시 조금 더 느린 단계를 통해 정확한 의미의 문구를 찾아갑니다. 필터 과정에서 자주 사용되는 절은 적절한 상황에서 자동으로 캐시에 저장됩니다. 자세한 내용은 "Elasticsearch 2.0에서 향상된 쿼리 실행 방법"에서 확인할 수 있습니다.

구성 가능한 압축 저장

_source 필드와 같이 저장용 필드를 빠른 속도를 위한 LZ4(기본값), 또는 더 감소한 index 크기를 위한 DEFLATE로 압축할 수 있습니다. 이 방식은 특히 로그 분석에서 최적화(ontimize) 전에 과거의 인덱스를 best_compression 으로 전환될 수 있는 경우에 유용합니다. 자세한 내용은"Lucene과 Elasticsearch에서 압축 저장"에서 확인할 수 있습니다.

강화

이제 Java Security Manager 아래에서 Elasticsearch이 실행되므로 보안 측면이 크게 강화됩니다. Java Security Manager는 Elasticsearch의 악용을 어렵게 하고 해커가 시스템에 미칠 수 있는 영향을 제한합니다. 인덱싱 측면에서도 Elasticsearch가 보강되었습니다.

  • 이제 색인 요청이 durable-by-default를 쓰기 위한 상태로 승인되기 전에 도큐먼트가 디스크로 먼저 fsync(동기화)됩니다.
  • 조기에 손상을 검출할 수 있도록 모든 파일에 checksum이 적용됩니다.
  • 파일의 부분 변경을 차단하기 위해 모든 파일은 atomic rename 속성을 가집니다.

마지막으로, 시스템 관리자들로부터 수차례 요청되었던 구성하지 않은 노드가 공용 네트워크로부터 바인딩되는 것을 차단합니다: Elasticsearch는 이제 기본적으로 로컬 호스트(localhost)에만 바인딩되며, 유니캐스트의 주 사용을 위해 멀티캐스트를 제거하였습니다.

성능 및 탄력성

위의 사항 말고도 Elasticsearch와 Lucene에는 시스템 안정성, 신뢰성, 시스템 구성 간편성을 높여주는 작은 변경사항들도 많이 있습니다. 다음은 그 중 몇 가지입니다.

  • doc-values-by-default를 적용하여 힙 사용량을 낮추고, merge 과정에 필요한 메모리를 줄였으며, 필터 캐싱에 roaring bitsets을 적용하였습니다.
  • 구조적, 읽기 가능, 예외
  • 자동 조절을 위한 설정 대신 피드백 루프 의존성이 증가됩니다.
  • 매핑 방식의 대대적인 변경을 통해안전하고, 명확하고 신뢰할 수 있도록 개선되었습니다.
  • 빠른 속도로 cluster의 변경사항이 반영되고 대형 cluster에서 안정성이 향상될 수 있도록 cluster 상태 차이를 저장합니다.
  • heap space 를 많이 소모하던 norm의 압축 기법이 개선되었습니다.
  • 내부 설정을 변경하지 않아도 merge 기법이 자동으로 조절됩니다.
  • Lucene 의 메모리 보고서가 더 세밀해졌습니다.
  • 최적의 쿼리 실행을 활용하도록 parent/child 재작성 기법이 적용됩니다.
코어 plugin

다양한 공식 지원 코어 plugin이 지금 Elasticsearch 코어와 동시에 동일한 버전 번호로 제공되고 있습니다. 이제 설치할 plugin 버전을 찾기 위해 복잡한 버전 행렬을 살펴보지 않아도 됩니다. 그 대신 코어 plugin을 다음과 같이 설치할 수 있습니다.

bin/plugin install analysis-icu
                

새 버전의 Shield 및 Watcher

다양한 상용 plugin을 다음을 포함하여 몇몇 멋진 새로운 기능과 함께 제공합니다.

Shield

  • document 와 field 레벨의 접근 제어.
  • 사용자 가상화.
  • 사용자 정의 인증 영역 확장.
Watcher

  • 개인별 watcher 설정 활성/비활성.
  • Slack 및 Hipchat에서 알림.

이 기능들에 대한 자세한 내용은 "Shield, Watcher 및 Marvel 2.0.0 GA 출시"에서 확인할 수 있습니다.

코어 open source plugin과 마찬가지로, 상용 plugin도 Elasticsearch 코어와 동시에 같은 버전 번호로 출시되었고, 다음에 따라 설치할 수 있습니다.

bin/plugin install license
bin/plugin install shield
bin/plugin install watcher
        

운영 시스템에 무료로 Marvel 2.0.0 사용 가능

Marvel 모니터링 plugin은 당사 고객들이 사후 문제를 진단하고 진화되고 있는 문제를 찾아내도록 지원함으로써 가치를 인정 받고 있습니다. 개선할 수 있는 사항들을 꾸준히 연구하여 Marvel을 처음부터 다시 작성했습니다.

  • 이제 Marvel UI가 새로운 Kibana 플랫폼 상에서 구현되었습니다.
  • 가장 중요한 지표를 표시함으로써 문제를 쉽게 발견할 수 있도록 대시보드를 간소화하였습니다.
  • Marvel은 단일 설치로 여러 cluster의 모니터링을 지원하며 이 기능은 상용으로 제공됩니다.

그리고 가장 신나는 점은, 이제 Elasticsearch 사용자는 시스템 운영시 Marvel을 무료로 사용할 수 있습니다. 라이센스는 필요하지만 모든 사용자에게 무료로 제공됩니다. multi-cluster 모니터링을 지원해야 하는 경우는 상용 기능으로 제공됩니다.

Marvel에 대한 자세한 내용은 "Shield, Watcher 및 Marvel 2.0.0 GA 출시"에서 확인할 수 있습니다.

Open source Sense 편집기

브라우저 기반 Elasticsearch 요청 및 DSL 편집기인 Sense를 이제 Kibana 플랫폼 상의 앱으로서 모든 사람이 open source로 사용할 수 있습니다. 이 새 버전에도 몇 가지 혁신적인 기능이 추가되었습니다.

  • 여러 cURL 요청을 붙여서 Sense 구문으로 변환합니다.
  • 여러 Sense 요청을 cURL 구문에 복사합니다.
  • 한 번에 여러 가지 요청을 실행합니다.
  • Elasticsearch 2.0을 지원하도록 업데이트된 자동 완성 데이터베이스를 가집니다.

Sense를 Kibana 앱으로 설치할 수 있습니다.

./bin/kibana plugin --install elastic/sense
        

Sense에 대한 자세한 내용은 "Sense 소식 - Sense 2.0.0-beta1 발표"에서 확인할 수 있습니다.

Elasticsearch Migration Plugin

Elasticsearch 1.x에서 2.0으로 업그레이드하는 경우, Elasticsearch Migration Plugin으로 시작하는 것이 가장 좋습니다. Elasticsearch Migration Plugin은 1.x Elasticsearch cluster에 사이트 plugin으로서 설치되며, 더 이상 Elasticsearch 2.0.0에서 지원되지 않는 구식 Lucene 3 index, 문제가 있는 매핑 등의 업그레이드하기 전에 해결해야 하는 문제를 검출합니다("The Great Mapping Refactoring" 참조).

이 plugin에 대한 지침은 Elasticsearch Migration 리포지토리에서 확인할 수 있습니다.

결론

Elasticsearch 2.0.0을 다운로드하여 시험해보시고 당사 트위터(@elastic) 또는 포럼에 의견을 남겨주시기 바랍니다. 발견되는 문제는 GitHub 문제점 페이지에 보고하실 수 있습니다.