프로젝트 앱 디렉토리에 있는 WSGI는 WebServer Gateway Interface의 약자로 파이썬에서 웹 통신을 하기 위한 일종의 약속이다.
wsgi는 웹 서버와 웹 어플리케이션 서버(여기서는 장고)를 연결해 주는 역할을 한다.
* 위스기라고 부른다.
웹 서버(Web Server)와 웹 어플리케이션 서버(Web Application Server)는 무슨 차이가 있을까?
웹 서버는 HTTP를 통해 클라이언트에게 요청을 받고, 그 요청에 따라 HTML 문서를 제공한다. HTML 문서를 파싱 하면서 각 태그에 따른 image, css, javascript와 같은 외부 리소스에 대한 추가적인 HTTP 요청을 한다.
* HTML과 외부 리소스를 한번에 요청하지 않고 별도로 요청하는 이유는 병렬 다운로드로 웹 페이지 로딩 시간을 단축할 수 있다는 점과 캐싱의 이점을 살리기 위함이다.
HTML과 정적 리소스(이미지, CSS, javascript)를 제공하는 소프트웨어를 웹 서버라고 부른다. 또한 동적인 콘텐츠 제공을 위한 요청을 웹 어플리케이션 서버에 보내주는 역할도 한다.
웹 서버의 예시로는 Apache HTTP Server, Nginx, Microsoft Internet Information Services (IIS)가 있다.
웹 어플리케이션 서버는 서버 측에서 실행되며 사용자의 요청에 따라 동적인 콘텐츠를 생성하고 데이터베이스와 상호작용하는 복잡한 작업을 수행하는 소프트웨어이다. 동적인 콘텐츠라 함은 주로 복잡한 로직을 처리하고 데이터베이스의 CRUD 작업 처리등이 있다.
웹 어플리케이션 서버의 예시로는 Django, Flask, Ruby on Rails 등이 있다.
웹 서버는 주로 정적인 콘텐츠를 처리하는데 최적화되어 있지만 웹 어플리케이션의 서버는 클라이언트의 요청을 처리하기 위한 동적 콘텐츠 생성에 초점을 맞추고 있다.
WSGI Server (Middleware)
WSGI 서버는 클라이언트로부터 HTTP 요청을 받아 WSGI 인터페이스를 통해 파이썬 애플리케이션 서버에 전달한다.
또한 파이썬 애플리케이션으로부터 받은 응답을 HTTP 응답으로 클라이언트에게 전달하는 역할을 한다.
WSGI Application Server
웹 요청을 받아 처리하고 응답을 생성하는 코드의 모음이다.
데이터베이스 상호작용이나 복잡한 작업을 수행한다.
Django Project를 배포할 때 사용했던 pythonanywhere 사이트에서 WSGI configure file을 변경해 주었는데 나는 장고라는 웹 어플리케이션 서버를 사용했으니까 해당 포맷으로 맞춰달라는 의미를 전달해 준 것이다.
'Backend > Django' 카테고리의 다른 글
[Django] MVT 아키텍처 (0) | 2023.11.06 |
---|---|
[Django] migration (0) | 2023.11.06 |
댓글