Flow of python web app deployment (WSGI v.s ASGI)

써니·2021년 1월 14일
1

Python

목록 보기
3/9

- "python만"으로 웹을 만든다?

socket을 이용해서 구축할 수 있으나, low level이므로 많은 자원과 시간 소요된다

web application 서버를 구축하기 위해서 "wsgi" 인터페이스를 이용하는 "gunicorn"이나 "uwsgi"와 같은 서비스를 사용한다.

wsgi: web server gateway interface:

웹서버로 들어오는 request를 python 작성된 web application으로 전달해주는 인터페이스

web application의 구현을 돕는 "Flask"나 "Django"와 같은 프레임워크는 template, view를 제공하며, 자체적으로 "wsgi"를 소유하여 비교적 수가 적은 사용자 처리를 할 수 있는 서버를 갖고 있다.

하지만 web application을 depoly하게 되면 보다 많은 사용자에 대한 처리를 해야하며 그에 따라 gunicorn/uwsgi를 사용한다.

추가적으로 proxy server(reverse proxy)를 사용하여 보다 많은 request처리와 보안성을 높인다. (ex: NGiNX, Apache)

wsgi? uwsgi? asgi?

WSGI

CGI (Common Gateway Interface, 웹 서버와 외부 프로그램 사이에서 정보를 주고받는 방법/규약) 중 하나로,
Python App과 웹서버(Apache, Gginx) 간의 통신 방식의 표준을 정의한 것

UWSGI

wsgi서버 중 하나 (대표적으로 flup, gunicorn, uswgi)

ASGI = Asynchronous Server Gateway Interface

: web server와 프레임워크 (Django), 어플리케이션을 비동기로 연결해주는 Python의 표준 인터페이스

  • HTTP, HTTP/2, WebSocket 등의 여러 프로토콜 스타일 처리 가능
  • WSGI를 계승한 것으로, 비동기 요청인 web socket을 처리하는 이벤트로서 connect, send, receive, disconnect가 있음



-참고-
https://www.youtube.com/watch?v=5rjhJRyu8s8&feature=youtu.be
https://velog.io/@tn841/WSGI-uWSGI-mod-wsgi
https://velog.io/@seanlion/cgi

1개의 댓글

comment-user-thumbnail
2021년 1월 14일

많은 도움이 되었습니다!

답글 달기