This repository has been archived by the owner on Nov 7, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 18
~J.1. Flask 배포 스택 구성: Flask 배포 스택
HOIWOONG JUNG edited this page Mar 31, 2021
·
11 revisions
아래 내용을 자세히 읽어봅시다.
$ 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(=위스키)는 Python application이 Web Server와 통신하기 위한 표준 인터페이스입니다.
일반적으로 nginx
나 apache
와 같은 웹서버들은 요청을 받아, 요청에 맞는 서버 리소스 등의 응답이 주 목적이기에,
아래처럼, Python application에게 HTTP 요청을 파이썬앱이 이해할 수 있게 해석해주진 않습니다.
비유하자면, 태생부터 둘은 연결될 수 없는것입니다.
저 둘의 안타까움을 해결하기 위해, 웹서버와 파이썬 어플리케이션을 연결하는 다리가 생겨났는데, 그것이 바로 WSGI입니다.
아래 그림처럼, WSGI는 둘 사이에서 각 요청과 응답을 서로 이해할 수 있게 해석기 역할을 해준다고 생각하면 이해가 쉬울 것입니다.
물론 해당 WSGI 만으로도 웹서버의 역할이 가능하지만, 아래 단점들로 인해 일반적으로 WSGI앞에 nginx와 같은 웹 서버를 붙입니다.
- DDos등 외부 공격 취약
- https처리 불가
- static file 전송 효율성
- 다수의 연결을 효과적으로 처리불가
- uwsgi
- gunicorn
- 웹서버 (Nginx)
- WSGI (gunicorn, uwsgi)
- 파이썬 앱 (Flask)
Fastcampus 2021 ,by hidekuma