Skip to content
This repository has been archived by the owner on Nov 7, 2024. It is now read-only.

~J.1. Flask 배포 스택 구성: Flask 배포 스택

HOIWOONG JUNG edited this page Mar 31, 2021 · 11 revisions

Flask 배포 스택

flask run

아래 내용을 자세히 읽어봅시다.

$ FLASK_ENV=production flask run                                                                                                                       
 * Serving Flask app "gogglekaap"
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off

Do not use it in a production deployment. Use a production WSGI server instead.

실 환경에는, WSGI 서버를 사용하라..!

즉, flask run 커맨드는 우리가 지금처럼 개발 및 디버깅을 할때 용이하게 테스트 하기 위한, Framework에 내장된 소형 웹서버입니다.
WARNING에서 나오는 것처럼, 우리는 WSGI를 사용해야합니다.

WSGI(Web Server Gateway Interface)

WSGI(=위스키)는 Python application이 Web Server와 통신하기 위한 표준 인터페이스입니다.

일반적으로 nginxapache와 같은 웹서버들은 요청을 받아, 요청에 맞는 서버 리소스 등의 응답이 주 목적이기에,
아래처럼, Python application에게 HTTP 요청을 파이썬앱이 이해할 수 있게 해석해주진 않습니다.
비유하자면, 태생부터 둘은 연결될 수 없는것입니다.

SoWkIImgAStDuSh8J4bLIClFBqdAh-3YAW2APYPd5YJcbIYycRtpJSkSrvjQK4ILtlRql9cxvKtl6eKtKpSgAIGMAoGM571nmLKhLDZewkhQLO24hHGyGa825DxCcl9cqrhzDtCdlkxUofMNNvAgK9IPdb6YOALW3mHS3gbvAK2t0000

저 둘의 안타까움을 해결하기 위해, 웹서버와 파이썬 어플리케이션을 연결하는 다리가 생겨났는데, 그것이 바로 WSGI입니다.

아래 그림처럼, WSGI는 둘 사이에서 각 요청과 응답을 서로 이해할 수 있게 해석기 역할을 해준다고 생각하면 이해가 쉬울 것입니다.

was

물론 해당 WSGI 만으로도 웹서버의 역할이 가능하지만, 아래 단점들로 인해 일반적으로 WSGI앞에 nginx와 같은 웹 서버를 붙입니다.

  • DDos등 외부 공격 취약
  • https처리 불가
  • static file 전송 효율성
  • 다수의 연결을 효과적으로 처리불가

WSGI 대표적인 종류

  • uwsgi
  • gunicorn

결과적으로

  • 웹서버 (Nginx)
  • WSGI (gunicorn, uwsgi)
  • 파이썬 앱 (Flask)

레퍼런스


Clone this wiki locally