본문 바로가기
Own thoughts/IT 교양상식

[IT교양] '엘라스틱 서치(Elasticsearch)'란?

by 랴망 2020. 1. 19.

Background

저는 영업인(Seller)입니다. C, Java, Phython이 프로그래밍 언어이고, R과 하둡으로 빅데이터 분석을 하는 군! 정도만 이해하고 있는 IT셀러입니다. 영업인으로서, HOT하지만 어려운 IT기술 교양을 문과생/현업직장인들의 눈에서 이해하기 쉽게 설명드리고자 본 글을 기획하였습니다. 깊이 있는 수준의 기술적 설명은 제외된 점 알려드리며, 혹 저의 짧은 지식에서 기인한 잘못된 정보가 있다면 언제든 알려주시길 바랍니다.

 

0. 요새 많이 들어본 그 '엘라스틱서치'?

지난 주 동종업계의 스터디모임에서 '엘라스틱서치'라는 기술이 개발자들 사이에서 핫하다는 이야기를 들었습니다. 데이터 처리, 검색 기술 관련해서 최근 업계에서 가장 주목받는 오픈소스라고 합니다.

오늘은 '엘라스틱서치'가 무엇이고 왜 이렇게 핫한건지, 비전공자(학생, 직장인 포함)가 어디가서 아는 척할 수 있는 수준의 깊이로만 나눠보고자 합니다.

 

1. 엘라스틱 서치가 무엇인가요?

'엘라스틱 서치'는 '검색 엔진(search engine)'을 위한 오픈소스 기술입니다.

조금 더 쉽게 이야기하면, 여러분이 아는 네이버 초록창, 구글 검색창 안에도 돌아가고 있는 알고리즘과 시스템이 있을텐데요. 엘라스틱 서치 또한 이러한 검색엔진의 기반이 되는 시스템으로, '수많은 데이터 중 사용자가 요구하는 데이터를 찾고 회수하는 기술'을 누구나 가져다 쓰기 쉽게 만들어 논 것입니다.

즉, 여러분도 엘라스틱서치를 이용하면 무료로 자기만의 검색엔진을 만들 수 있습니다! (개발지식은 필요하겠지만요.) 실제로 창업자는 아내의 요리법 서칭을 도와주기 위해 검색앱을 만들다가 이 회사를 창업했다고 합니다.

 

2. 엘라스틱서치가 HOT한 이유?

다음은 엘라스틱서치가 많은 개발자들의 러브콜을 받는 이유는 간단히 말해, "방대한 양의 데이터를 신속하게, 거의 실시간으로 처리(저장, 검색, 분석 등)할 수 있다"는 것입니다.

이가 어떻게 가능한지, 보다 자세한 기술적 정의를 통해 알아보겠습니다.

엘라스틱서치(Elasticsearch)는...
1) 오픈소스인 2) 아파치 루씬(Apache Lucene)으로 구현한 3) RESTful API 기반의 4) 실시간 분산 검색엔진

각 기술 자체에 대한 설명보다도, 각각이 어떻게 엘라스틱서치의 특장점과 연결되는 지 알아보겠습니다.

1) 오픈소스이다 -> 다양한 플러그인이 개발되어 있다!

- [플러그인이란?] 오픈소스인 덕에 누구나 내려받을 수 있고 내부 코드를 들여다 보고 개선할 수 있습니다. 그 덕에 수많은 개발자가 필요에 따라 만든 '플러그인'이 엘라스틱 서치의 큰 장점인데요. 게임의 확장팩처럼 필요에 따라 꽂아 쓸 수 있어 손쉽게 기능을 확장할 수 있습니다. 예를 들어 한국어 검색의 경우에는 형태소 분석이 필요한데, 이를 위한 플러그인도 존재하기 때문에 필요할 때마다 데려다가 쓰면, 확장 기능을 손쉽게 사용할 수 있게 됩니다.

2) 아파치 루씬 (Apache Lucene) 기반이다 -> 검색 속도가 빠르다!

- 아파치 루씬은 자바로 개발된 검색 서비스용 *라이브러리 입니다. 루씬은 전문 텍스트 검색(Full texh search)에 특화되어 있어서, 문서가 색인될 때부터 검색 가능해질 때까지의 대기 시간이 1초 정도로 매우 짧습니다. 덕분에 검색 시간이 매우 빠르다는 장점이 있습니다.

(* 라이브러리란, 독립적으로 실행가능한 하나의 프로그램이 아닌, 어플리케이션을 개발할 때 활용할 수 있는 기술 꾸러미인데요. 즉, 프로그램을 위한 프로그램인 셈입니다.)

3) RESTful API이다 -> 개발이 간편하다!

- 엘라스틱 서치는 REST API 형태로 조작할 수 있습니다. 즉, 검색 및 분석 결과를 API 형태로 제공합니다. 어플리케이션을 개발할 때, API 종류만 알면 쉽게 활용할 수 있다는 장점이 있죠. 

3-1) JSON 기반 이다 -> 비정형데이터도 OK!

- 엘라스틱서치는 JSON 형식으로 모든 요청 및 응답 문서를 표현합니다. JSON 형식을 이용하면 복잡한 현실세계 요소들을 구조화된 형태로, 읽기 쉽게 표현할 수 있습니다. 덕분에 텍스트, 숫자, 위치 기반 정보 등 정형+비정형 데이터를 대상으로 분석 및 검색이 가능합니다.

4) 분산 시스템이다 -> 빅데이터도 OK!

- 수백 개, 수천 개의 서버까지 확장하고, 확장된 서버에 데이터를 분산하여 병렬 처리할 수 있기 때문에, 검색 대상의 사이즈가 크더라도(빅데이터) 분석할 수 있고, 처리 속도도 빠릅니다.

 

3. 어떻게 쓰이고 있나요?

엘라스틱 서치를 개발한 엘라스틱(Elastic) 사는 검색 분야에서 세계적으로 가장 큰 주목을 받고 있는 스타트업으로, 2017년 우리나라에도 진출하였습니다. 시작은 개발자 누구나 공짜로 끌어다 쓸 수 있는 '오픈소스'였으나, 현재는 해당 기술로 만든 클라우드 및 AI 솔루션으로 B2B 사업도 하고 있습니다. 인공지능,클라우드, 애플리케이션 서치, 엔터프라이즈 서치, 보안, 시큐러티 모니터링까지 검색기술이 사용되는 여러 분야에 널리 사용되고 있습니다. 

글로벌 기업으로는 이베이, 마이크로소프트, 월마트가, 국내 기업으로는 삼성SDS, 11번가, 포스코 등이 엘라스틱의 솔루션을 도입하였다고 합니다. 오픈소스 기술의 특성 상, 무료로 기업에서 사용해보다가 솔루션 구매까지 이어지는 경우가 많다고 하는데요. 엘라스틱 제품군의 누적 다운로드는 3억건, 전세계적으로 관련 커뮤니티에서 사용자 10만명, 국내에서만 6천명의 커뮤니티 사용자를 거느리고 있는 만큼, 오픈소스의 막강한 파급력을 보여주고 있습니다.

'검색 엔진' 서비스가 아직 완전하지 않고, 차후 지속적으로 발전할 분야인 만큼 어떤 솔루션이 시장을 사로잡을 수 있을 지 계속 지켜봐야겠습니다.


[참고자료]

* 티스토리에 올렸던 블로그 포스팅 원문을 각색한 글입니다.

Elastic 공식 홈페이지

http://www.bloter.net/archives/234528

http://it.chosun.com/site/data/html_dir/2019/02/22/2019022201969.html

https://brownbears.tistory.com/3