1 minute read

WSGI

  • CGI

    Web Server 와의 통신 방식

    WSGI 이전에 자주 쓰임

    Web Server, Client, Script 로 나누어짐

    Client 는 Web Server 로 HTTP Request 보냄

    Web Server 는 HTTP Request 를 환경 변수와 Standard Input 을 통해 전달하며 Script 실행

    Script 는 비즈니스 로직 수행 후 Standard Output 으로 결과를 Web Server 에게 전달

    Web Server 는 Client 에게 HTTP Response 전달

    • 문제점

      매번 다시 스크립트 실행하여 메모리에 적재하는 과정에서 발생하는 추가 시간 소요 등 존재

  • WSGI (Web Server Gateway Interface)

    Python 표준의 Web Server 와의 통신 방식

    Web Server 는 Callable Object 로 요청에 대한 정보를 App 에 전달

    Web App 은 HTTP Request 에 대한 정보를 가지고 Business Logic 을 수행한 뒤 Callback Function 을 통해 결과를 웹 서버에 반환

    • Callable Object

      Function 이나 Object 형태가 될 수 있음

      Web Sever 가 이용해 HTTP Request 에 대한 정보와 Callback 함수를 전해줌

    WSGI compatible : WSGI Interface 를 구현하는 Web Server or App

    WSGI App : WSGI compatible 한 App

    WSGI Interface 구현 시 WSGI 지원하는 웹 서버나 프레임워크 와 함께 동작 가능

  • WSGI Middleware

    Web App 에 실행 전과 후에 여러 기능을 추가해주는 middleware

    Design Pattern 의 Decorator Pattern 참조

  • uWSGI, Gunicorn, Werkzeug

    WSGI middleware 기능 가진 라이브러리

    Web Server 의 역할도 할 수 있음 (WSGI Server 나 Stand alone WSGI Container 라고 불리기도 함)

    Werkzeug 는 Flask 에서 기본적으로 사용하며 단순한 개발용 서버를 내장하고 있기에 Production 에 맞지 않음

    Production 레벨에서는 Buffering, Reverse Proxying, Load Balancing 등의 기능을 기잔 Nginx, HTTP 요청을 전달해주는 기능을 가지며 worker process 개수, worker class 설정하여 요청 처리 성능을 높일 수 있는 Gunicorm, Django 순으로 구성함

출처 : https://sgc109.github.io/2020/08/15/python-wsgi/

Categories:

Updated: