Elasticsearch에 대해

iy·2024년 4월 14일
0

Elasticsearch

Elasticsearch는 실시간 검색 및 분석에 특화된 오픈 소스 분산 검색엔진으로 
데이터를 인덱싱하고 검색, 분석, 시각화하는 데 사용함
데이터를 중앙에 저장해 손쉽고 빠른 검색을 가능하게 하며 정확도 및 강력한 분석을 제공하는 데이터 베이스로 자바 기반의 오픈 소스인 Lucene 검색 엔진을 기반으로 하며 
RESTFul API 지원으로 분산 처리 및 복제 등 다양한 기능을 제공함

특징

  • 샤드를 통해 규모가 수평적으로 늘어날 수 있음
  • NoSQL의 JSON기반 데이터 저장소
  • 역색인 구조를 사용해 데이터를 저장
  • 다른 오픈 소스인 Kibana, Logstash등과 함게 사용해 로그데이터, 검색데이터 등에서 사용
  • RESTFul API를 통해 수행됨

CRUD와 Elastic Search RESTful 비교

CRUDElastic Search RESTful
SELECTGET
INSERTPOST
UPDATEPUT
DELETEDELETE

RDBMS와 비교한 Elastic Search 아키텍쳐

RDMSElasticSearch
DatabaseIndex
TablesPatterns/Types
RowsDocuments
columnsFields
SchemaMapping

장점

  1. 검색 성능
  • Lucene 검색 엔진을 기반으로 해서 데이터 처리가 빠르고 결과를 실시간으로 반환 가능함
  1. 확장성
  • 분산 처리 구조를 갖고 있어 데이터 양이 증가해도 서버의 확장이 용이함
  • 데이터 복제 및 장애 대응 기능이 있기 때문에
  1. RESTFul API 제공
  • RESTFul API 제공하기 때문에 HTTP 프로토콜을 통해 데이터 검색을 수행하고 추가, 수정, 삭제 등이 가능함
  • 다양한 플랫폼에서 사용이 용이함
  1. 다양한 플러그인 지원
  • 기존 기능 확장 가능
  • 새로운 기능 추가 용이
  1. 다양한 검색 기능 제공
  • 언어 분석, 지리적 위치 검색, 쿼리 문자열, 맞춤법 검사 등 제공
  • 대량의 데이터에서 원하는 정보 빠르게 검색 가능
  • 필요한 정보만 쉽게 추출 가능

단점

  1. 인덱싱 구조 설계 필요
  • 자동 인덱싱 처리가 가능하지만 데이터 양과 검색의 복잡성에 따라 인덱스 구조 설계가 까다로워질 수 있음
  1. 운영의 까다로움
  • ElasticSearch를 사용하기 위해선 설치와 구성, 운영 등에 대한 사전 지식이 요구됨
  • 데이터 양에 따라 운영이 복잡해질 수 있음
  1. 복잡한 쿼리 작성 요구
  • SQL과 다른 쿼리 문법을 사용하므로 복잡한 쿼리 작성에 대한 이해도와 기술적 지식이 요구됨
  1. 높은 메모리 사용량

  2. 처리 속도 저하

  • JSON 형식으로 저장되므로 문서 크기가 큰 경우 처리 속도에 영향을 미침
  • 후에 문서를 분할해 처리할 필요성이 생길 수 있음

동작 과정

  1. 클라이언트는 원하는 RESTful API 또는 클라이언트 라이브러리를 사용해 JSON 형식으로 구성된 요청을 보냄

  2. 클라이언트 요청은 먼저 ElasticSearch 클러스터의 마스터 노드에 보내지고 이때 마스터 노드는 클러스터의 상태를 관리하고 요청을 적절하게 노드로 라우팅함

  3. 마스터 노드는 요청을 처리할 적절한 데이터 노드를 결정하고 데이터 노드는 요청을 받아 쿼리를 실행함 이때 데이터 노드는 해당 인덱스의 샤드에 대한 작업을 수행함

  4. 데이터 노드는 쿼리를 실행 하고 필요한 샤드에 데이터를 검색함 이때 각 샤드는 해당 샤드의 일부 데이터만 검색함

  5. 검색된 결과는 데이터 노드에 수신되는데 마스터 노드가 이를 받아들이고 최종 검색 결과를 구성함

  6. 마스터 노드는 최종 검색 결과를 JSON 형식으로 응답을 클라이언트에 반환함

왜 ElasticSearch를 사용하려고 하는가

ElasticSearch는 강력한 검색 및 분석 기능을 제공해 다양한 유형의 쿼리를 지원하고 복작합 데이터 구조를 색인화하고 검색할 수 있음
검색 작업을 할 때 사용되는 데이터를 위해 별도의 상태 갱신 작업이 필요하지 않음
Elastic Search는 데이터가 변경되거나 추가될 때 실시간으로 색인화하여 즉시 검색이 가능하게 함 이런 작업을 기존 ORM을 사용하여 구현하는 경우 데이터 변경이 발생할 때마다 일정한 간격으로 데이터 색인화를 해줘야 하기 때문에 반응 속도 등이 ElasticSearch보다 훨씬 떨어짐
검색 작업 뿐 아니라 ElasticSearch는 다양한 검색 및 집계 기능을 제공해 데이터 검색 및 분석이 가능함 나아가 ELK Stack을 이용해 시스템 상태를 실시간으로 파악하고 문제 해결을 가능하게 함


ELK

: ElasticSearch, Logstash, Kibana를 구성하고 로그 데이터의 수집, 저장, 시각화를 위한 오픈 소스 플랫폼

  1. ElasticSearch
  • 실시간으로 데이터 저장 및 검색하는 역할
  • 대용량 데이터를 분산해 저장하고 빠르게 검색 가능한 분석 엔진
  1. Logstash
  • 다양한 소스에서 로그 데이터 수집해 처리하여 Elastic Search에 전송하는 역할을 함
  • 구조화, 필터링, 변환 등을 수행해 ElasticSearch에 색인화할 수 있는 형식으로 변환함
  1. Kibana
  • ElasticSearch에서 저장된 데이터 시각화하고 관리함
  • Kibana를 사용해 데이터를 검색하고 대시보드, 차트 등 시각적인 요소로 표시 가능함

ELK Stack은 대규모 시스템의 로그 및 이벤트 데이터를 실시간으로 수집, 저장, 분석해 시각화할 수 있는 강력한 도구를 제공함
따라서 모니터링, 로그, 분석, 보안 등 다양한 용도로 활용이 가능함
이를 활용해 시스템 상태를 실시간으로 파악 가능하며 문제를 신속하게 해결 가능하고 데이터 기반 의사 결정을 지원함

0개의 댓글