[IT샐러드] 엘라스틱서치(Elasticsearch)가 뭔가요?
저는 영업인(Seller)입니다. C, Java, Phython이 프로그래밍 언어이고, R과 하둡으로 빅데이터 분석을 하는 군! 정도만 이해하고 있는 IT셀러입니다. 영업인으로서, 어려운 IT기술을 이해하기 쉽고 가볍게 전달하기 위해 "IT샐러드(Sellerz)" 시리즈를 기획해보았습니다. 언제까지일지는 모르겠으나.. 쉬운 IT교양지식에 목마른 문과생과 현업 분들에게 도움이 되면 좋겠습니다.
지난 주 동종업계의 IT 스터디그룹에 갔는데, 최근 '엘라스틱서치'가 개발자들 사이에서 핫하다는 이야기를 들었습니다. 특히 100% 재택근무를 하는 루키 기업이라, 왠만한 대기업 커리어를 버리고도 이직을 많이 한다더군요.
심지어 제가 파는 AI 솔루션과 비슷한 기능을 하는데, 무료이다? (저희는 억소리가 나는데..?) 관심이 갈 수 밖에 없어, 직접 인터넷에 검색을 해봤었는데요. '아파치 루신', '노드', '인덱스'... 도통 알아듣기 어려운 용어가 난무하여 좌절하였습니다. 그래도 저같은 분들이 또 있을 것 같아, 경쟁제품 공부 겸 공유 겸, 서칭 좀 해보았습니다.
그래서 오늘은 '엘라스틱서치'가 무엇이고 왜 이렇게 핫한건지, 비전공자(학생, 직장인 포함)가 어디가서 아는 척할 수 있는 수준의 깊이로만 나눠보고자 합니다.
* 이보다 깊은 이야기를 원하시면, 죄송하지만 본 포스팅이 도움될 것 같지 않으니 떠나셔도 됩니다..
1. 엘라스틱 서치가 무엇인가요?
'엘라스틱 서치'는 '검색 엔진(search engine)'을 위한 오픈소스 기술입니다.
조금 더 쉽게 이야기하면, 여러분이 아는 네이버 초록창, 구글 검색창 안에도 돌아가고 있는 알고리즘과 시스템이 있을텐데요. 엘라스틱 서치 또한 이러한 검색엔진의 기반이 되는 시스템으로, '수많은 데이터 중 사용자가 요구하는 데이터를 찾고 회수하는 기술'을 누구나 가져다 쓰기 쉽게 만들어 논 것입니다.
즉, 여러분도 엘라스틱서치를 이용하면 무료로 자기만의 검색엔진을 만들 수 있습니다! (개발지식은 필요하겠지만요.) 실제로 창업자는 아내의 요리법 서칭을 도와주기 위해 검색앱을 만들다가 이 회사를 창업했다고 합니다.
2. 엘라스틱 서치, 왜 좋나요?
조금 어려운 용어를 써서 엘라스틱 서치를 제대로 표현해보겠습니다.
엘라스틱은 1) 오픈소스인 아파치 루씬(Apache Lucene)으로 구현한, 2) RESTful API 기반의 3) 실시간 분산 검색엔진입니다.
기술 자체보다도 이 덕분에 뭐가 좋은지를 설명드리는 게 나을 것 같습니다. 엘라스틱 서치가 자랑하는 최대 장점은 '방대한 양의 데이터를 신속하게, 거의 실시간(NRT, Near Real Time)으로 저장, 검색, 분석할 수 있다'는 것인데요. 각각이 어떻게 연결되는 지 알아볼게요.
2-1. 오픈소스이다 -> 다양한 플러그인이 개발되어 있다.
- 플러그인? 오픈소스인 덕에 누구나 내려받을 수 있고 내부 코드를 들여다 보고 개선할 수 있습니다. 그 덕에 수많은 개발자가 필요에 따라 만든 '플러그인'이 엘라스틱 서치의 큰 장점인데요. 게임의 확장팩처럼 필요에 따라 꽂아 쓸 수 있어 손쉽게 기능을 확장할 수 있습니다. 예를 들어 한국어 검색의 경우에는 형태소 분석이 필요한데, 이를 위한 플러그인도 존재하기 때문에 필요할 때마다 데려다가 쓰면 그만입니다.
2-2. 아파치 루씬 (Apache Lucene) 기반이다. -> 검색 속도가 빠르다.
- 아파치 루씬은 자바로 개발된 검색 서비스용 *라이브러리 입니다. 루씬은 전문 텍스트 검색(Full texh search)에 특화되어 있어서, 문서가 색인될 때부터 검색 가능해질 때까지의 대기 시간이 1초 정도로 매우 짧습니다. 덕분에 검색 시간이 매우 빠르다는 장점이 있습니다.
(* 라이브러리란, 독립적으로 실행가능한 하나의 프로그램이 아닌, 어플리케이션을 개발할 때 활용할 수 있는 기술 꾸러미인데요. 즉, 프로그램을 위한 프로그램인 셈입니다.)
2-3. RESTful API이다 -> 개발이 간편하다.
- 엘라스틱 서치는 REST API 형태로 조작할 수 있습니다. 즉, 검색 및 분석 결과를 API 형태로 제공합니다. 어플리케이션을 개발할 때, API 종류만 알면 쉽게 활용할 수 있다는 장점이 있죠.
2-4. 분산 시스템 -> 빠르게 대용량 분석이 가능하다
- 수백 개, 수천 개의 서버까지 확장하고 데이터를 분산하여 병렬 처리할 수 있기 때문에, 검색 대상의 사이즈가 크더라도(빅데이터) 분석할 수 있고, 처리 속도도 빠릅니다.
2-5. JSON 기반 -> 비정형데이터 분석 가능
- 복잡한 현실세계 요소들을 구조화된 JSON 문서 형식으로 표현하기 때문에, 텍스트, 숫자, 위치 기반 정보, 정형 및 비정형 데이터 등 모든 유형의 데이터를 대상으로 분석 및 검색이 가능합니다.
3. 어떻게 쓰이고 있나요?
엘라스틱 서치를 개발한 엘라스틱(Elastic) 사는 검색 분야에서 세계적으로 가장 큰 주목을 받고 있는 스타트업으로, 2017년 우리나라에도 진출하였습니다. 시작은 개발자 누구나 공짜로 끌어다 쓸 수 있는 '오픈소스'였으나, 현재는 해당 기술로 만든 클라우드 및 AI 솔루션으로 B2B 사업도 하고 있습니다. 인공지능,클라우드, 애플리케이션 서치, 엔터프라이즈 서치, 보안, 시큐러티 모니터링까지 검색기술이 사용되는 여러 분야에 널리 사용되고 있습니다.
글로벌 기업으로는 이베이, 마이크로소프트, 월마트가, 국내 기업으로는 삼성SDS, 11번가, 포스코 등이 엘라스틱의 솔루션을 도입하였다고 합니다. 오픈소스 기술의 특성 상, 무료로 기업에서 사용해보다가 솔루션 구매까지 이어지는 경우가 많다고 하는데요. 엘라스틱 제품군의 누적 다운로드는 3억건, 전세계적으로 관련 커뮤니티에서 사용자 10만명, 국내에서만 6천명의 커뮤니티 사용자를 거느리고 있는 만큼, 오픈소스의 막강한 파급력을 몸소 보여주고 있습니다.
[참고자료]
http://www.bloter.net/archives/234528
http://it.chosun.com/site/data/html_dir/2019/02/22/2019022201969.html