5 분 소요

Dashboard 설계 :

Redis 에 저장된 데이터를 기반으로 실시간 대시보드를 구현하기 전에 대시보드를 설계해 보겠다.

1. Dashboard 개요

Ciaolabella2 확장 프로젝트의 마지막 단계는 사용자 로그 시각화 대시보드 구현이다.

Ciaolabella 서비스에서 수집한 사용자 로그 중 공통 집계라는 데이터는

실시간으로 처리되어 Redis 에 저장되고 하루 단위로 초기화된다.

이 데이터들을 Redis 에 저장하는 이유는 앞서 설계 포스팅에서 말했다시피

당일에 발생한 사용자 로그를 실시간으로 시각화하여 모니터링 할 때

빨리 데이터를 불러오기 위함이다.

Redis 는 메모리에 데이터를 저장하는 저장소로 디스크 저장소보다

데이터를 더 빨리 불러올 수 있기 때문에 실시간 조회에 효율적으로 사용할 수 있다.

또한 대시보드는 streamlit 을 사용하여 구현하였다.

이제 데이터 시각화 대시보드 구현 과정을 하나하나 짚어보자.

2. Dashboard 설계

2.1. 기본 정보

  • 시각화 대상 데이터
    • Ciaolabella 사이트의 당일 사용자 로그 공통 집계
    • Ciaolabella 사이트의 당일 무라벨 제품 검색어 집계
  • 데이터 저장소 : Redis Cluster
  • 시각화 도구 : Streamlit

2.2. Streamlit 선택 이유

  • python 코드만으로 웹사이트 구현
    • 이전 프로젝트들에서는 시각화 대시보드를 django, html, css, bootstrap, javascript 등을 사용하여 직접 구현하였는데 확실히 시간 소요가 컸다.
    • 하지만 streamlit 은 위와 같은 작업들 없이도 간편하게 구현할 수 있어서 개발 시간이 단축된다.
  • plotly 라이브러리 지원
    • streamlit 가 지원하는 시각화 라이브러리 중 이전에 사용해 본 plotly 도 있는데 이를 활용하면 개발 시간이 더욱 단축된다.
    • plotly 는 다른 시각화 라이브러리보다 더 짧은 코드로 interactive 한 그래프를 구현할 수 있다는 점에서 강점이다.
  • 간단한 배포 및 유지보수 용이
    • 이미 Ciaolabella2 는 많은 서버와 ec2 freetier 계정을 사용하고 있는데 해당 대시보드 배포를 위한 별도의 서버를 마련하는 것은 부담이 되었다.
    • 하지만 streamlit 은 streamlit share 를 통해 쉽게 대시보드를 배포하고 공유할 수 있다.
    • 또한 github 연동으로 수정 후 add 하고 push 하면 바로 반영이 되어서 대시보드 내용 수정 및 유지보수에 용이하다.

2.3. Dashboard 구성안

  • Dashboard 를 구상하기 전에 먼저 Redis 에 어떤 데이터가 저장되어 있는지 확인한다.
date time user_age user_gender user_region login logout menu_eco1 menu_eco2 menu_nolabel menu_lesswaste
20221012 00 none none none 2 1 0 0 1 0  
20221012 00 10 W 인천광역시 3 0 2 1 0 1  
20221012 01 10 W 서울특별시 5 2 1 5 1 4  
20221012 01 20 M 인천광역시 6 1 5 2 2 2  
20221012 02 20 W 서울특별시 1 0 0 7 3 1  
20221012 02 20 W 인천광역시 2 1 0 1 0 1  
  • Dashboard 는 다음과 같이 IN OUT, MENU, ECOPOINT, NO LABEL 총 4가지 TAB 으로 설계하였고 다양한 그래프로 구성하였다.

1) IN OUT

  • 로그인 및 로그아웃 관련 시각화
  • 구성안
    • 가장 많이 로그인한 시간대 / 연령대 / 지역
    • 시간대별 로그인 및 로그아웃 (line 그래프)
    • 연령대별 로그인 수 (bar 그래프)
    • 성별 로그인 비율 (pie 그래프)

2) MENU

  • 메뉴(서비스) 수요 관련 시각화
  • 구성안
    • 메뉴 및 연령대별 클릭 수 (funnel 그래프)
    • 메뉴 가수요 대비 실수요 (gauge 그래프)
      • 가수요 : 서비스 메뉴 클릭 수(서비스에 들어갔는지)
      • 실수요 : 서비스 내 버튼 클릭 수(서비스에 들어가서 실제로 서비스를 사용했는지)
    • 성별 및 연령대별 선호 메뉴 (sunburst 그래프)

3) ECOPOINT

  • 에코포인트 적립 서비스 관련 시각화
  • 구성안
    • 시간대 및 적립 서비스별 적립량 (bar + 비율 그래프)
    • 적립 서비스 간 적립량 관계 및 연령대 (scatter 그래프)
    • 성별 적립량 (displot 그래프)
    • 지역별 적립량 (bar 그래프)

4) NOLABEL

  • 무라벨 제품 검색 서비스 관련 시각화
  • 구성안
    • 시간대별 클릭량 (bar 그래프)
    • 회원 및 비회원 비율 (pie 그래프)
    • 성별 및 연령대별 검색어 (tree 그래프)