Gunicorn 이란? 쓰는 이유는?
Django 를 이용해 개발을 진행하고 배포 단계로 나아가게 되면 Ginicorn 이나 uWSGI 라는 용어를 마주치게 된다. Gunicorn 과 uWSGI 모두 WSGI 기술의 일종이다. 그렇다면 WSGI가 뭔지, 왜 Gunicorn을 사용하는지 알아보자!!
#1 WSGI 기술 이란? (Gunicorn이 필요한 이유)
만든 서비스를 배포하고나면 사용자는 웹서버(Nginx)로 부터 우리가 만든 서버 어플리케이션(Django)로 요청을 보내게 된다. 이때, 웹서버에서 보낸 요청은 HTTP 혹은 HTTPS의 형태인데 Django는 성능과 보안상의 이유로 이 요청을 직접 받을 수 없다. 때문에 웹서버 요청을 해석해서 파이썬 어플리케이션(Django) 쪽으로 전달 해줘야 한다. 이 역할을 해주는 기술이 바로 WSGI 기술이다.
즉, Django로 개발 후 배포를 진행 할 경우에는 WSGI 기술이 꼭 필요하다는 것이다.
#2 Gunicorn 이란? 쓰는 이유는?
이제 Gunicorn이 python WSGI HTTP 서버로서의 역할을 수행 해준다는 사실을 알았다. 그렇다면 왜 Gunicon일까? uWSGI도 있고 Django에서 기본적으로 재공하는 Django runserver도 WSGI 역할을 수행 할 수 있다. 하지만 대부분의 경우 Gunicorn을 사용하게 되는데 그 이유를 정리하자면 다음과 같다.
가볍고 성능, 보안적으로 우수함 : Django runserver의 경우 보안, 성능적으로 검증되지 않아 배포환경에서는 잘 사용하지 않는다.
Worker(여러 작업자)를 설정함으로써 멀티스레드를 구현, Request를 효율적으로 처리
Guincorn이 uWSGI보다 조금 더 좋고 가벼워서 많이 사용
정리해보자면, 웹서버와 Django 사이에서 Request를 처리해주는 역할을 해줄 기술이 필요하고, 이 과정에서 WSGI를 사용하며 파이썬에서 사용 가능한 것은 대표적으로 WSGI, Gunicorn이 있다! 어떤 역할을 하고 왜 필요한지 알고 잘 선택해서 사용해보자
** 추가적으로 Gunicorn의 경우 UNIX 환경에서 사용되기 때문에 Djnago에서 사용 할 경우 같은 UNIX 기반인 Docker에서 사용하면 이용에 용이하다!!