저번 포스팅 - 알라딘 중고책 프로젝트 (4) - RDS, EC2 구축하기
서비스를 위한 인프라는 모두 구축했고, 데이터도 적재했으니 이것들을 이용해서 이제 시각화를 해볼 차례이다. 시각화를 위한 도구는 무엇으로 할까 고민하다 오픈소스에 사용법도 간단한 Superset을 최종으로 선택했다. 각설하고 본격적으로 슈퍼셋을 설치하고 실제 시각화하는 과정까지 이야기해 보도록 하겠다.
Superset 설치
우선 슈퍼셋을 어디에 설치할지가 고민이었다. 첫번째 후보는 로컬이었는데, 컴퓨터에 쓸 데 없는(?) 프로그램이 설치되는 것을 좋아하지 않아 탈락하였다. 결국 EC2에 설치하기로 하였는데, 선택한 가장 큰 이유는 일회용으로 사용할 수 있다는 것이었다.
사실 이 부분은 도커로 설치하면 똑같이 일회성으로 사용할 수 있었지만, 서버에 직접적으로 설치하는 것이 더 안정적일 것이라 생각하여 scratch로 설치하였다. (프리티어 서버라서 다른 툴을 이용하지 않는 것이 성능에 문제가 없을 것이라 생각함)
슈퍼셋 설치는 굉장히 쉽다. 슈퍼셋 공식 홈페이지에 가면 친절하게 설치 방법을 설명해주었다. 서버에 바로 설치하려면 Installing From Scratch를 참고하면 된다.
※ 참고로 설치 명령어 중 superset load_examples은 슈퍼셋을 처음 사용하는 사용자라면 꼭 입력하자!!!
다만!! 이 과정에서 갖가지 에러가 발생할 가능성이 있다. 나 또한 많은 에러가 있어서 약간 고생을 하였다 ㅠㅠ 내가 마주했던 에러는 아래와 같다.
# sqlalchemy 버전 오류
# 해결방법: pip install sqlalchemy==1.3.24
ImportError: cannot import name '_ColumnEntity' from 'sqlalchemy.orm.query'
# dataclasses 모듈 존재X
# 해결방법: pip install dataclasses
ModuleNotFoundError: No module named 'dataclasses'
사실 해당 에러를 처리하는 방법은 구글링하면 바로 나오는 부분이라 적지 않으려고 했는데, 간단하게라도 공유하는 것이 좋겠다고 생각하여 해결방법을 적어놓았다.
설치 가이드에 따라 슈퍼셋을 설치하고 초기화까지 마치면 슈퍼셋을 사용할 준비가 모두 끝났다!
※ 참고로 superset load_examples 이 과정이 생각보다 오래걸리므로(그렇다고 엄청 오래 걸리는 건 아니고) 당황하지 말자... 나는 당황함 ㅎㅎ
Superset 접속하기
공홈에 나오는 것처럼 superset run -p 8088 --with-threads --reload --debugger 명령어를 치고 127.0.0.1:8088로 접속을 바로 시도했다!
그런데... 될리가 있나...😱
이러한 에러가 발생하는 문제는 지금 슈퍼셋이 내 컴퓨터가 아닌 EC2 서버에 설치되어있기 때문이다. 따라서 슈퍼셋에 접속하려면 몇 가지 작업을 해주어야 한다.
EC2 인바운드 설정
앞서 RDS를 외부에서 접속할 때 인바운드 규칙에서 특정 포트를 열어줬어야 됐다. EC2도 마찬가지이다. 슈퍼셋은 8088 포트를 사용하기 때문에 인바운드 규칙에 이를 추가해주어야 한다. 참고로 따로 superset이라는 보안 그룹을 만들어 사용하였다.
슈퍼셋 접속
인바운드 규칙을 추가했다면 이제 슈퍼셋에 접속을 해보자!!! ec2에서 접속하려면 원래 쳐야하는 명령에 호스트 IP를 추가한 명령어를 쳐야한다. superset run -h 0.0.0.0 -p 8088 --with-threads --reload --debugger
여기서 -h 0.0.0.0의 의미가 무엇인지 궁금하여 조금 찾아보았다. 슈퍼셋은 flask 기반으로 웹 UI가 제공되는데 flask와 관련된 인자였다. 이와 관련해선 아래의 링크가 잘 나와있으니 참고하면 될 거 같다!
https://stackoverflow.com/questions/7023052/configure-flask-dev-server-to-be-visible-across-the-network/51164848
간단히 정리해보면 호스트 매개 변수(-h)는 개발 서버가 수신할 주소를 제어하는 것으로, 디폴트로 localhost를 가리키고 있고, 0.0.0.0을 입력하면 모든 IP 주소에서 동작할 수 있다.
하여튼 위의 명령어를 입력하고 URL창에 http://[ec2 퍼블릭 IPv4 주소]:8088을 치면 정상적으로 슈퍼셋에 접속할 수 있는 것을 볼 수 있다.
슈퍼셋 사용하기
처음에 슈퍼셋을 사용하는데 조금 애를 먹었었다. 사실 정확히 무엇을 시각화하고자 하는지 정하지도 않았고, 사용할 수 있는 시각화 툴들도 굉장히 다양해서 어떻게 대시보드를 구성해야 할 지 감이 안왔었다.
여기서 슈퍼셋 차트 만드는 법에 대해서 일일이 설명하지는 않을 것이다. 대신 내가 처음 접근하였던 과정을 통해 조금이나마 초보자에게 방법을 제시해보려 한다.
나의 슈퍼셋 학습방법
우선 슈퍼셋을 사용하기 전 가장 중요한 것은 일단 무얼 시각화할 지 고민하는 것이다. 시각화의 핵심은 내가 중요하다고 생각하는 지표를 효과적으로 보여주는 것이다. 예를 들어 카테고리별로 중요한 지표를 보여주고자 한다면 카테고리별 중고책 평균 판매가격과 같은 지표를 시각화하는 것이 좋을 것이다.
시각화하고자 하는 것을 정했다면 이제 어떤 차트를 사용할 지 선택해야 한다. 이 부분은 순전히 자신의 감(?)으로 어떤 차트를 사용하면 표현하고자 하는 바를 잘 표현할 수 있을지 고민해보면 된다. (아니면 위의 그림에서 여러 차트를 보면서 어떤 차트가 효과적일지 하나씩 대입해보는 것도 좋다.) 카테고리별 중고책 평균 판매가격이라면 Bar Chart가 가장 적당할 것이다.
차트 타입을 선택했다면 이제 본격적으로 데이터를 이용해 차트를 꾸밀 차례이다. 사실 이 부분이 가장 진입장벽이 높았던 것 같다. 차트마다 커스텀하는 방식이 모두 제각각이라 처음에 나도 어떻게 해야할 지 헷갈렸다. 슈퍼셋에 대한 여러 사용법을 보고, 튜토리얼도 해보았지만 가장 좋았던 방법은 예시를 보는 것이었다.
처음에 슈퍼셋을 구성할 때 superset load_examples 명령어는 꼭 입력하는 것을 추천했는데, 다운받은 예시들을 보면서 차트를 구성해보는 게 가장 효과적이었던 것 같다. 해당 예시들을 조작해보면서 어떻게 차트를 사용하면 좋을 지 익혀보도록 하자🎁
정리하면,
- 시각화하고자 하는 지표 구상 ex) 카테고리별 평균 판매가격
- 해당 지표에 대한 시각화 차트 탐색 ex) 카테고리별 평균 판매가격 -> bar plot을 이용하는게 좋겠다!
- 해당 차트에 대한 사용법이 부족하다면 다운받은 예시를 통해 사용법 숙지
- 차트 시각화
이제 마지막...🎉
기나긴 프로젝트도 끝이 났다. 모든 과정이 끝났으니 이제 마지막으로 결과물과 함께 회고를 진행하면 될 것 같다. 마지막 정리글까지 화이팅해서 유종의 미를 거두도록 하자..!!!
'프로젝트 > 알라딘 중고책 프로젝트' 카테고리의 다른 글
알라딘 중고책 프로젝트 (6) - 프로젝트 결과 & 회고 (3) | 2022.04.26 |
---|---|
알라딘 중고책 프로젝트 (4) - RDS, EC2 구축하기 (0) | 2022.04.19 |
알라딘 중고책 프로젝트 (3) - 데이터 적재하기 | 코드 완성 (0) | 2022.04.13 |
알라딘 중고책 프로젝트 (2) - 데이터 추출하기 (0) | 2022.04.08 |
알라딘 중고책 프로젝트 (1) - 알라딘 API 살펴보기 (3) | 2022.04.07 |