[Elastic Stack] 엘라스틱의 구성요소

2022. 11. 5. 18:12TIL💡/Elastic Stack

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

엘라스틱 서치는 검색 엔진이지만 구글이나 네이버같은 포털 서비스와는 다르다.

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

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

또한 엘라스틱 서치는 텍스트 외에도 숫자, 날짜, IP 주소, 지리 정보 등 다양한 데이터 타입에 대해 최적화되어 있다. 검색 엔진이면서 데이터베이스이기도 하고 텍스트 외에 다양한 데이터 타입을 지원한다는 점이 엘라스틱서치라는 이름과 쉽게 매칭되지 않지만 엘라스틱 서치를 일종의 NoSQL 데이터베이스라고 생각하면 훨씬 더 큰 그림이 보인다.

 

엘라스틱 서치는 텍스트나 도큐먼트의 경우 인덱싱 시점에 분석을 거쳐 용어 단위로 분해되고 역인덱스 사전을 구축한다.

 

또한 검색 엔진으로서 엘라스틱 서치의 중요한 특징 중 하나는 스코어링(scoring), 즉 연관도에 따른 정렬이다.

 

엘라스틱 서치는 복수의 루씬 인스턴스를 병렬로 배치하고 분산 처리해 검색 속도를 무한히 확장할 수 있게 했다. 또한 노드 간 복제 기능을 통해 일부 노드가 다운되더라도 정상적으로 서비스를 지속할 수 있게 했다. 무엇보다 편리한 점은 모든 통신을 REST API로 이용하도록 만들어 프로그래밍 언어와 무관하게 사용자가 쉽게 접근할 수 있도록 활용성을 높였다.

 

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

엘라스틱 서치의 UI 담당

 

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

로그 스태시는 별도의 코딩 없이 간단한 설정만으로 로그를 가공할 수 있다.

 

로그 스태시의 진면목은 단순 소스 데이터 정제가 아니다. 엘라스틱서치의 인덱싱 성능을 최적화하기 위한 배치 처리와 병렬 처리가 가능하다. 영속적인 큐를 사용해 현재 처리 중인 이벤트의 최소 1회 전송을 보장해줄 뿐만 아니라, 유동적인 처리 방식으로 수집 중인 데이터양이 급증하는 부하 상황에서도 안정성을 보장해준다.

 

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

로그스태시의 기능은 충분히 강력하다. 하지만 이벤트 정보를 수집하기 위해서는 실제 서비스가 동작하는 호스트에 수집기를 설치해야 하는 경우가 많은데 로그스태시는 다양한 필터와 설정을 지원하는 만큼 무겁기 때문에 이러한 목적으로는 활용도가 떨어질 수 있다.

 

비츠는 로그스태시 수준의 복잡한 이벤트 가공은 지원하지 않아 가벼우므로, 각 서비스 호스트에 비교적 부담 없이 설치할 수 있다. 이러한 양쪽의 장점을 활용하기 위해 비츠와 로그스태시를 혼합해 많이 사용한다.

 

흔히 비츠에서 각 서브 호스트의 정보를 수집하며, 로그스태시에서 이를 취합하고 가공해 엘라스틱서치로 전송하는 형태의 아키텍처가 많이 사용된다.

 

 

'TIL💡 > Elastic Stack' 카테고리의 다른 글

[Elastic Stack] 키바나  (0) 2022.11.09
[Elastic Stack] 로그 스태시  (0) 2022.11.08
[Elastic Stack] 쿼리  (0) 2022.11.06
[Elastic Search] 매핑  (0) 2022.11.05
[Elastic Stack] 인덱스와 도큐먼트  (0) 2022.11.05