ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Django - 웹 서버
    Django 2021. 3. 29. 14:42

     

    웹 클라이언트의 요청을 받아서 처리하는 서버를 웹 서버와 웹 애플리케이션 서버로 분류할 수 있다.

     

     


     

    CGI 방식의 단점

     

    CGI는 프로그래밍 언어나 스크립트가 아닌 규격을 의미한다. 규격을 준수한다면 언어에 상관없이 구현이 가능하다. 전통적인 방식은 웹서버가 Python, C++등으로 만들어진 CGI 프로그램을 직접 호출하여 개별 프로세스를 생성하는 방식이다.

     

     

    CGI 방식은 각각의 클라이언트 요청에 대하여 독립적인 프로세스가 생성된다. 프로세스에 비례해 메모리 요구량도 커져서 시스템에 많은 부하를 줄 수 있다. 이런 이유로 현재는 거의 사용하지 않는다.

     

    CGI 방식의 대안 기술

    • 스크립트 엔진(인터프리터)을 웹 서버에 내장시켜 오버헤드를 줄이는 방식이 있다. 파이썬의 경우 mod_wsgi 모듈을 사용하고 있다.
    • 애플리케이션을 처리하는 프로세스를 미리 데몬으로 가동시킨 후, 웹 서버의 요청을 데몬에서 처리하는 방식이 있다. 파이썬은 데몬 방식에서도 mod_wsgi 모듈을 사용한다.
    • 데몬으로 처리하는 방식은 기술의 발전(스레드 처리 보강, 객체 지향 기술)이 반영되면서 애플리케이션 전용 데몬인 애플리케이션 서버 방식으로 발전했다. JSP, ASP 기술에서 애플리케이션 서버 방식을 이용하고 있다.

     


     

    애플리케이션 서버 방식

     

     

    웹 서버는 정적 페이지를 웹 클라이언트에게 제공하는 것이 주 역할이지만, 그 외에도 캐시 기능, 프록시 기능 등의 추가적인 기능을 제공한다. 또한 동시에 접속을 허가하는 클라이언트 수의 제한 및 처리 프로세스 관리, 요청 및 응답에 관한 로그의 기록, 안정성 확보를 위한 인증 제어 및 암호화 처리 등 HTTP/HTTPS의 제어에 필요한 여러 기능을 제공한다.

     

    웹 애플리케이션 서버는 웹 서버와의 연동 규격만 잘 따른다면, 임의의 언어 플랫폼을 사용해 프로그램을 실행시킬 수 있다. (자바 계열의 Tomcat, 파이썬 계열의 uWSGI 등의 대표적인 예다.) 이러한 웹 애플리케이션 서버 내의 웹 서버 기능들이 성능과 안정성 측면에서는 적합하지 않기 때문에 개발용으로만 제한적으로 사용되고, 운용 환경이나 대규모의 사이트에서는 잘 사용되니 않는다.

     


     

    웹 서버와의 역할 구분

     

     

    정적 페이지와 동적 페이지를 같이 제공하는 환경에서 웹 서버 또는 웹 애플리케이션 하나만으로 서비스하는 것은 비효율적이다. 동적 페이지와 정적 페이지를 처리할 때의 서버 자원 소요량이 다르기 때문이다.

     

    따라서 웹 서버와 웹 애플리케이션 서버 프로그램이 함께 필요하며, 두 개의 서버를 동일한 HW 박스에서 기동시키는 것이 가능하다. (서비스 운용 관리 측면에서 하나의 HW 박스에 구성하는 것이 더 간편하다.)

     

    HW 박스를 분리한다면 메모리 효율을 더 높일 수 있다. 각 서버간의 메모리 사이즈 비율을 조절할 수 있기 때문이다. 

    그래서 대형 웹 사이트에서는 HW 증설에 의해 웹 처리 용량을 높이는 작업이 용이하도록, 서로 분리하여 구성한다. 

     

     

    출처 : 파이썬 웹 프로그래밍

     

     

     

Designed by Tistory.