정의
Gunicorn은 Python으로 작성된 웹 애플리케이션을 실행하기 위한 WSGI(Web Server Gateway Interface) 호환 HTTP 서버이다. 주로 Django, Flask 등과 같은 Python 웹 프레임워크와 함께 사용되며, 프리포크(pre-fork) 워커 모델을 기반으로 클라이언트의 요청을 처리한다.
개요
Gunicorn은 2009년부터 공개된 오픈 소스 프로젝트로, BSD 3-Clause 라이선스 하에 배포된다. 서버 자체는 순수 Python으로 구현되어 있어 별도의 컴파일 과정을 필요로 하지 않으며, pip 패키지 관리자를 통해 간단히 설치할 수 있다. 운영 체제에 독립적이며, Unix 계열 시스템(리눅스, macOS 등)뿐 아니라 Windows에서도 제한적인 호환성을 제공한다. Gunicorn은 단일 프로세스가 아닌 다수의 워커 프로세스를 사전에 생성해 두고, 각 워커가 독립적으로 요청을 처리함으로써 높은 동시성을 확보한다.
어원/유래
- Gunicorn이라는 명칭은 “Green Unicorn”의 축약형으로, 원래 Ruby 언어에서 사용되는 Unicorn 서버와의 연관성을 강조하기 위해 고안된 것으로 알려져 있다.
- “Green”은 Unicorn 서버와 차별화된 구현을 의미하기 위해 선택된 것으로 추정되며, 정확한 의도에 대한 공식적인 설명은 제한적이다.
특징
| 구분 | 내용 |
|---|---|
| 워커 모델 | 프리포크 방식을 사용하여 다수의 독립 워커 프로세스를 사전에 생성함. |
| 호환성 | WSGI 표준을 준수하므로 거의 모든 Python 웹 프레임워크와 호환. |
| 설정 | 명령줄 옵션 및 설정 파일(gunicorn.conf.py)을 통해 포트, 워커 수, 타임아웃 등 다양한 파라미터를 조정 가능. |
| 성능 | 가벼운 구조와 멀티프로세싱 방식을 통해 높은 처리량과 낮은 레이턴시를 제공. |
| 확장성 | gevent, eventlet 등 비동기 워커 클래스를 선택해 비동기 I/O 처리도 가능. |
| 보안 | TLS 종료는 별도 프록시(Nginx, Apache 등)와 연계해 수행하는 것이 일반적이며, 직접 TLS를 지원하는 옵션도 존재. |
| 배포 | Docker 이미지와 같은 컨테이너 환경에서도 널리 사용되며, 시스템 서비스 매니저(systemd, upstart 등)를 통한 관리가 용이. |
관련 항목
- WSGI (Web Server Gateway Interface)
- HTTP 서버
- Django, Flask 등 Python 웹 프레임워크
- Unicorn (Ruby 기반 HTTP 서버)
- uWSGI
- Nginx, Apache HTTP Server (리버스 프록시 역할)
- Docker (컨테이너 배포)
본 내용은 공개된 문서·프로젝트 저장소·공식 발표 등을 기반으로 작성되었으며, 확인되지 않은 세부 사항에 대해서는 “정확한 정보는 확인되지 않는다.”라고 표기하였다.