Django 개발을 진행하고 배포를 결정하는 순간부터는 gunicorn이나 uWSGI라는 기술들을 항상 접하게 된다.
gunicorn은 WSGI기술의 일종으로서 무슨 역할을 하고 왜 쓰는지에 대해서 알아보자.
WSGI 란?
파이썬 애플리케이션이(파이썬 스크립트) 웹 서버와 통신하기 위한 인터페이스이다. 웹서버에서의 요청을 해석하여 파이썬 애플리케이션 쪽으로 던지는 역할을 수행한다.
Gunicorn 란? 쓰는 이유는?
Gunicorn은 Python WSGI로 WEB Server(Nginx)로부터 서버사이드 요청을 받으면 WSGI를 통해 서버 애플리케이션(Django)로 전달해주는 역할을 수행한다. Django의 runserver 역시도 똑같은 역할을 수행하지만 보안적으로나 성능적으로 검증이 되지 않았기 때문에 production 환경에서는 사용할 수 없다.(개발용으로는 유용하다)
produciton 환경에 적합한 Gunicorn
WSGI는 멀티 쓰레드를 만들 수 있기 때문에 Requset 요청이 많아지더라도 효율적으로 처리할 수 있다. 즉, production 환경에 적합하다.
종합적으로 정리하자면, 웹서버와 Django 사이에서 Request를 처리해주는 역할을 한다. 이 과정에서 WSGI를 사용하게 되는데 파이썬에서 대표적인 WSGI는 uWSGI, gunicorn이 존재한다. 두개중 gunicorn의 퍼포먼스가 조금 더 좋고 가볍다는 의견이 다수이기 때문에 필자 역시 gunicorn을 사용하고 있다.
728x90
'SW개발 > IT 용어' 카테고리의 다른 글
[SoC]관심사 분리란? (0) | 2021.12.21 |
---|---|
[테스트]단위 테스트(Unit test)란? (0) | 2021.07.21 |
[Webhook]웹훅이란? (5) | 2021.05.27 |
[Kubernetes]쿠버네티스란? (0) | 2021.05.13 |
[Docker]Docker(도커)란? (feat. Linux 컨테이너) (0) | 2021.05.12 |