[Elastic Stack] Elastic Stack 시작

3 분 소요

엘라스틱 스택

엘라스틱서치에서 시작되었다. 엘라스틱 서치는 JSON 기반의 분산형 오픈 소스 RESTful 검색 엔진으로, 사용하기 쉽고, 확장 가능하며, 유연하여 검색 분야에서는 사용자와 회사의 팬덤과 높은 인기를 누렸다.

그 후 엘라스틱서치, 로그스태시, 키바나를 합친 엘라스택 스택(Elastic Stack)이 개발되었다.

개발자들이 “파일을 추적하고 싶다”는 요구에 2015년에 ELK Stack에 경량의 단일 목적 데이터 수집기 제품군인 Beats를 도입했다.

elasticstack

엘라스틱 스택은 일반적인 빅데이터 파이프라인을 구성하기 위한 데이터 수집, 가공, 저장, 분석, 시각화에 필요한 모든 소프트웨어를 갖추고 있다.

비츠와 로그스태시는 데이터를 수집하고 가공하는 역할을 한다.

엘라스틱서치는 저장하고 분석하는 역할을 한다.

엘라스틱 서치 : 분산 검색 엔진

엘라스틱서치는 검색 엔진이지만 구글이나 네이버 같은 포털 서비스와는 다르다. 검색 엔진은 내부적으로 각 도큐먼트를 인덱싱하고 빠르게 검색하는 데 사용하는 기술로 우리는 검색 엔진을 이용해 상위에서 구글, 네이버 같은 서비스를 이용한다.

엘라스틱 서치는 모든 레코드를 JSON 도큐먼트 형태로 입력하고 관리하고 있다. 일반적인 데이터베이스와 마찬가지로 쿼리한 결과에 대해 일치하는 원본 도큐먼트를 반환한다.

엘라스틱 서치는 텍스트 외에도 숫자, 날짜, IP 주소, 지리 정보 등 다양한 데이터 타입에 대해 최적화되어 있다. 엘라스틱서치를 일종의 NoSQL 데이터베이스라고 생각하면 된다.

엘라스틱서치는 텍스트나 도큐먼트의 경우 인덱싱 시점에 분석을 거쳐 용어 단위로 분해되고 역인덱스 사전을 구축한다. 숫자나 키워드 타입의 데이터들은 엘라스틱서치 집계를 위해 집계에 최적화된 칼럼 기반 자료구조를 저장한다. 엘라스틱서치는 이렇게 최적화된 자료구조들을 바탕으로 병렬 처리나 분산 처리를 할 수 있다. 이론적으로 엘라스틱서치 클러스터가 구성되어 있다면 데이터의 양과 무관하게 1초 이내의 응답 속도를 기대할 수 있다.

엘라스틱서치의 중요한 특징 중 하나는 스코어링, 즉 연관도에 따른 정렬이다. 검색어에 대한 유사도 스코어를 기반으로 한 정렬을 제공한다. 이는 특히 복잡한 문자열 콘텐츠에서 검색을 수행할 때 큰 효과를 보인다. 이러한 검색 엔진으로서 강력한 기능들은 엘라스틱서치의 기반이 되는 아파치 루씬에서 비롯됐다.

엘라스틱 서치의 단점은 저장공간이 크게 압축되지 않고 시스템 리소스를 많이 사용한다. 엘라스틱 서치는 DSL(Domain Specific Language) 쿼리를 채용하는데 JOIN 쿼리가 사실상 어렵기 때문에 반정규화를 기본으로 모델링해야 한다. 또한 인덱스가 불변의 자료구조이기 때문에 도큐먼트를 수정하거나 삭제할 경우에 비용이 높다.

하지만 엘라스틱서치가 필요한 수준의 대량 데이터를 처리할 때는 일반적으로 용인되는 제약들이다. 결국 엘라스틱서치는 대용량 데이터에 대한 빠른 검색과 집계가 필요한 경우 우선적으로 고려해야 하는 데이터베이스 중 하나라고 할 수 있다.

키바나 : 시각화와 엘라스틱서치 관리 도구

엘라스틱서치는 사용자의 모든 입력을 REST API 형태로 받아들이기 때문에 별도의 드라이버 라이브러리가 없더라도 웹 브라우저나 curl 명령 등 친숙한 도구들을 이용해 기능을 활용할 수 있다. REST API가 잘 설계된 제품이지만 복잡한 요청을 일일이 작성하기에는 다소 불편할 수 있다. 키바나는 바로 이런 불편함을 해소한다.

키바나는 엘라스틱 스택의 UI를 담당한다. 엘라스틱서치에 대한 대부분의 관리 기능, API를 실행할 수 있는 콘솔, 솔루션 페이지들, 그리고 스택의 각 구성요소들을 위한 모니터링 페이지 등이 모두 키바나에 포함된다. 여기서 엘라스틱서치 기반의 시각화 도구로서 키바나의 가장 중요한 기능은 시각화와 대시보드라 할 수 있다.

키바나는 일반적으로 많이 사용하는 라인차트, 파이차트 등과 테이블, 지도 등의 다양한 시각화 요소들을 클릭 몇 번으로 쉽게 구성할 수 있다. 특히 시각화 요소들은 한 화면에 마음대로 배치하고 실시간으로 업데이트할 수 있는 대시보드 기능은 엘라스틱 스택의 확산과 보급에 지대한 공헌을 했다. 대시보드에서 실시간 모니터링이 가능하고 데이터 분석도 가능하다.

로그스태시 : 이벤트 수집과 정제를 위한 도구

대량의 데이터를 검색하기 위해 가장 먼저 선행돼야 할 작업은 데이터를 적재하는 것이다. 이는 빅데이터를 다룰 때 손이 가장 많이 가는 작업이며, 변경되는 상황에 맞춰 꾸준히 모니터링을 해야하고 개선도 필요한 부분이다.

데이터 수집과 가공 기능을 제공하는 로그스태시를 사용하면 로그, 메트릭, 웹 애플리케이션 등 다양한 소스로부터 로그를 수집할 수 있다. 또한 필터 기능을 이용해 비정형이나 반정형 데이터를 분석하기 쉬운 형태로 정제할 수 있고 엘라스틱서치 외에도 다양한 플랫폼으로 정제된 데이터를 내보낼 수 있다.

로그스태시는 형식에 무관하게 데이터를 동적으로 수집, 변환, 전송하는 구조로 되어 있다. 비구조적인 데이터에서 구조를 도출하며, ip 주소에서 위치 정보 좌표를 해독하고, 민감한 필드를 익명화하거나 제외시키는 등 전반적인 작업을 쉽게 해준다.

비츠 : 엣지단에서 동작하는 경량 수집 도구

파일비트, 메트리비트 등 비츠라고 부르는 경량 수집기가 포함되어 있다. 각 비트는 로그 수집, 시스템 지표 수집 등 특정 목적에 최적화된 에이전트이며, 가볍기로 유명한 고 프로그래밍 언어로 작성되었다.

비츠는 데이터 수집을 위해 용도별로 최적화된 경량 에이전트로 제공되며, 특성과 성격에 맞는 다양한 비트들이 존재한다. 또한 특정 비트는 잘 알려진 다수의 서비스에 대한 모듈을 제공한다. 모듈에는 수집 설정 프리셋, 샘플 대시보드 등이 포함되므로 별도의 설정 과정 없이도 손쉽게 이벤트를 수집할 수 있다.