다시 이음

API 개발 - 배포하기(Heroku, Metabase) 본문

AI 일별 공부 정리

API 개발 - 배포하기(Heroku, Metabase)

Taeho(Damon) 2021. 10. 1. 23:48

안녕하세요

 

오늘은 만든 웹 어플리케이션 혹은 API 를 배포하고 공유하기에 대해서 알아보겠습니다.

 

Web Server Gateway Interface (WSGI)

 

WSGI 란 다리와 같은 역할입니다. 중간 역할을 맡고 있는 middleware 라고도 부를 수 있습니다.

하는 역할은 서버나 게이트웨이어플리케이션이나 프레임워크와 이어주게 됩니다.

예를 들어 Flask 와 같은 마이크로 프레임워크를 서버로 연결해 외부에서 접속할 수 있도록 도와주는 역할입니다.

 

gunicorn

 

'green unicorn' 를 줄인 'gunicorn' 의 정의는 파이썬의 WSGI HTTP Server 입니다.

구체적으로 보자면 gunicorn 은 HTTP 관련된 웹 요청이 들어오게 되면 flask 와 같은 어플리케이션을 이용해 처리를 해주는 역할입니다.

 

 

httpd

 

httpd는 HTTP 데몬(HTTP Daemon), 아파치 하이퍼텍스트 전송 프로토콜 (HTTP) 서버 프로그램 입니다. 자체(standalone) 데몬 프로세스로 실행하도록 설계되었습니다. 원한다면 요청을 처리하기위해 자식 프로세스와 쓰레드들을 만듭니다.

 

즉, httpd는 웹 서버의 백그라운드에서 실행되어, 들어오는 서버 요청을 대기하는 소프트웨어 프로그램입니다. 이 데몬은 자동으로 요청에 응답하며 HTTP를 사용하여 인터넷을 경유, 하이퍼텍스트, 멀티미디어 문서들을 서비스합니다.

 

 

워크저그

 

Werkzeug 는 WSGI 웹 라이브러리로 다양한 기능들을 갖추고 있습니다. 따라서 자체로서는 WSGI 서버가 아닙니다. 그저 WSGI 에서 사용이 되는 많은 도구들을 가지고 있습니다.

 

 

정리하자면, 워크저그,httpd,gunicon과 같은 미들웨어 프로그램을 통해 우리가 저번에 알아보았던 flask(마이크로),django(Full-stack)과 같은 웹 프레임워크(어플리케이션)을 실행하여 웹서버(apache,nginx)에 연결하게 됩니다.

 

 

이렇게 어떻게 구동이 되는지 간략하게 알아보았으니 한번 배포를 해볼까요?

 

Heroku

Heroku 란 Paas로 서비스형 플랫폼(Platform as a Service, PaaS)은 클라우드 컴퓨팅 서비스 분류 중 하나입니다. 일반적으로 앱을 개발하거나 구현할 때, 관련 인프라를 만들고 유지보수하는 복잡함 없이 애플리케이션을 개발, 실행, 관리할 수 있게 하는 플랫폼을 제공합니다.

 

쉽게 말해 플랫폼이라고 생각하시면 되고 이러한 플랫폼은 웹 서버인 aws기반으로 실행됩니다.

 

웹 서버에 그냥 배포하면 안되냐고 물으실 수 있지만 이러한 플랫폼을 사용하지 않으면 환경을 하나하나 설정해야해서 여러가지 지식이 필요하고 그에따른 시간소요보다 돈을 좀더 내고 플랫폼을 통해 웹 서버에 배포하는 것이 편할 겁니다.

 

혹여 Heroku와 같이 플랫폼이 아닌 바로 웹서버를 통하고 싶다면 aws에 직접 설정을 하여 배포도 가능합니다.

 

 

Heroku 설치

 

https://devcenter.heroku.com/articles/heroku-cli

 

The Heroku CLI | Heroku Dev Center

Last updated April 27, 2021 The Heroku Command Line Interface (CLI) makes it easy to create and manage your Heroku apps directly from the terminal. It’s an essential part of using Heroku. Download and install The Heroku CLI requires Git, the popular vers

devcenter.heroku.com

 

위의 링크를 통해 접속하여 설치하면 됩니다.

 

m1 mac 같은 경우 brew가 이전 버전(인텔버전)으로 설치되어 있거나 설치되어 있지 않을 시에는 오류가 발생합니다.

 

이럴 땐 구글에 오류 문구를 검색! -> brew를 m1버전으로 재설치 하시고 다시 heroku를 설치하면 원활히 설치가 됩니다.

 

 

heroku 사용법

 

# heroku 로그인하기
heroku login  # 웹페이지가 실행되어 로그인을 하면 넘어갑니다.

