Elastic Stack이란?
Elasticsearch, Kibana, Logstash, Beats 제품들을 개발하는 Elastic사에서 제공하는 이 네가지 제품들을 통틀어서 Elastic Stack이라고 부른다.
시각화 도구인 Kibana, 검색 엔진 Elasticsearch, 수집 도구인 Logstash, Beats(수집한 데이터를 전송하는 기능)
Elastic Stack은 5.0버전 부터 ELKB 제품들의 버전을 모두 일치시키면서 같이 릴리즈 해오고 있다.
이 제품들은 어느 소프트웨어 제품들과 마찬가지로 1.1.1 (메이저.마이너.버그픽스) 과 같은넘버링 규칙을 갖고 있다.
마이너 버전에서 기능들이 추가되고 메이저 버전에서는 성능 및 안전성 개선을 초점으로 맞추기 때문에 기능들이 만료되는 경우가 많다.
따라서 이전 버전에서 지원하던 기능이 더 이상 지원되지 않은 경우도 많다.
Elastic Stack는 무료인가?
Elasticsearch를 비롯한 Kibana, Logstash, Beats 등 모든 Elastic Stack 제품은 Apache 2.0 라이센스를 따르는 오픈소스였다.
하지만 현 SSPL 또는 Elastic 라이센스에 따라 무료로 사용할 수 있게 변경 되었다.(7.11버전부터)
Elastic 라이센스에 따라 추가 무료 기능이 제공되며, 유료 구독에서는 경보 및 머신러닝과 같은 고급 기능과 지원을 제공한다.
Elastic Stack 사용 예시?
- 검색엔진 Elasticsearch 설치
- 시각화 플랫폼 Kibana 설치
- 데이터수집을 위한 Beats와 LogStash 설치
- DB설치
- LogStash 구성 설정과 JDBC 플러그인을 이용한 LogStash 연계
- DB와 Elasticsearch를 LogStash를 통해서 ETL(Extract, Transfrom, Load)
- Kibana 사용
우선, ElasticSearch를 주로 살펴보고 Elastic Stack의 주요 변경점을 알아보도록 하겠다.
Elasticsearch란?
- 2010년 샤이 배논에 의해 처음 개발된 아파치 루씬 기반의 검색엔진
- 오픈소스이며 전문 검색 기반의 고가용성 실시간 분석 시스템이다.
주요 기능 | 지원 여부 |
오픈소스 | Apache 2.0 |
분산 시스템 | 샤드 기반의 데이터 분산 저장 |
고가용성 | 복제본을 통한 데이터 유실 방지 |
문서 기반 | json 도큐먼트 기반 |
RESTFul | http 프로토콜을 통한 REST API 지원 |
전문(Full Text) 검색 | 문서 전체를 Term 기반으로 색인 |
실시간 | 배치 기반의 사이클 분석이 아닌 데이터 실시간 저장, 쿼리 |
- 기본적으로 Elasticsearch는 Java가 설치된 환경에서는 대부분 실행 가능하다
- 클러스터 > 노드 > 샤드로 구성된다
- 주로 검색엔진이지만 대부분 형태의 데이터를 모두 처리할 수 있어 로그 분석, 위치정보 분석 등 다양한 용도로 활용한다
- 한글을 활용하기 위해서는 한글 형태소 분석기를 별도로 설치해야 한다
- 데이터를 역색인 구조로 저장하기 때문에 기본적으로 조인 기능을 지원하지 않는다, 하지만 문서를 Nested 구조로 저장하거나 Parent/ Child 구조를 이용해서 검색 시 다른 도큐먼트를 참조해서 검색할 수 있다.
5.0버전 부터 그동안 있었던 주요 변경점을 살펴볼 수 있다.
https://www.elastic.co/kr/blog/category/releases#
Elastic Stack 5.x의 주요 포인트?
- 상용 플러그인인 X-Pack 출시
- Elastic Cloud Enterprise 같은 로드맵 발표
- BKD-Tree를 이용한 IP, Geo 등의 연산 및 색인속도의 상승
- 머신 러닝 기능 추가
Elatic Stack 6.x의 주요 포인트?
- sparse fields를 개선한 디스크 저장 효율 개선,
- Sequence ID를 이용한 리커버리 효율 개선
- 시스템 안정성을 위한 Type 제한
Elastic Stakc 7.x의 주요 포인트?
- Elasticsearch
- Java High-Level Rest Client의 모든 기능 완성Adaptive Replica Selection이 디폴트로 변경
- Replical가 여러개인 경우 더빠른 Replica를 능동적으로 찾아 쿼리 수행여러 원격 클러스터를 통합 검색할 때 라운드 트립을 최소화 시켜 성능을 향상Refresh Interval을 통해 색인 성능을 비약적으로 상승
- Minimun Master Node 설정 자동화, 마스터 후보 노드가 추가되거나 제거될 때 이 값이 자동으로 설정
- Faster Top-k Retrieval 적용으로 단순한 쿼리를 할 때 전체 도큐먼트가 아닌 top 10,000개의 도큐먼트에서 쿼리 수행,쿼리 속도 향상
- 디폴트 Primary Shard 개수가 5에서 1로 변경
- Java를 따로 설치하지 않아도 실행 가능
-Kibana
- Kibana에 새로운 UI템플릿 셋트가 적용
- 다크 테마 추가
- 대시보드에 반응형 디자인 적용, 모바일 화면에서도 정상 출력
- Kibana Query language가 디폴트로 적용
- 확장된 Time Picker가 적용
-API 변경
7.0을 사용하려면 클라이언트 프로그램들을 새로운 API에 맞게수정해야 한다.
Type 구조의 삭제로 7.0버전부터는 API가 변경되었다.
- Search 와 IndexAPI에서 type을 입력하던 부분을 모두 생략
- Document API의 경우 type을 _doc로 대치하여 적용
Elastic Stack 8.x의 주요 포인트?
- Elasticsearch의 벡터 검색 기능
- 최신 자연어 처리 모델에 대한 네이티브 지원
- 더욱 간단해진 데이터 온보딩
- 간소화된 보안 경험을 통해 속도, 확장성, 정확도 및 단순성 향상
용어 정리
Cluster : Elasticsearch 시스템의 가장 큰 단위, 다수의 노드로 구성
Node : Elasticsearch를 구성하는 하나의 단위 프로세스, 다수의 샤드로 구성
Shard : 데이터베이스 샤드는 데이터베이스 혹은 검색엔진의 수평적 파티션을 의미한다.
Replica : 샤드의 복사본
X-Pack: Elastic사의 상용 플러그인/ 보안, 알람, 모니터링, 그래프, 머신러닝 등의 추가 기능을 제공한다.
REST API: 리소스, URI, http 메소드로 이루어진 시스템 아키텍트
JSON : JavaScript Objec Notation, 사람과 기계가 모두 이해하기 용이한 경량 데이터 교환 방식
Query DSL : Elasticsearch의 검색에 사용되는 질의 문
'IT지식 > 데이터베이스' 카테고리의 다른 글
[데이터베이스] PostgreSQL 공부해보기 (0) | 2023.02.09 |
---|---|
[데이터베이스] DB Index 를 공부해보자. (0) | 2022.12.15 |
[데이터베이스] 정규화에 대해 공부해보자 (0) | 2022.12.15 |
[데이터베이스] DB 트랜잭션에 대해 공부해보자. (0) | 2022.12.14 |
[데이터베이스] ORM에 대해 공부해보자 (0) | 2022.12.14 |