ELK 에 대해서 알아보자! ( ElasticSearch - Logstash - Kibana )

2024. 9. 22. 22:28·[TIL]

개요 📌

저는 진행중인 쇼핑몰 프로젝트 속에서, 기존의 QueryDsl 을 활용하여 기능을 구현했던 적이 있습니다.

물론 기능적인 면에서 QueryDsl 로도 충분히 가능할지 모르겠으나, 수많은 데이터를 보유한 DB입장에선, 성능적으로 개선은 불가피합니다. 따라서 검색 성능을 높이기 위해서, ElasticSearch를 도입해보고자 간단히 개념적으로 짚고 넘어가보고자 포스팅을 하게 되었습니다.

 

그럼 본격적으로 ElasticSearch란 무엇이며, ES 를 공부하다보면 자연스럽게 딸려오는 ELK 가 무엇인지 알아보겠습니다!

 

 

 

🔍 ElasticSearch란?

 

ElasticSearch는 검색성능을 높이기 위한 도구이다. 무엇이다. 여럿 말들이 많지만, 결론적으로 말씀드리자면 

ElasticSearch는 결국 DataBase 입니다! 

 

해당 개념만 가지고 가셔도 부담은 없을 것 입니다.

ES는, Database의 일종이며, 그 중에서도 RDB가 아닌 NoSQL중 Document 형식을 기반으로한 DB 입니다.

 

NoSQL 이 무엇인지 알고싶다면?  https://develop-706.tistory.com/33

 

[Database] NoSQL 에 대해서 알아보자!

개요추후, Elastic Search를 들어가기에 앞서, NoSQL의 개념부터 다잡고자 해당 포스팅을 하게 되었습니다.Not Only SQL을 뜻한다는 NoSQL.. 그렇다면 과연 무엇일까요?  ❓ NoSQL 이란?결론부터 말씀드리자

develop-706.tistory.com

 

 

그럼 Document 형식이 무엇인지 간략히 살펴보겠습니다.

 

🔍 Document 형태?

Document 형태는 어렵지 않습니다. 간단히 말하자면 key-value 의 모음들로 이루어진, Json 형태가 Document 형식입니다.

 

도큐먼트 형식을 가져가면서, ES는 본인만의 "역색인" 과정을 통해 검색성능을 대폭 상승시켰습니다. 

 

🔍역색인?

 

기존 저희가 RDB에서 사용했던 때를 떠올려봅시다. (우측)

저희는 John 이라는 단어를 찾기 위해선 doc1 파일을 찾고, 해당 안에 John이 있는지 확인했습니다.

마찬가지로 database 라는 단어를 찾기 위해선 doc1, 2 ,3 들을 쭉 확인 한 후에 내부에 데이터를 조회했습니다.

"파일을 펼치고, 그 안에 데이터를 조회한다." 라는 것은 저희가 상식적으로 받아들였던 개념입니다.

 

하지만, 역색인 작업은 해당 과정을 완전히 뒤집으면서, 검색성능을 높였다고 볼 수 있습니다.

"파일을 펼치고,  데이터를 조회하는 것" 이 아닌, "데이터(키워드)를 통해, 해당 키워드가 어떤 파일에 존재" 하는지를 살펴보는것이 역색인 과정입니다.

 

키워드를 미리 정의해놨기 때문에 수많은 파일들 중, 원하는 파일들만 빠르게 찾을 수 있었던 것 입니다.

 

그럼 데이터를 어떤식으로 조작할 수 있을까요?

 

🎈 ElasticSearch 도 DB이기 때문에 CRUD 는 기본적으로 가능하다! 다만 방식이..

소제목과 같이, ES 도 DB라면, 기본적으로 CRUD ( 생성, 조회, 수정, 삭제) 는 가능해야 할 것입니다.

 

ElasticSearch 는 기본적으로 RestAPI 를 기반으로 동작을 합니다. 즉, HTTP Method 를 기반으로 둔 채 쿼리문을 날리고 데이터를 조작할 수 있습니다.

 

기존, RDB 시스템에서는 어떻게 했었는지 기억하실까요?

CREATE , DROP , SELECT , INSERT, UPDATE , DELETE 등 다양한  DDL , DML 등으로 쿼리문을 생성하여 테이블,데이터들을 조작하였습니다.

 

하지만, RestAPI 를 기본 동작방식을 원칙으로 하였기에, 해당 과정들을 GET , POST , PUT , DELETE 를 통해서 이루어 질 수 있습니다.  ( CRUD 는 정말 어렵지 않으니, 꼭 한번 실습해보시길 바라겠습니다! )

 

 

 

 

ElasticSearch 의 특징을 살펴봤으니, E 이외의  LK 에 대해서도 간단히 살펴보겠습니다.

🎁 ELK : ElasticSearch + Logstash + Kibana

 

왜 ES 를 사용하면 다음과 같은 logstash 와 kibana 개념이 따라오는 걸까요? 

그것은 바로 ES 가 DB라는 점이라는 것을 기억해보면 답이 나오는데요.

 

Logstash 와 Kibana는 각각, 데이터를 수집해주는 도구, 데이터를 시각화 해주는 도구라고 생각하시면 됩니다.

Database는 말그대로 데이터를 저장,조회,삭제,수정과 같이 관리해주는 역할을 해줍니다. 

