본문 바로가기

Flask-Study

WSGI, Werkzeug

WSGI(Web Server Gateway Interface)

WSGI란 웹 어플리케이션과 웹 서버간의 통신 규약으로 파이썬 언어로 작성한다.

웹 서버와 웹 어플리케이션 사이에 위치하여 서로 통신이 가능하도록 도와준다.

 

Web Server

  • 웹 서버는 클라이언트에서 요청을 보내면 정적인  컨텐츠(HTML, CSS, image 등)들을 보여준다.
  • 대표적으로는 Apach, Nginx가 있다.

Web Application

  • 웹 어플리케이션에서는 웹 서버에서 처리하지 못하는 동적인 컨텐츠들을 처리해서 웹 서버에게 보내준다.
  • 대표적으로는 Django, Flask가 있다. 

 

WSGI의 역할

기본적으로 웹 서버는 정적인 페이지 밖에 보여주지 못한다. 그렇기 때문에 웹 어플리케이션의 도움을 통해서 동적인 페이지를 보여줄 수 있는 것이다. 하지만 웹 서버는 웹 어플리케이션에서 사용하는 파이썬 코드를 이해하지 못한다. 

그래서 서로 소통을 할 수 있도록 WSGI를 한다. 즉, 웹 서버와 웹 어플리케이션 간의 인터페이스 역할을 수행하는 것이다.

 

전체적인 흐름은 위와 같다.

  1. 클라이언트에서 요청을 보낸다.
  2. 웹 서버에서 요청을 받아서 만략 동적인 페이지를 요청했다면 WSGI 서버(미들웨어 라고도 함)를 호출한다.
  3. WSGI 서버는 WSGI를 사용하는 웹 어플리케이션(Djang, Flask)를 호출한다.
  4. 호출받은 웹 어플리케이션은 요청에 따라 처리를 수행한다.
  5. 수행 결과를 WSGI 서버를 통해 웹 서버로 전달하고, 웹 서버는 클라이언트로 보낸다.

 

Werkzueg

Werkzueg란 WSGI 웹 어플리케이션 라이브러리 모음으로 WSGI와 호환 가능한 웹 응용 프로그램을 만드는데 사용한다.