≣ 목차
Elasticsearch란?
Elasticsearch는 오픈 소스 분산형 RESTful 검색 및 분석 엔진으로, 구조화된 데이터(RDBS) 및 비구조화된 데이터(No Sql, 로그 파일)를 거의 실시간으로 저장하고 검색하며 분석하는 데 특화되어 있으며, 확장 가능한 구조와 벡터 데이터베이스 기능까지 갖춘 강력한 도구입니다. 이는 검색 및 분석에만 이용하는게 아니라 로그 분석, 기업 보안 및 위혐 탐지, 모니터링 등 다양한 분야에서도 사용할 수 있습니다.
Elasticsearch의 주요 활용 방법
1. 데이터 수집 및 분석
Elasticsearch는 대규모 데이터, 특히 시스템 및 애플리케이션 로그와 같은 데이터를 실시간으로 수집하고 분석하는 데 강력한 성능을 발휘하도록 설계되었으며, 이러한 데이터 처리 파이프라인을 효과적으로 구축하기 위해 일반적으로 데이터 저장 및 검색 엔진인 Elasticsearch 자체와 더불어 다양한 소스에서 데이터를 수집 및 가공하는 Logstash, 그리고 저장된 데이터를 탐색하고 시각화하는 Kibana를 함께 활용하는 ELK 스택 구성이 널리 사용됩니다.
2. 검색 최적화
Elasticsearch는 데이터가 많더라도 뛰어난 검색 성능을 제공하며, 단순히 키워드를 찾는 것을 넘어 오타나 동의어를 자동으로 보정하고 관련성 높은 결과를 우선순위로 보여주는 등 고급 분석기(analyzer) 기능을 활용하여 사용자의 검색 의도를 정확하게 파악하고 유연하며 지능적인 검색 경험을 제공하도록 최적화되어 있습니다.
Elasticsearch를 왜 사용해야 되는가?
사용자들은 Google이나 Naver와 같은 고도화된 검색 엔진을 통해 이미 매우 높은 수준의 검색 경험을 하고 있기 때문에, 우리가 제공하는 서비스에서도 그와 유사하거나 동일한 수준의 검색 결과를 기대하는 것이 당연합니다. 하지만 일반적으로 관계형 데이터베이스(RDBS)만을 사용하여 이러한 사용자들의 기대를 충족시키는, 즉 데이터의 관련성을 판단하고 오타를 자동으로 수정하며 동의어까지 고려하는 유연하고 지능적인 검색 기능을 대규모 데이터 환경에서 구현하는 것은 기술적으로나 성능 면에서 매우 어려운 일입니다. 물론 Oracle이나 MySQL과 같은 관계형 데이터베이스에서도 풀텍스트 검색 기능을 지원하기는 하지만, 이는 Elasticsearch에 비해 최적화되지 않은 인덱싱 방식과 제한적인 고성능 검색 및 분석 기능 때문에 데이터 양이 방대해지거나 쿼리에 성능 저하가 일어나 사용하기 어렵습니다. 이러한 배경 때문에 대규모 데이터에 대한 빠르고 정확하며 유연한 검색 및 분석이 필요할 때 Elasticsearch와 같은 전문 검색 엔진이 사용됩니다.
Elasticsearch 사용 사례
Elasticsearch는 특정 분야나 사용 사례에만 국한되지 않고, 다양한 목적에 맞게 활용될 수 있는 검색 엔진입니다. 크게 보면 아래 세 가지 주요 영역에서 Elasticsearch를 사용합니다.
앱 검색(App Search)
앱 검색은 주문, 송장, 이메일 등 애플리케이션 내부 데이터를 빠르고 정확하게 검색할 수 있도록 도와주며, 애플리케이션의 검색 및 분석 기능의 핵심 기반 역할을 합니다.
엔터프라이즈 검색(Enterprise Search)
엔터프라이즈 검색은 Slack, 이메일, 데이터베이스, 클라우드 드라이브 등 조직 내 여러 시스템에 분산된 데이터를 통합적으로 검색할 수 있게 해줍니다. 이는 복잡한 정보 환경 속에서 업무 효율성과 정보 접근성 향상에 기여합니다.
사이트 검색(Site Search)
사이트 검색은 Elastic이 제공하는 SaaS 기반 서비스로, 설정 후 웹사이트를 자동 크롤링하고 인덱스를 구축하여 손쉽게 강력한 검색 기능을 웹사이트에 통합할 수 있습니다. 이는 고객의 검색 경험을 개선하고 비즈니스 전환율을 높이는 데 핵심적인 요소가 됩니다.
반대로 Elasticsearch 부적절한 사용 예시
Elasticsearch는 검색과 분석에 최적화된 시스템이지만, 데이터 정합성과 트랜잭션 처리가 중요한 시나리오, 예를 들어 관계형 데이터베이스(RDBMS) 기반의 금융 거래 시스템과 같은 환경에는 적합하지 않습니다. 이러한 시스템은 ACID(원자성, 일관성, 격리성, 지속성) 특성을 요구하며, 정확한 데이터 상태 유지와 동시성 제어가 필수적입니다. 반면 Elasticsearch는 Eventually Consistent(최종 일관성) 모델을 따르므로, 실시간 정합성 보장이 필요한 금융 거래 시스템에서는 보조적인 검색 도구로는 사용 가능하지만, 주요 데이터 저장소나 트랜잭션 처리 수단으로 사용하는 것은 부적절합니다. 추가적으로 Elasticsearch는 이미지나 동영상과 같은 원시 바이너리 데이터를 직접 저장하고 검색하는 지리공간 기반 데이터 처리 시스템으로 사용하기에는 적합하지 않으며, 해당 기능이 필요한 경우 별도의 서비스를 이용하는게 바람직합니다.
정리
- Elasticsearch는 검색 및 분석에 대해 최적화된 RESTful API 기반의 고성능 검색 엔진입니다.
- 데이터는 JSON 형식으로 수신하고 전송
- Elasticsearch는 최종 일관성 모델이므로 데이터 일관성 및 유지가 보장이 되어야 되는 시나리오에는 적합하지 않습니다.
- Elasticsearch를 RDBS로 생각하고 사용하면 절대 안됨
- Elasticsearch는 파일 저장 및 지리 공간 검색 등등 무작정 사용하면 좋은 서비스는 아니다.