Web Server는 클라이언트의 요청을 받아 정적인 리소스를 처리할 수 있다. 가령, html, css, js나 이미지 등 이미 작성되어 있는 파일을 보내줄 수 있다. Apache
나 Nginx
가 대표적인 웹 서버 프로그램 중 하나이다.
하지만, 프로그래밍 로직을 실행하거나 데이터베이스 요청 등 동적인 작업을 수행해야 하는 경우 WAS(Web Application Server), 즉 애플리케이션에 이 요청을 전달해야 한다.
기본적으로 웹 서버는 파이썬 앱과 통신하는 방법을 모르기 때문에 중계 역할을 하는 인터페이스가 필요하다. 이것을 WSGI(Web Server Gateway Interface)라 한다.
Web Server <=> WSGI <=> Application
의 계층 구조를 생각하면 되겠다.
그렇다면 지금까지 장고에서 WSGI를 설정하지 않았음에도 runserver
로 실행하면 통신이 가능했던 이유는 무엇일까? 그것은 장고가 기본으로 제공하는 wsgi.py
파일이 있었기 때문이다. 실제 배포 단계에서는 WSGI 서버 프로그램을 사용해야 하는데 대표적으로 uWSGI
와 Gunicorn
이 있다.