Logstash 와 Kibana는 해당 DB를 위해서, 데이터를 수집해주고, 저장된 데이터들을 시각적으로(도표,그림)으로 표현해주는 역할을 담당합니다.

 

 

 

물론 Logstash 없이도, ES가 단독으로 쓰일 수는 있지만, logstash는 수집된 데이터들에 대해서 전처리를 한번 해주고 ES 에게 제공해준다는 점에서, 좀 더 편리한 이점을 가져갈 수 있습니다.

 

 

🔍 Logstash란?

 

 

Logstash 는 미리 전처리 해주고  ES를 제공해준다는 의미를

로그스태시 파이프라인을 구성한다. 라고 표현하는데요. 해당 일련의 과정이 ETL 로써 작용합니다. 

 

🥊 ETL ?

ETL 이라는 굳이 약어를 쓰긴 하였으나, 어렵지 않습니다.

1. 여러 사용처들이 모아왔던 데이터들을 먼저 추출(데이터 가져오기) 한다.

2. 해당 추출한 데이터를 ElasticSearch가 사용하기 용이한 데이터로 만들기 위해 변환과정을 거친다.

3. 그 후, 해당 변환된 데이터들을 어디다가 보낼 것인지 ( Elasitc Search 의 어느 테이블(인덱스) 에 보낼 것인가) 등을 정의하고 데이터들을 보낸다.

 

와같은 일련의 과정을 그저 쉽게 ETL 과정을 거친다. 라고 표현 할 뿐입니다.

 

❗ 로그스태시 파이프라인 구성방법 

다시 한 번 정리하자면, 해당 ETL 과정을 로그스태시 config 파일에선 아래의 3단계로 이루어집니다.

input : E ( 수집)

filter : T (변환)

output : L (Load) 

 

 

해당 Logstash 로 하여금, ElasticSearch는 좀 더 여러 수집 공간들로부터 일관성있고 유용하게 데이터를 받아와 저장할 수 있게 됩니다.

 

🔍 Kibana란?

사실 kibana가 가장 어렵지 않습니다!

Kibana는 Elastic Search가 담아두고 있던 데이터들을 개발자가 알아보기 쉽도록 용이한 시각화를 제공하는 도구입니다.

물론, 단순 시각화만 담당하는것이 아닌, 협업을 위해서 여러 편리한 모니터링 시스템을 제공해주는 도구입니다.

 

👌 다양한 데이터 시각화 예시들 

아래와 같은 사진처럼, 사용자들의 용도에 맞게 커스텀하고 관리가 가능하기 때문에 인기가 높다고 볼 수 있습니다. 

 

아주 간단하게 ELK 의 개념을 살펴보았는데요. 해당 ELK 기술은 검색을 담당하고 있는 경우라면, 대다수의 공간에서 쓰일 수 있지 않을까 싶습니다. 저 또한, 아직은 배우는 단계이기에 자유자재로 다룰 순 없지만 차근차근 시스템의 성능을 높여가는 방법을 연구해보고자 합니다. :)

 

 

 

 

📚 [참고자료 및 출처] 

https://www.youtube.com/watch?v=J2PIBQgEpC4&list=PLVNY1HnUlO24LCsgOxR_eK2Yi4sOgH9Pg

https://www.elastic.co/kr/kibana

 

'[TIL]' 카테고리의 다른 글

[ TIL ] RECOVER_YOUR_DATA : RDS 해킹 일지  (0) 2024.11.13
Kubernetes 분산 서버에 의한 Oauth2 소셜 인증 실패 및 극복 방법 (sticky session service 추가)  (2) 2024.10.13
JWT 보안성 강화시키기 (Access Token, Refresh Token -RTR, BlackList 그리고 Redis)  (0) 2024.10.02
Cookie 에 Http Only 와 secure 를 적용시켜보자! [ Spring boot + Vue 3.x]  (0) 2024.08.26
[TIL] 도메인 적용 방법 + HTTP에서 HTTPS로 전환 방법 [Nginx, 내도메인한국, Zerossl]  (1) 2024.08.16
'[TIL]' 카테고리의 다른 글
  • Kubernetes 분산 서버에 의한 Oauth2 소셜 인증 실패 및 극복 방법 (sticky session service 추가)
  • JWT 보안성 강화시키기 (Access Token, Refresh Token -RTR, BlackList 그리고 Redis)
  • Cookie 에 Http Only 와 secure 를 적용시켜보자! [ Spring boot + Vue 3.x]
  • [TIL] 도메인 적용 방법 + HTTP에서 HTTPS로 전환 방법 [Nginx, 내도메인한국, Zerossl]
7.06com
7.06com
우당탕탕 코딩하기
  • 7.06com
    우당탕탕 개발자의 이야기
    7.06com
  • 전체
    오늘
    어제
    • 분류 전체보기 (54)
      • [Spring] (7)
      • [JAVA] (3)
      • [디자인패턴] (1)
      • [TIL] (7)
      • [CI,CD] (5)
      • [협업] (1)
      • [Database] (4)
      • [CS] (1)
      • [코딩테스트] (15)
      • [알고리즘] (0)
      • [후기-회고] (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
7.06com
ELK 에 대해서 알아보자! ( ElasticSearch - Logstash - Kibana )
상단으로

티스토리툴바