WS와 WAS의 차이

    django 배포를 공부하며 nginx는 왜 사용하는지 장고를 배포할 때 어떻게 사용해야하는지를 공부하기 시작하며 기록한 내용입니다 :)

    WS (Web Server) 란?

    Web이란?

    인터넷을 기반으로한 정보를 공유, 검색할 수 있게 하는 서비스
    ex ) url(주소), http(통신 규칙), html(내용)

    Server란?

    클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 시스템

    Web + Server = Web Server?

    => 인터넷을 기반으로 클라이언트에게 웹 서비스를 제공하는 컴퓨터
    따라서 클라이언트와 서버의 입장으로 나누어 보면
    클라이언트 : 웹서버에게 주소(url)를 가지고 통신규칙(http)에 맞게 요청하면, 알맞은 내용(html)을 응답받는다.
    서버 : 클라이언트의 요청을 기다리고, 웹 요청(http)에 대한 데이터를 만들어서 응답한다. 이때 데이터는 웹에서 처리할 수 있는 html, css, 이미지 등 정적인 데이터로 한정한다.

    정리하면, 웹 서버는 브라우저를 통해 url로 접속을 하면 리소스들을 받아서 화면에 출력을 해주는 서버를 뜻한다. 웹 서버만 사용할 경우에는 정적인 리소스만 받아와지는데 image, css, html, javascript 같은 것들이 정적인 리소스들이다.

    ex ) Apache, Nginx

    SSL, 로드밸런싱, 캐싱을 통해 서버까지 요청과 리소스의 부담을 줄여 더 효율적인 서빙을 할 수 있다고 합니다. 추가적으로 공부해 볼 내용인 것 같아요.

    WAS (Web Application Server)

    정적인 리소스를 WS가 처리한다면 동적인 리소스는 어떻게 처리하느냐?
    그것을 해결해줄 수 있는 것이 WAS이다.

    Web Application이란?

    웹에서 실행되는 응용 프로그램을 뜻한다.

    Web Application Server란?

    jsp, php같은 언어들을 사용해 동적인 페이지를 생성할 수 있는 서버
    프로그램 실행 환경과 데이터베이스 접속 기능을 제공하며 비즈니스 로적을 수행할 수 있어야 한다.

    Web Server + Web Container = WAS?

    java에서는 was를 웹 어플리케이션 컨테이너라고 부르기도 한다. 그렇다면 웹 어플리케이션이란 뭘까?

    Web Container란?

    jsp, servlet을 실행시킬 수 있는 소프트웨어이다.

    WAS 동작 환경


    Client가 요청을 보내게 되면 이게 정적으로 처리해야 하는지 동적으로 처리해야하는지를 Web Server가 판단한다.
    정적으로 처리해야한다면 결과 값을 바로 client로 전송해주고,
    동적으로 처리해야한다면 값을 Web Container로 이동한다. Web Container에서는 동적데이터를 처리해 다시 Web Server로 이동시켜주고, 결과값을 client로 전송해준다.

    WS와 WAS로 나누어진 이유는?

    WAS는 정적파일도 사실 처리할 수 있다. 그럼에도 불구하고 WS와 WAS를 따로쓰는 이유는 WS와 WAS가 목적이 다르기 때문이다. 웹 서버는 정적인 데이터만 처리하며 WAS는 동적인 데이터를 처리한다.
    이는 일을 분담하여 요청을 빠르게 처리하기 위함이다.

    댓글