-
WSGI
Web Server Gateway Interface.파이썬으로 만들어진 프로그램이 웹 서버와 통신하기 위한 규칙
WSGI는 서버와 앱 양단으로 나뉘어져 있다.
WSGI 리퀘스트를 처리하려면 서버에서 환경정보와 콜백함수를 앱에 제공해야 한다. 앱은 그 요청을 처리하고 콜백함수를 통해 서버에 응답한다.
Middleware
이러한 커뮤니케이션을 WSGI 미들웨어가 보충한다. 이 미들웨어는 서버의 관점에서는 앱으로, 앱의 관점에서는 서버로 행동한다. 이 미들웨어는 아래와 같은 기능을 가진다.
- 환경변수가 바뀌면 타겟 URL에 따라서 리퀘스트의 경로를 지정해준다.
- 같은 프로세스에서 여러 애플리케이션과 프레임워크가 실행되게 한다.
- XSLT 스타일시트를 적용하는 것과 같이 전처리를 한다.
미들웨어에는 mod_wsgi, uwsgi, gunicorn, twisted.web, tornado 등등이 있다.
어플리케이션의 관점에서는 이 미들웨어를 통해 앱이 실행되므로 앱을 실행시켜주는 어플리케이션 컨테이너(Application Container)라고도 할 수 있다.
Framework
서버 어플리케이션을 만들기 위해 사용하는 최상단 웹 프레임워크. Flask로 대표되는 Micro 프레임워크와 Django로 대표되는 Full-stack 프레임워크로 나눌 수 있다.
종합
- http 리퀘스트가 들어오면
- 웹 서버가 그 리퀘스트를 받고
- 서버사이드 처리가 필요 없으면 리스폰스를 리턴(static한 웹 서버)
- 서버사이드 처리가 필요하면 wsgi 미들웨어를 통해 파이썬 어플리케이션으로 리퀘스트 전달
- 파이썬 어플리케이션이 리퀘스트를 받아 처리 후 wsgi 미들웨어 - 웹서버를 통해 리스폰스 리턴.
의 구조라고 할 수 있다.
정리하자면, 상식대로 웹 서버 위에 서버 어플리케이션이 올라가는데 이 어플리케이션과 웹 서버간의 커뮤니케이션을 위해 wsgi 미들웨어가 존재하는 것. 이 미들웨어를 어플리케이션을 적재하는 어플리케이션 컨테이너라고도 할 수 있다.
출처: https://khanrc.tistory.com/entry/WSGI로-보는-웹-서버의-개념 [khanrc's blog]'web > flask' 카테고리의 다른 글
웹 서버와 C.G.I (0) 2019.11.19 플라스크 객체 g (0) 2019.11.18 플라스크의 구동 방식 (0) 2019.11.18 플라스크 기본 설치 (0) 2019.11.18