data engineering

redash, +kibana와 비교

qkqhxla1 2021. 10. 16. 23:38

최근에 새로 들어오신 분에게서 redash라는걸 알게되었다. redash는 kibana나 grafana처럼 데이터 시각화 툴이다. 나는 주로 키바나를 사용하는데, 키바나보다 사용법은 훨씬 직관적이고 쉬웠다. 다만 구조가 다르고, 장단점이 확연히 존재하였다. redash를 가볍게 사용하고 느낀점을 정리한다.
일단 redash tutorial링크 : https://redash.io/help/user-guide/getting-started

키바나의 시각화 과정을 가볍게 그리면 아래와 같다. 

가볍게 이런식이다. DB에서 파이썬이나 자바로 내가 원하는 형태로 데이터를 가공해서 es에 저장할수 있고, 이 1차적으로 가공된 데이터를 기반으로 2차적으로 가공을 해서 키바나에서 시각화를 할 수 있다.

redash의 동작은 아래와 같다.

되게 간단한 구조이고 실제로도 간단하다. 위에 링크한 getting started 를 가볍게 읽어봤으면 알텐데, redash자체에서 data source를 추가할수 있다.

그리고 추가된 데이터소스를 기반으로 mysql이나 mongo같은 디비를 조회하듯이 쿼리를 짠다. 아래는 몽고 쿼리 예시이다.

쿼리를 짜면 그 쿼리의 결과값을 기반으로 시각화를 만들수 있다. (특정 디비에 대한 쿼리는 redash의 공식서버에 나와있다.) 이렇게 간단히만 보면 상당히 간편해보이고 편하다. 다만 장단점이 존재한다.

https://stackshare.io/stackups/kibana-vs-redash 여기에 잘 나와있는데..
위 글에서 가장 공감했던 부분은 redash의 cons(반대함.)부분인 All results are loaded into RAM before displaying 이었다. 쿼리 결과값이 좀 크다? 싶으면 redash에서 메모리를 엄청나게 잡아먹어서 돌리던 k8s노드가 죽은 경우가 많다. 다른건 적당히 주의하면 메모리가 터지는 경우는 없는데 redash를 사용할때는 특히 메모리 관리에 대해서 주의가 필요하다.

그리고 내가 키바나와 비교해서 구조가 다르다고 초반에 썼었는데 그 이유는
예로 특정 DB의 특정 테이블의 총 카운트가 총 아이템 수라고 가정해보자. 아이템들이 계속 들어와서 매일매일 테이블은 커지고 있고, 이 총 아이템 갯수들을 시각화하고 싶다. es + kibana의 경우 아마 배치잡으로 매일 특정 시간대의 총 카운트를 프로그래밍으로 es로 올려줄것이고, kibana로 es에 있는 데이터를 그려주면 된다.
그런데 redash로 동일한 일을 하려면? es같은 중간 저장소가 없고, DB의 쿼리 결과만 시각화하기때문에 만약 redash로 이와 같은 작업을 하고자 하면 DB에 daily_item_count같은 새 테이블을 만들고, 거기에 일별 아이템 카운트를 넣어준다. 그리고 redash에서는 daily_item_count테이블에서 쿼리를 돌려서 가져온 값으로 시각화를 해야 한다. 
어떤분이 똑같은 질문함 : https://discuss.redash.io/t/how-to-take-point-in-time-snapshots-of-queries-so-that-we-can-dispaly-it-as-a-timeseries/5329

구조가 아예 달라지는것이다. 쿼리 중심적으로 가므로 모든 시각화를 redash기반으로 한다고 가정했을때 어떤사람이 처음 이 시각화 데이터를 이해하려고 하면 이해도는 redash가 es + kibana보다는 훨씬 쉬울것 같다.

redash를 가볍게 돌려보고 쓴 글이니 혹시나 틀린 점이나 다른 케이스가 있으면 댓글 부탁드립니다.