gunicorn은 WSGI의 일종이다. 그렇다면 WSGI는 무엇일까?
1. WSGI란?
WSGI는 Web Server Gateway Interface의 약자입니다. 여러 언어 사용자들의 다양한 요청을 이해할 수 있도록 이를 공통된 규칙으로 변환하는 관문 역할을 한다. 즉 웹서버와 애플리케이션 서버 간의 게이트웨이트 역할을 하는 인터페이스이다.
필자가 이해한대로 풀어쓴다면 Web Server(ex. nginx)로 요청이 온 Http request를 WSGI가 Application Server(Django)가 이해할 수 있도록 데이터 형식을 변환하고 응답할 때도 반대로 변환하는 역할을 맡는다.
초기에는 이런 게이트웨이의 역할로 CGI를 썼지만 이는 요청이 들어올 때마다 파이썬 스크립트를 처음부터 실행하게 되어 서버가 느려지고 비효율적이기 때문에 필요한 로직 하나만 실행하는 WSGI로 대체되었다.
2. Web Server란?
Web Server는 하드웨어와 소프트웨어적 의미로 분리해서 살펴볼 수 있다.
해당 내용은 여기에서 참고했다.
2.1 하드웨어적 측면
하드웨어 측면에서, web server는 web server의 소프트웨어와 website의 컴포넌트 파일들을 저장하는 컴퓨터입니다. (컴포넌트 파일에는 HTML 문서, images, CSS stylesheets, 그리고 JavaScript files가 있습니다.) Web server는 인터넷에 연결되어 웹에 연결된 다른 기기들이 웹 서버의 데이터(컴포넌트 파일들)를 주고받을 수 있도록 합니다.
2.2 소프트웨어 측면
소프트웨어 측면에서, web server는 기본적으로 웹 사용자가 어떻게 호스트 파일들에 접근하는지를 관리합니다. 이 문서에서 web server는 HTTP서버로 국한합니다. HTTP 서버는 URL(Web addresses)과 HTTP(당신의 브라우저가 웹 페이지를 보여주기 위해 사용하는 프로토콜)의 소프트웨어 일부입니다.
2.3 역할
가장 기본적인 단계에서, 브라우저가 웹 서버에서 불려진 파일을 필요로 할때, 브라우저는 HTTP를 통해 파일을 요청합니다. 요청이 올바른 웹 서버(하드웨어)에 도달하였을 때, HTTP 서버(software)는 요청된 문서를 HTTP를 이용해 보내줍니다.
웹 사이트를 공개하기 위해서는, 정적 혹은 동적 웹서버가 필요하다. 정적 파일은 저장된 그대로 사용자에게 보이는 파일을 생각하면 된다.
동적 웹 서버는 일반적으로 WAS(애플리케이션 서버와 데이터베이스로 구성된 서버)라고 생각하면 된다.
참고
1.https://moondol-ai.tistory.com/467
3. https://developer.mozilla.org/ko/docs/Learn/Common_questions/What_is_a_web_server
4. https://dev-donghwan.tistory.com/90
'Django' 카테고리의 다른 글
[DRF] ModelSerializer 살펴보기 (0) | 2023.01.11 |
---|---|
Django의 특징 (1) | 2022.12.24 |
[Pytest] - TestRunner 설정하기 (0) | 2022.12.19 |
[Pytest] - django-dotenv 와 pytest-dotenv 오류 (0) | 2022.12.19 |
[DRF] - Serializers Class 알아보기(1) (0) | 2022.12.14 |