이룸 프로젝트

[이룸] 검색 기능 고도화 2 - 엘라스틱 서치란 무엇인가? + 설치하기

쿠마냥 2024. 4. 9. 00:59

1. 검색 엔진이란 무엇일까?

검색 엔진이란 쉽게 말하자면 검색을 빠르고 쉽게 만들어 주는 시스템이다. 사용자가 검색어(ex. 춘식이)를 입력하면 그와 관련된 정보들(ex. 카카오 프렌즈 / 춘식이 인형 / 춘식이 고구마 ... 등)을 찾아서 제시해 준다. 

 

2. ElasticSearch란 무엇일까?

ElasticSearch는 아파치 루씬(Apache Lucene = 고성능 풀텍스트 검색 엔진 라이브러리)을 기반으로 한 오픈소스 검색 엔진이다. 아파치 루씬은 다양한 검색 기능을 제공하는 라이브러리인데, ElasticSearch는 루씬의 이러한 기능을 사용하면서 이에 더해 분산 시스템 지원, RESTful API, 실시간 검색과 같은 기능을 추가하여 만든 강력한 검색 엔진이다. 

 

1) 대용량 데이터 처리

ElasticSearch는 대용량의 데이터를 효과적으로 저장하고 관리할 수 있다. 유튜브에 elastic search를 검색해 보면 네이버에서 이를 활용하여 상품 검색 엔진을 개발, 이후 성능 향상을 발표한 세미나 영상(https://www.youtube.com/watch?v=fBfUr_8Pq8A)을 찾아볼 수 있는데, 수많은 상품들을 관리해야 하는 네이버에서도 ElasticSearch를 선택한 것을 보면 이 검색엔진이 얼마나 유용한지 알 수 있다. 

이렇게 대용량 데이터 처리가 가능한 이유는 샤딩(Sharding)과 복제(Replication) 기능이 있기 때문이다. 샤딩은 데이터를 여러 서버에 나누어 저장하는 것을, 복제는 데이터의 복제본을 생성하는 것을 말한다. 확장성과 복원성이 좋고 데이터 처리도 빠른 훌륭한 검색엔진이다. 

 

2) RESTful API 제공 / JSON 형식의 데이터 저장

사용자는 HTTP 요청을 사용해 검색부터 데이터 색인, 클러스터 관리 작업까지 수행할 수 있다. 이때 JSON을 사용하여 데이터를 주고받기 때문에, 다양한 언어 및 애플리케이션과 쉽게 통합이 가능하다. 덧붙여, JSON은 데이터를 구조화하여 읽고 쓰기 쉽게, 저장하고 교환하기 쉽게 만드는 형식이다. 

 

3) 실시간 검색

ElasticSearch는 거의 실시간으로 검색 및 데이터 색인이 가능하다. 춘식이 인형에 대한 데이터가 색인되면, 몇 초 내로 바로 검색이 가능하다는 뜻. 따라서 로그 분석, 모니터링 등 실시간 데이터 분석에도 활용한다. 

 

4) 비정형 데이터 검색 지원

텍스트 문서, 날짜, 위치 데이터, 이미지, 비디오 등 구조화되지 않은 데이터들도 검색이 가능하다. 이를 위한 다양한 확장 기능 및 플러그인을 제공한다. 

 

3. 왜 ElasticSearch를 선택했나?

- 이룸의 검색은 챌린지뿐만 아니라 인증글까지 나아갈 수 있다고 판단. 인증글은 사진, 영상, 텍스트 등 다양한 형태로 구성될 수 있기 때문에 정형/비정형 데이터를 유연하게 수용할 수 있는 검색엔진이 필요했음. 

- 모니터링 및 분석 도구로도 활용 가능하기 때문. 현재 서버에 이상이 생겼을 때 알려줄 수 있는 모니터링 시스템이 없음. ElasticSearch와 함께 사용되는 Logstash, Kibana 같은 툴을 통해 서버 이상 시 신속하게 대응하려 함. 

 

4. 설치하기 

ElasticSearch는 직접 설치 패키지를 다운받아 설치할 수도 있지만, 도커에서 ElasticSearch를 실행하는 것도 가능하다. 공식 문서에서도 Docker를 사용하여 ElasticSearch와 Kibana를 모두 실행하는 것을 추천하고 있다. 

 

ElasticSearch 설치하기

참고 문서 : https://www.elastic.co/guide/en/elasticsearch/reference/current/install-elasticsearch.html

 

Installing Elasticsearch | Elasticsearch Guide [8.13] | Elastic

To try out Elasticsearch on your own machine, we recommend using Docker and running both Elasticsearch and Kibana. For more information, see Run Elasticsearch locally.

www.elastic.co

 

도커에 ElasticSearch 설치하기 

참고 문서 : https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#docker

 

Install Elasticsearch with Docker | Elasticsearch Guide [8.13] | Elastic

The container runs Elasticsearch as user elasticsearch using uid:gid 1000:0. Bind mounted host directories and files must be accessible by this user, and the data and log directories must be writable by this user.

www.elastic.co

 

*** 설치가 완료되면 다음과 같은 화면을 만날 수 있다!