반응형
ElasticSearch
- Elasticsearch는 2010년 Apache의 Lucene 라이브러리 기반으로 만들어진 분산 검색 엔진이다.
- Elasticsearch는 JSON 기반의 문서를 저장하고, 색인하여 검색할 수 있도록 한다.
- 데이터 시각화를 위한 도구인 Kibana와 데이터 수집 변환을 위한 Logstash, 경량 데이터 수집 플랫폼인 Beats와 함께 ELK 스택을 구성한다.
ElasticSearch 특징
[검색 엔진]
- Inverted Index : 검색엔진이기 때문에 키워드 검색을 위한 Inverted Index를 사용하여 빠른 검색 속도의 이점을 가진다. 이때, Analyzer를 검색 요구사항에 맞게 미리 지정하여 구성할 수 있어, 다양한 검색 조건에서 유용하게 사용될 수 있다.
→ Inverted Indexing이 Elasticsearch을 쓰는 가장 큰 이유인 것 같다. 또한, Analyzer 구성의 자유도가 매우 높기 때문에 최근 LLM model의 feature 등을 저장하는 RAG 모델 구성 등에 vector DB로 많이 사용되는 것 같다.
[Cluster 구성]
- 분산 처리 : Elasticsearch는 분산 처리를 지원한다. 일반적으로 검색 요청이 많은 시스템에서는 Elasticsearch를 여러 노드에 분산하여 성능 요구 사항을 맞춘다.
- High Availability : Cluster 내 일부 노드의 장애에도 복제본 데이터를 통해 서비스 중단 없이 운영 가능하다.
- Scale out : Cluster 내 Node 수를 늘리고 싶을 때, Elasticsearch 설치만 하면, 데이터 복제 작업이 자동 수행된다.
→ DB 등에서 수평적 확장 시 H/W 단을 건들거나 Request 단을 바꿔야하는 귀찮음이 있는데 반해, Elasticsearch의 수평적 확장은 매우 간단했다.
[Data]
- REST API를 통한 작업 요청 : Elasticsearch는 JSON 형태로 문서를 저장한다. Elasticsearch에 작업 요청을 보낼 때도 JSON 기반의 REST API를 사용하기 때문에, Client 단에 별도의 setup이 필요하지 않다. (REST API 호출만 하면 됨)
- Near Real-time Search : Elasticsearch는 데이터 Indexing 요청 후, 준실시간(1초 이내)의 검색이 가능하다.
- Tracsaction 지원이 안됨 : RBMS와 다르게 Transaction 개념이 없다.
→ Elasticsearch가 RDBMS와 가장 구분되는 특징인 것 같다. RDBMS에서는 데이터 정합성과 테이블 간 관계성이 매우 중요하고 엄격한데 반해, Elasticsearch는 Transaction 개념도 없고, 데이터 Join에 유리하지 않다. 실시간성 보장이 안되면서 Transaction을 지원하지 않기 때문에, 데이터 정합성이 매우 중요한 데이터등에는 적합하지 않다. (데이터 작업 중 연속해서 Request를 여러 번 날리면, Return값이 각기 다를 수 있음)
ElasticSearch 라이선스
- Elasticsearch의 라이선스가 약간 복잡하고, 해석이 글마다 달라서 찾는 과정이 매우 복잡했다.
- Elasticsearch는 최초 Apache 2.0 라이선스를 사용한 오픈소스로 시작했지만, 2021년 Elastic 라이센스와 SSPL을 도입한 현재 라이센스 체계로 변경되었다.
- Elasticsearch의 라이선스는 크게 Elastic 라이센스와 SSPL로 구분된다.
- Elastic 라이센스 : 개인 또는 기업이 내부적으로 Elasticsearch를 사용하는 것은 무료지만, 호스트형이나 관리형 형태로 상업적 사용은 제한된다. 여기서 상업적 사용 개념이 애매한데, 서비스에 읽기 전용 키바나 대시보드를 제공하거나, 서비스 내에서 검색 엔진으로 Elasticsearch를 제공하는 것은 문제가 되지 않으나, 사용자가 직접 API를 제어하는 형태로의 사용은 불가하다. (경계가 모호하다면 Elasticsearch에 직접 문의하는 것이 좋다.)
- SSPL : Elasticsearch 소스코드를 이용한 파생 작업물을 서비스 형태로 제공하려면 파생 작업물 또한 SSPL 라이선스로 공개해야 한다. (이 부분은 AWS나 Google 같은 Cloud 업체에서 Elasticsearch에 자신들의 코드를 넣어 변현하여 서비스로 제공하여, Elasticsearch 구독에 악영향을 미치자 도입한 라이선스이다.)
- 정리하자면, 기업단에서 Cloud 형태 등으로 Elasticsearch를 변형하여 서비스로 판매하지 않는 이상 큰 라이선스 이슈는 없다. 하지만, Elasticsearch에서 제공하는 더 폭 넓은 기능을 사용하기 위해서는 유료 구독하는 것이 좋고, 라이센스 이슈가 문제가 될 것 같을 때는 유료 구독하거나, Apache 라이선스를 따르는 7.10 이전 버전을 사용하는 것이 좋다.
'ElasticSearch' 카테고리의 다른 글
Elasticsearch (2) 주요 용어 & Lucene (0) | 2024.11.26 |
---|