NginX와 Gunicorn

2022. 1. 3. 18:10TIL

Web Server, WSGI Server

 

이전에 작성한 포스트인 웹 서버와 WAS에서 웹 서버와 WAS의 특징 및 차이에 대해 포스팅을 하였다.

이번 포스팅에서는 NginX와 Gunicorn이 어떤 것이고 어떻게 쓰는지, 왜 쓰는지에 대해 알아볼 것이다.

 

NginX란


NginX는 Web Server 중 하나이다. 대표적인 웹 서버로 아파치가 있다. 아파치 서버는 1995년 이후 압도적으로 1위를 달리고 있었지만 최근에 NginX에게 밀리고 있다.

 

 

아파치 vs NginX 비교


아파치(Apache)

  • MPM(Multi Process Modules) 방식으로 요청을 처리한다.
    • Prefork 방식 
      prefork MPM
      • 클라이언트의 요청에 대해 자식 프로세스를 생성하여 요청을 처리한다.
      • 하나의 자식 프로세스당 하나의 스레드를 갖는다.(최대 1024개)
      • 스레드 간 메모리 공유를 하지 않는다.(메모리 공유를 하지 않기 때문에 안정적이지만 그만큼 메모리 사용이 많아짐)
    • Worker 방식
      worker MPM

      • Prefork 방식보다 메모리 사용이 적고, 동시 접속자가 많은 서비스에 유리하다.
      • 자식 프로세스가 각각 여러 개의 스레드를 사용하고 각 스레드는 한 번에 한 연결을 담당한다.
      • 스레드간 메모리 공유가 가능하다.
Apache 2.4 이후에는 Event MPM이 도입되어 Event-Driven 방식의 요청 처리도 가능하다.

NginX

  • Event Driven 방식으로 동작한다.
  • 프로그램의 흐름이 이벤트에 의해 결정된다.
  • 동시요청(concurrent connections)이 많아도 메모리 사용량이 현저히 적다.
  • 초당 처리 요청 역시 많다.
  • 리버스 프록시(reverse proxy)로 사용이 가능하다.
    • 리버스 프록시 : 인터넷과 백엔드 사이에 있는 서버를 가리킨다(포워드 프록시는 클라이언트와 인터넷 사이에 존재)
    • 여러 WAS가 존재하면 클라이언트 요청을 분산시키는 역할 수행(로드 밸런싱)
    • 캐싱 가능(WAS까지 요청하지 않아도 클라이언트 요청에 빠르게 응답)
    • 민감한 WAS 정보(기기 id, MAC 주소 등)를 숨기는 보안 역할
  • SSL 지원
    • HTTPS의 인증서를 제공한다.
  • 웹페이지 접근 인증
    • 로그인 정보(관리자, 사용자)를 WAS에서 하지 않고 NginX에서 가능
  • 압축
    • 클라이언트가 보내는 요청이 Text일 경우 gzip을 이용하여 압축해 줄 수 있다.(JSON도 text 파일이다.)

 

Gunicorn이란


Gunicorn은 WSGI(Web Server Gateway Interface)의 일종으로 Django로 서버 배포를 하기 위해 필요한 존재이다. uWSGI도 파이썬의 대표적인 WSGI지만 Gunicorn의 퍼포먼스가 좀 더 좋고 가볍다는 의견이 있다.

 

  • WSGI는 CGI(Common Gateway Interface)에서 파생된 인터페이스로 CGI는 정적 웹에서 동적 웹으로 발전함에 따라 여러 다른 프로그래밍 언어가 사용되어 공통적인 형태로 요청을 주고받기 위해 만든 규약이다. 즉, 여러 언어 사용자들의 다양한 요청을 이해할 수 있도록 이를 공통된 규칙으로 동시 통역하는 역할
    • 웹 서버가 클라이언트 요청을 받으면 CGI에 의해 일관된 형태로 해석되어 이를 WAS에서 처리할 수 있다.
  • WSGI는 파이썬 스크립트가 웹 서버와 효율적으로 통신하기 위해 만들어진 인터페이스이다.
  • Gunicorn이나 uWSGI 등은 NginX로 들어오는 HttpRequest를 파이썬이 이해할 수 있게 동시 통역하는 존재이다.
  • server/gateway side(NginX side)와 web application/framework side(Django side)를 둘 다 구현하고 있는 하나의 프로그램이다.
    • 서버에 대해선 어플리케이션 역할을 수행하고, 어플리케이션에 대해선 서버의 역할을 수행하는 셈

 

 

 

 

 

출처

https://server-talk.tistory.com/296

 

웹서버의 종류와 특징 알아보기

웹서버의 종류와 특징 알아보기 이번 포스팅에서는 웹서버 종류 및 특징에 대해서 알아보도록 하겠습니다.  웹서버 종류 웹서버의 종류는 대표적으로 Apache, IIS, Nginx 가 있습니다 아직까지는 3

server-talk.tistory.com

http://www.opennaru.com/jboss/apache-prefork-vs-worker

 

Apache httpd - Prefork MPM 과 Worker MPM 의 비교 - Opennaru, Inc.

Apache HTTPD 2.0 버전에 추가된 MPM 중 가장 많이 사용하는 Prefork MPM과 worker MPM의 차이점을 간단하게 설명한다. 먼저 prefork MPM은 Apache 1.3 버전에서 사용하던 방식으로 자식 프로세스를 먼저 시작해 놓

www.opennaru.com

 

반응형

'TIL' 카테고리의 다른 글

[성능 테스트] 성능테스트 기본 지식  (0) 2022.07.04
[Python] os.system VS subprocess  (0) 2022.06.03
웹 서버와 WAS  (1) 2022.01.02