# heroku 어플을 생성하기 - 중복된 어플이름은 설정이 불가능합니다.
heroku create {어플이름}
# heroku 어플에 push할 flask_app 만들기
mk dir flask_app
touch __init__.py # 생성한 flask_app 디렉토리 안에 위치해야합니다.

#__init__.py는 이전에 배운 flask 내용을 참고하여 작성해주세요.

#FALSK_APP=폴더명:'app을 run하는 함수명' flask run 플라스크 실행
FLASK_APP=flask_app flask run

#requirements.txt 만들기 -- heroku가 어떤 환경을 구성해야하는지 지시해주는 파일입니다.
pip list # 현재 설치된 환경 보기
pip install gunicorn # gunicorn설치(mac) -- 사용할 미드웨어
pip freeze > requirements.txt # pip list를 requirements.txt로 만들어주기

#여기서 vscode를 들어가서 requirements.txt에 들어가서
gunicorn == 20.0.1 #코드와 같은 내용을 넣어주고 저장을 해주면 윈도우에서도 설치 가능합니다.

#웹서버 구동에 필요한 정보 : Procfile 만들기
touch Procfile

#vs code에 들어가서 Procfile을 수정해주세요.
#(사용할 곳) : (구동 프로그램) -- workers(쓰레드 같은개념)지정 '폴더명:app을 run하는 함수명'
web: gunicorn --workers=2 'flask_app:create_app()'

#위에서 생성한 requirements.txt와 Procfile, flask 폴더는 한 위치안에 있어야합니다.

#위에서 설정한 heroku 어플 확인하기
heroku apps
heroku app:info {설정한 어플이름} #실행하면 해당 어플의 정보가 나온다. (주소포함)

#git 저장소 명시하기
git init

#git 저장소 추가
git remote add heroku {위에서 확인한 heroku어플의 git_URL}

git add .
git commit -m '커밋이름'
git push heroku master

#위의 push를 실행하면 설정한 heroku 어플에 deploy 됩니다.
#완료된 후 {URL} deployed to heroku 라고 나오는 줄의 URL을 cmd+클릭을 통해 들어가보면
#우리가 flask에 적용해놓은 내용이 출력됩니다.

 

** 위의 순서 혹은 빼놓은 파일이 있다면 오류가 잘 생깁니다.

제가 본 오류로는 git push 시에 buildpack 오류, application error등이 있습니다.

 

이중 buildpack 오류와 같은 경우는 heroku가 어떤 환경을 구성해야할지 모른다는 뜻으로 위에서 명시한 requirements.txt 혹은 Pipfile, setup.py 과 같은 파일이 한가지는 꼭 있어야 오류가 발생하지 않습니다.

 

 

대시보드

대시보드는 데이터 애널리스트가 많이 사용하는 프로그램입니다.

 

대시보드란 다양한 데이터를 동시에 비교할 수 있게 해 주는 여러 뷰의 모음입니다.

 

대시보드는 비즈니스를 모니터링하고, 답변을 찾고, 가장 중요한 모든 메트릭을 한 눈에 볼 수 있는 훌륭한 방법입니다. 대시보드의 시각화는 하나 또는 여러 개의 기본 데이터 세트, 하나 또는 여러 개의 기본 보고서에서 제공될 수 있습니다. 대시보드는 온-프레미스 및 클라우드 데이터를 결합하여 데이터의 현재 위치와 관계없이 통합된 보기를 제공합니다.

 

종류로는 

 

1. Metabase(오픈소스) : 가볍고 빠르고 직관적입니다. 데이터소스로 SQL, NoSQL 지원

2. Google DataStudio(프리) : 구글에서 제공하는 서비스인만큼 구글 커넥터 기능이 잘 구축되어있습니다.

3. Redash

4. Power BI(상용)

5. 태블로(상용)

등이 있습니다.

 

 

Metabase 설치하기

 

https://www.metabase.com/docs/latest/operations-guide/installing-metabase.html

 

Installing Metabase

The fastest, easiest way to share data and analytics inside your company. An open source Business Intelligence server you can install in 5 minutes that connects to MySQL, PostgreSQL, MongoDB and more! Anyone can use it to build charts, dashboards and night

www.metabase.com

위의 링크로 들어가시면 총 3가지의 방법이 있습니다.

 

그중 우리가 봤던 docker를 이용하는 방법과 application을 활용하는 방법을 주로 사용합니다.

 

**mac m1사용자분들은 docker로 실행시 오류가 발생할 수 있습니다..(platform문제로 저는 안타깝게 해결방법을 찾지 못했습니다. docker로 실행시 -platform 을 통해 인텔버전의 플랫폼을 불러와 실행할 수있다고 알고 실행해봤으나 run되지 않아서 포기했습니다ㅠ)

 

그래서 m1 사용자분들은 mac application이 잘 이루어져 있으니 사용하시면 더 편하실 겁니다.

 

실행하게 되면 SQL문을 통해 쉽게 시각화가 가능합니다.