WSGI
WSGI
-
CGI
Web Server 와의 통신 방식
WSGI 이전에 자주 쓰임
Web Server, Client, Script 로 나누어짐
Client 는 Web Server 로 HTTP Request 보냄
Web Server 는 HTTP Request 를 환경 변수와 Standard Input 을 통해 전달하며 Script 실행
Script 는 비즈니스 로직 수행 후 Standard Output 으로 결과를 Web Server 에게 전달
Web Server 는 Client 에게 HTTP Response 전달
-
문제점
매번 다시 스크립트 실행하여 메모리에 적재하는 과정에서 발생하는 추가 시간 소요 등 존재
-
-
WSGI (Web Server Gateway Interface)
Python 표준의 Web Server 와의 통신 방식
Web Server 는 Callable Object 로 요청에 대한 정보를 App 에 전달
Web App 은 HTTP Request 에 대한 정보를 가지고 Business Logic 을 수행한 뒤 Callback Function 을 통해 결과를 웹 서버에 반환
-
Callable Object
Function 이나 Object 형태가 될 수 있음
Web Sever 가 이용해 HTTP Request 에 대한 정보와 Callback 함수를 전해줌
WSGI compatible : WSGI Interface 를 구현하는 Web Server or App
WSGI App : WSGI compatible 한 App
WSGI Interface 구현 시 WSGI 지원하는 웹 서버나 프레임워크 와 함께 동작 가능
-
-
WSGI Middleware
Web App 에 실행 전과 후에 여러 기능을 추가해주는 middleware
Design Pattern 의 Decorator Pattern 참조
-
uWSGI, Gunicorn, Werkzeug
WSGI middleware 기능 가진 라이브러리
Web Server 의 역할도 할 수 있음 (WSGI Server 나 Stand alone WSGI Container 라고 불리기도 함)
Werkzeug 는 Flask 에서 기본적으로 사용하며 단순한 개발용 서버를 내장하고 있기에 Production 에 맞지 않음
Production 레벨에서는 Buffering, Reverse Proxying, Load Balancing 등의 기능을 기잔 Nginx, HTTP 요청을 전달해주는 기능을 가지며 worker process 개수, worker class 설정하여 요청 처리 성능을 높일 수 있는 Gunicorm, Django 순으로 구성함
출처 : https://sgc109.github.io/2020/08/15/python-wsgi/