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 |
|
실행
1 |
|
- 1개의 worker만 존재하며, APP이 하나로 작동한다는 뜻
Heroku
- Heroku : Cloud platform을 제공하는 service
- Heroku에서 AWS EC2를 활용해 배포를 진행
- EC2는 AWS에서 server를 빌려주는 service
- 그렇기에 속도면에서 Heroku가 느리다.
CLI
login
1 |
|
APP 목록
1 |
|
APP 생성
1 |
|
배포
1 |
|
설정
Heroku와 Python
- Python 코드라는 것을 알려주기 위해 다음 중 하나의 파일이 존재해야 한다.
- requirements.txt
- Pipfile
- setup.py
- conda 가상환경을 사용해서 개발했다면 다음과 같이 저장할 수 있다.
1 |
|
Procfile 설정
1 |
|
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 |
|
- db 보내기
1 |
|
- 정상적으로 확인할 수 있다.