CS 공부 - 네트워크

WS vs WAS

Nuri-KSLV-II 2023. 2. 23. 16:45

웹서버와 웹 어플리케이션 서버의 차이

📌 1. WS vs WAS

웹 서버와 WAS의 차이는 어떤 타입의 컨텐츠를 제공하느냐에 있다

  • 웹서버(Web Server)는 정적인 컨텐츠 (html,css, js)를 제공하는 서버이다. ex) Apache, Nginx
  • 웹 어플리케이션 서버(WAS)는 DB조회나, 어떠한 로직을 처리해아 하는 동적인 컨텐츠를 제공하는 서버이다. ex) Tomcat, Jeus
  • 웹 서버와 WAS는 각각 독립적으로 존재할 수 있음
  • 대부분의 WAS는 정적인 컨텐츠도 제공해주고 있기 때문에, 웹 서버 없이 WAS로만 존재할 수 있음 (웹 서버 < WAS 포함 개념)



📌 2. 그럼에도 불구하고 WS를 WAS 앞단에서 사용하는 이유

a. WAS가 해야 할일의 부담을 줄이기 위해서

WAS

  • WAS 앞에 웹서버를 둬서 웹 서버에서는 정적인 문서만 처리
  • WAS는 로직만 수행하도록 기능을 분배해 서버의 부담을 줄임

b. WAS의 환경설정 파일을 외부에 노출시키지 않도록 하기 위해서

  • 클라이언트와 연결하는 포트가 직접 WAS에 연결되어 있다면 중요한 설정 파일이 노출 될 수 있음
  • WS와 WAS에 접근하는 포트가 다르기 때문에, WAS에 들어오는 포트에는 방화벽을 쳐서 보안을 강화할 수 있음



📌 3. 아파치와 톰캣 예시

  • CGI란 Common Gateway Interface로서 웹 서버 상에서 프로그램을 동작시키기 위한 방법을 정의한 프로그램 또는 스크립트

  • CGI로 인해 다양한 언어로 짜여진 각 프로그램을 아파치에서 실행할 수 있음

  • 예를들어 아파치에 PHP 모듈을 설치 했을 경우

    1. 요청이오면 아파치는 HTTP 헤더를 분석하고 파싱하여 PHP로 파라미터를 넘김
    2. PHP에서는 파라미터를 받아 응답할 HTML 문서를 만들어서 아파치에 전달
    3. HTML 문서를 전달 받은 아파치는 CSS, JS, img 등 정적인 자원들과 함께 브라우저로 반환
  • JAVA는 CGI로 구현되어 있지 않음

    • 자바 자체가 무겁고, common 라이브러리와 JEE라는 플랫폼이 존재하기 때문에 아파치에서 굳이 CGI를 제공하지 않음
    • 톰캣은 Default Servlet을 통해 정적인 파일을 제공해 줄 수 있어서 was이면서 ws의 역할을 수행할 수 있음
    • 그럼에도 was를 두는 이유는 위에 언급한 이유들 때문



내용참고 및 그림 출처
웹 서버와 WAS( Web Application Server ) 차이