파이썬 애플리케이션이(파이썬 스크립트) 웹 서버와 통신하기 위한 인터페이스이다. 웹서버에서의 요청을 해석하여 파이썬 애플리케이션 쪽으로 던지는 역할을 수행한다.
Gunicorn은 Python WSGI로 WEB Server(Nginx)로부터 서버사이드 요청을 받으면 WSGI를 통해 서버 애플리케이션(Django)로 전달해주는 역할을 수행한다. Django의 runserver 역시도 똑같은 역할을 수행하지만 보안적으로나 성능적으로 검증이 되지 않았기 때문에 production 환경에서는 사용할 수 없다.(개발용으로는 유용하다)
WSGI는 멀티 쓰레드를 만들 수 있기 때문에 Requset 요청이 많아지더라도 효율적으로 처리할 수 있다. 즉, production 환경에 적합하다.
Django와 Webserver 사이 전달자의 역할을 하는 Gunicorn
종합적으로 정리하자면, 웹서버와 Django 사이에서 Request를 처리해주는 역할을 한다. 이 과정에서 WSGI를 사용하게 되는데 파이썬에서 대표적인 WSGI는 uWSGI, gunicorn이 존재한다. 두개중 gunicorn의 퍼포먼스가 조금 더 좋고 가볍다는 의견이 다수이기 때문에 필자 역시 gunicorn을 사용하고 있다.