CQRS 도입기 - 7 ELK

정훈·2023년 5월 9일
0

CQRS

목록 보기
7/8

ELK Stack

ElasticSearch 란?

ElasticSearch는 Apache Lucene에서 구축되어 배포된 검색 및 분석 엔진이다. JSON 기반의 문서를 저장하고 검색, 분석할 수 있는 확장 가능한 오픈 소스 검색 엔진이다. ElasticSearch는 대규모 데이터 집합을 쉽게 저장하고 검색할 수 있도록 설계되어있다.

ElasticSearch의 특징

분산아키텍처

ElasticSearch는 클러스터를 구성해서 데이터를 분산 및 저장하고 처리 할 수 있다. 이를 통해 데이터 집합을 다룰 때 높은 가용성 확장성 및 신뢰성을 제공함.

실시간 검색 및 분석

ElasticSearch는 데이터를 색인하고 검색하는데 매우빠르다. 또한 데이터를 실시간으로 분석할수있고 대시보드 및 경고 알림시스템을 구축하는데 유용하다.

다양한 검색 기능

ElastiscSearch 는 text검색,구조화된 검색, 지리적 검색 등 다양한 검색기능을 지원.

RESTful API

RESTFUL API를 통해 데이터에 접근할수 있으며, ElasticSearch를 다른 시스템과 통합하는데 매우 유용하다.

멀티 테넌시

검색한 필드명으로 여러개의 인덱스를 한번에 조회.

ElasticSearch의 주요 개념

역색인

역색인 구조를 통해서 특정단어를 찾을때 문서전체에서 찾는 것이 아닌, 단어가 포함된 특정문서의 위치를 알아내어빠르게 결과를 찾아낼수있다.

색인

ElasticSearch에서는 Index라는 개념을 사용하여 데이터를 저장한다. Index는 여러개의 Document를 가지고있고, 각 Document는 고유한 ID를 가지고있다.

Document

Document는 JSON형식의 데이터이고 Document는 Index에 저장된다 .

Type

ElasticSearch는 Type이라는 개념을 사용하여 Index내에 데이터를 더 세분화할수있다.

Mapping

Mapping은 데이터를 색인할때 각 필드의 데이터 타입을 지정할 수 있다. 이를 통해서 검색시 정확한 결과를 제공하도록 도와준다 .

Analyzer

Analyzer를 사용해서 문서내의 텍스트를 분석하고 색인전에 텍스트를 정규화 및 토큰화할 수 있다.

Aggregation

Elasticsearch는 Aggregation을 사용하여 검색 결과를 집계할 수 있다. Aggregation은 데이터를 그룹화하고 집계 기능을 수행할 수 있고, 대시보드 및 분석 작업에서 유용하다.

Cluster

Elasticsearch는 Cluster를 구성하여 데이터를 분산 저장하고 처리할 수 있다. 클러스터는 여러 개의 노드로 구성되며, 노드 간에 데이터를 복제하여 데이터의 안정성과 가용성을 높일 수 있다.

Node(노드)

ElasticSearch가 시작할때 노드를 생성한다. 노드는 필요에따라 우리가 조절할수있으며 이노드는 동일한 네트워크상에서 클러스터가 존재한지 확인하고, 없으면 노드가 클러스터를 생성하며,있으면 같은 이름을 가진 클러스터에 노드를 연결한다.

Shard

Index가 여러개있을때 Shard로 분할하여 저장할수있다. 대규모 데이터 집합을 처리할 때 빠르게 검색 및 확장성을 제공하기도함.

샤드는 파티션과 같은의미이다. 샤드의 개수에따라서 노드에 분산하여 저장소 및 도큐먼트들을 저장한다.

샤드의 개수는 데이터의 크기가 클시 응답속도에 맞게 갯수를 늘려야함.

샤드를 사용하는이유는 여러곳에서 한번에 검색되도록하면 컴퓨팅 리소스를 분산해서 사용하기때문에 검색속도를 향상시킬수있으며, 손쉽게 scale out을 할수있음.

Replica

Elasticsearch는 Replica를 사용하여 데이터를 복제할 수 있고, Replica는 데이터의 가용성을 높이고 검색 속도를 높이는 데 사용된다.

또한 레플리카는 노드의 손실이 났을경우 데이터의 일관성을 위해 샤드를 복제한다. 이를 통해 레플리카는 서로 다른노드에 존재해야한다.

노드가 다운이되었을경우 해당 노드가 포함하고있던 데이터를 다른곳에서도 저장을하고 있는 형태로 띄기때문에 계속해서 서비스를 유지할수있다.

Kibana

Kibana는 Elasticsearch에 저장된 데이터를 시각화하고 분석하는 기능을 제공하여, 데이터를 빠르고 쉽게 이해할 수 있도록 도와준다.

Kibana는 ElasticSearch에서 검색한 데이터를 시각적으로 나타내고 데이터에 대한 인사이트를 발견할수있으며, 검색쿼리, 및 REST API를 사용하여 데이터를 검색하는 기능도 제공.

LogStash

Logstash는 오픈소스 데이터 수집, 처리, 전송 도구로, 다양한 소스에서 데이터를 수집하여 Elasticsearch와 같은 대상으로 전송할 수 있게 도와준다.

LogStash 동작원리

LogStash는 inputs,filter,output의 세 단계로 거치면서 output을 통하여 최종 목적지로 운반하는 역할을함. .

Inputs

외부에서 데이터를 받아오는 영역이다.

Filters

필터는사용자가 지정한 기준에 맞게 이벤트에 대한 작업을 수행함

outputs

elasticsearch의 가장 기본적인 output 방식으로 elasticsearch에 데이터를 전송하는 역할을함.

Reference

0개의 댓글