하루만에 글로벌 코로나 바이러스 대시보드 만들기

2020-03-04 20:13:47


안녕하세요, 소플입니다.

지금 코로나 바이러스 때문에 한국 뿐만 아니라 전세계가 난리도 아니죠.

이러한 상황을 지켜보던 한국에 계신 훌륭한 개발자분들이 코로나 관련 유용한 서비스들을 많이 만들어 주셨습니다.

그러다가 저도 이 상황에 조금 도움이 될까하여 전세계 코로나 현황을 볼 수 있는 대시보드를 만들어 보기로 했습니다.

대시보드가 이미 많긴 한데, 글로벌하게 볼 수 있는 사이트는 찾기가 쉽지 않아 제가 직접 만들게 되었네요ㅎㅎ

우선 대시보드를 만들기 위해서는 데이터가 준비되어야 합니다.

당연한 사실이지만 데이터가 있어야 대시보드에 시각화를 해서 보여줄 수 있기 때문이죠.

그래서 찾아보다가 존스홉킨스 대학에서 제공하는 데이터를 API로 제공해주는 오픈소스를 발견했습니다.

해당 오픈소스는 Ainize라는 서비스를 통해서 제공되고 있었는데, Ainize는 오픈소스를 무료로 호스팅 해주는 서비스라고 생각하시면 될 것 같네요.

https://ainize.ai/laeyoung/wuhan-coronavirus-api
Ainize에 배포된 코로나 바이러스 현황 API

그렇게 데이터와 데이터를 제공해줄 API는 준비가 되었습니다.

다음 단계로는 데이터를 시각화하는 대시보드를 만들어야 합니다.

이 부분은 제가 하고 있는 오픈소스 프로젝트인 StickyBoard를 사용하기로 했습니다.

https://github.com/soaple/stickyboard

StickyBoard를 사용하면 누구나 쉽게 웹 관리자 페이지와 대시보드를 개발할 수 있습니다.

우선 StickyBoard 프로젝트를 .zip파일로 다운로드 받아서 새로운 프로젝트를 생성합니다.

그리고 아까 찾은 API를 연동하고, 내부 페이지와 차트 등의 레이아웃을 수정했습니다.

corona-board 프로젝트

대시보드를 만드는 과정을 모두 글로 설명하기에는 복잡하고 길어지기 때문에 하지 않겠습니다.

다만, 나중에 나만의 대시보드를 만드는 과정을 강의로 제작해서 올리도록 할테니 기대해주세요ㅎㅎ

계속된 코딩을 통해서 대시보드가 아래와 같이 어느정도 완성되었습니다.

확진자 수, 완치자 수, 사망자 수, 치사율을 수치로 보여주고, HeatMap과 차트를 통해서 경향성을 파악할 수 있습니다.

CoronaBoard

이제 이렇게 완성된 대시보드를 서버에 올려야 하는데, 제가 별도로 클라우드를 사용하게 되면 요금이 발생하겠죠.

그래서 아까 찾은 Ainize라는 서비스에 올리기로 결정했습니다.

우선 오픈소스로 프로젝트를 공개하기 위해서 GitHub에 저장소를 새로 만들고, 소스코드를 모두 push했습니다.

(https://github.com/soaple/corona-board)

corona-board GitHub 저장소

그리고 다음으로는 프로젝트를 Dockerize 해야합니다.

(Dockerize는 Docker에 올릴 수 있도록 container image를 만드는 과정이라고 보시면 됩니다.)StickyBoard에는 이미 Dockerfile이 존재하기 때문에 아래와 같은 명령어로 이미지를 build하고 push합니다.

docker push

여기서 soaple은 제 DockerHub 사용자 이름이고, corona-board는 DockerHub repository 이름입니다.

이렇게 DockerHub에 image가 모두 업로드가 되면, 이제 드디어 Ainize에 배포를 할 수 있습니다.

아래와 같이 Ainize 웹사이트에서 새로운 배포를 생성합니다.

Ainize에서 새로운 배포 생성

배포가 완료되면 아래와 같이 대시보드에서 확인이 가능합니다.

Ainize 대시보드

그리고 오른쪽에 Endpoint 아이콘을 누르면... 두둥!

CoronaBoard

이렇게 정상적으로 웹사이트가 뜨는 것을 볼 수 있습니다.

아래 링크는 완성된 대시보드 사이트 링크입니다.

https://corona-board.soaple.endpoint.ainize.ai/

이렇게 오픈소스와 오픈소스 배포 플랫폼을 활용해서 짧은 기간 내에 글로벌 코로나 대시보드를 만들 수 있었습니다.

하루 빨리 코로나 바이러스가 잠잠해지길 바라며, 저는 조만간 새로운 포스팅으로 돌아오도록 하겠습니다.

읽어주셔서 감사합니다!

Copyright ⓒ Soaple. All rights reserved.