[DE] Deployment and DashBoard

Heroku

  • 개발한 Web APP 혹은 API 배포
  • Werkzeug에서 개발 단계에서 사용할 수 있는 WSGI를 제공하기 때문에 server를 실행 가능

WSGI

  • Web Server Gateway Interface
  • 다리와 같은 역할. 중간 역할을 맡고 있는 middleware
  • server나 gateway를 외부에서 접속할 수 있도록 APP이나 framework와 이어준다.

gunicorn

  • green unicorn : Python의 WSGI Server
  • HTTP 요청에 대한 처리를 할 수 있는 gunicorn은 UNIX 체계에서 작동
  • 작동 방식 : pre-fork worker model
  • 어떤 APP이나 framework가 주어지게 되면 사전에 forking을 한 뒤 worker를 통해 작업을 실행
  • server를 띄울 때 worker 수를 정해 하나의 APP을 몇 개 띄우는지 미리 정할 수 있다.
  • 몇 가지 특징
    • WSGI를 native 지원
    • Worker를 자동으로 관리
    • 손쉬운 Python 설정
    • 동시에 다수의 worker 사용가능
  • gunicorn : HTTP 관련 Web 요청이 들어오면 flask와 같은 APP을 이용해 처리해주는 역할
  • flask run은 Werkzeug에서 개발 단계에서 사용할 수 있는 WSGI를 제공하기 때문에 가능하다.

설치

1
$ pip install gunicorn

실행

1
2
3
$ gunicorn [옵션] [WSGI APP]

$ gunicorn --workers=1 'flask_app:create_app()'
  • 1개의 worker만 존재하며, APP이 하나로 작동한다는 뜻

Heroku

  • Heroku : Cloud platform을 제공하는 service
  • Heroku에서 AWS EC2를 활용해 배포를 진행
  • EC2는 AWS에서 server를 빌려주는 service
  • 그렇기에 속도면에서 Heroku가 느리다.

CLI

login

1
$ heroku login

APP 목록

1
$ heroku apps

APP 생성

1
$ heroku create my_app

배포

1
2
3
4
5
$ git init
$ git remote
$ git add
$ git commit
$ git push

설정

Heroku와 Python

  • Python 코드라는 것을 알려주기 위해 다음 중 하나의 파일이 존재해야 한다.
    • requirements.txt
    • Pipfile
    • setup.py
  • conda 가상환경을 사용해서 개발했다면 다음과 같이 저장할 수 있다.
1
$ pip freeze > requirments.txt

Procfile 설정

1
web: gunicorn --workers=2 'flask_app:create_app()'

Metabase

  • DB에 수집된 데이터를 시각화하여 전달하기 위한 방법
    • 보고서 작성 : WORD, PPT, Google Slide 를 이용
    • 대화형 interpreter : Colab, Jupyter Notebook 를 이용
    • Web APP : Flask, Django, Spring 을 이용
    • BI 도구(Dashboard) : Metabase, Google DataStudio, Retool, Redash 이용

장점

  • Dashboard를 DB에 직접 연결하여 생성하면 데이터의 변동 사항을 실시간으로 반영할 수 있다.
  • DB에 저장된 수 많은 raw 데이터는 데이터 직군이 아니면 접근과 해석이 어려운데, Dashboard를 통해 비데이터 직군의 데이터 접근성을 높일 수 있다.
    • Data Driven 의사결정을 보다 쉽게 내리도록 기여할 수 있다.
  • Dashboard에는 유저가 직접 데이터 필터를 조작할 수 있게 하는 기능이 있어서 더욱 생동감있는 데이터 보고서를 만들 수 있다.

Dashboard 구성 프로세스

  • 요구사항 : 핵심지표는 무엇인가?
  • 설계 : 지표는 어떤 기술을 활용하여 어떻게 볼 것이고, 어디서 생성되는가?
  • 구현 : Dashboard를 전체적인 흐름에 적합하도록 구현한다.
  • 가동 : 구현한 Dashboard를 팀원 또는 다른 사람에게 보여주면서 피드백을 받는다.
  • 테스트 : Dashboard에 DB를 연결하여 데이터를 넣어보면서 Dashboard를 구체화한다.
  • 검수 : 구체화된 Dashboard가 정상적으로 작동되고 활용되는지 전체적으로 확인한다. 이 단계에서는 시각화와 스토리텔링도 함께 살펴본다.
  • 개선 : 위의 전체적인 작업을 단계별로 적합하게 작업되었는지 확인하고 부분적으로 수정한다.

docker에서 실행

1
$ docker run -d -p 3000:3000 --name metabase metabase/metabase
  • db 보내기
1
$ docker cp ./chinook.db metabse:/app 

스크린샷 2021-10-01 13 45 20

  • 정상적으로 확인할 수 있다.

Reference

0%