감상문

Web vs WAS

ihl 2021. 7. 22. 12:51
https://www.youtube.com/watch?v=F_vBAbjj4Pk
Web Server vs WAS 1
https://www.youtube.com/watch?v=NyhbNtOq0Bc
Web Server vs WAS 2

  Web Server와 WAS의 차이가 궁금해져서 위 영상들을 찾아보게 되었다. 미리 정리하자면 Web Server와 WAS는 상황에 따라 변하는 정보를 제공할 수 있는가 라는 관점에서 차이가 있다.

 

1. Web Server

  • Web: 인터넷을 기반으로한 정보를 공유/검색할 수 있게 하는 서비스
     - URL(주소), HTTP(통신규칙), HTML(내용)으로 구성된다.
  • Server: 클라이언트에게 네트워크를 통해 정보/서비스를 제공하는 컴퓨터 시스템
  • Web Server: 인터넷을 기반으로 클라이언트에게 웹 서비스를 제공하는 컴퓨터

  위 정보를 바탕으로 WebServer와 클라이언트가 어떻게 통신하는지 알아보자. 먼저 클라이언트는 웹서버에게 주소(URL)로 통신규칙(HTTP)에 맞게 정보를 요청한다. 서버는 클라이언트의 요청을 기다리다가 요청(http)이 오면 알맞은 데이터(HTML, CSS, 이미지...)를 응답한다. 이 때 웹 서버에서는 HTML과 같이 정적인 데이터만 줄 수 있기 때문에 DB 조회와 같은 동적인 컨텐츠를 제공할 수 없다는 한계가 있었다. 

  * HTML은 프로그래밍 언어가 아니다. 프로그램이란 특정 작업을 수행하기 위한 명령어의 모음으로, HTML은 단순히 문서나 데이터의 구조를 표현하기 위한 용도(마크업 언어)로, 명령어가 없으므로 실행할 수 없다.

 

2. WAS(Web Application Server)

WAS의 동작

  • Web Application: 웹 브라우저에서 실행되는 응용 프로그램
  • Web Container: jsp 등을 실행시킬 수 있는 소프트웨어
  • Web Application Server: 웹 서버와 웹 컨테이너가 합쳐진 프레임워크
    -웹 애플리케이션을 실행시켜 필요한 기능을 수행하고 그 결과를 웹 서버에게 전달
    -php, jsp, asp와 같은 언어들을 사용하여 동적인 페이지를 생성 가능
    -프로그램 실행 환경과 데이터베이스 접속 기능 제공 => 비즈니스 로직 수행 가능

  WAS는 정적 페이지를 제공하는 웹 서버와 프로그래밍 언어를 실행하는 웹 컨테이너가 합쳐진 프레임워크이다. 따라서 클라이언트가 WAS에 정적 페이지를 요청하면 WAS 내의 Web Server에서 처리되고, 동적 페이지가 요청되면 Web Container 단에서 동적 컨텐츠를 생성(프로그램 실행)하는 식으로 처리된다.

 

  WAS 자체로 웹 서버의 역할이 수행 가능하므로 WAS만 두어도 되지만, 일반적으로 Web Server를 앞에 두고 그 뒤에 WAS를 연결하는 형태를 갖는다.(3번의 장점 때문에!)

 

 *Web Server 종류: Apache, Nginx, Microsoft IIS

 *WAS 종류: Tomcat, Jeus

 

 *node.js는 WAS일까?: 확실한 답을 찾지는 못했지만 내 생각에 node.js는 WAS가 아니다. node.js는 JavaScript를 웹 브라우저 외의 환경에서 사용하기 위한 런타임이지 웹 서버를 만들기 위한 용도가 아니기 때문이다. 그렇다면 express는 WAS인가? express는 WAS가 맞을 것 같다. express 서버는 정적/동적 컨텐츠를 모두 제공해줄 수 있기 때문이다.

 

3. WAS의 장점

일반적인 WAS 적용 방법

  WAS는 일반적으로 하나의 웹 서버를 앞에 두고 웹 서버에 여러 WAS가 연결된 형태로 되어있다. 이러한 구조는 다음과 같은 장점을 가진다.

  • 서버 부하 방지
    -정적 컨텐츠는 Web Server, 동적 컨텐츠는 WAS(Web Container)로 분리하여 처리하므로 더 효율적이다.
      -> Tomcat(WAS)의 경우 5.5 때 정적 컨텐츠 처리기능이 추가되었는데 순수 Apache(Web Server)를 사용하는 것에 비해 성능적 차이가 없다고 한다.
  • 보안 강화
    -클라이언트와 WAS가 직접 연결되지 않으므로 WAS 설정 파일을 외부에 노출시키지 않는다.
    -Web Server가 공격받더라도 중요한 데이터를 처리하는 Web Container가 분리되어 있으므로 더 안전하다.
    -웹서버와 WAS에 접근하는 포트가 다르기 때문에 WAS에 들어오는 포트에 방화벽을 적용할 수도 있다.
  • 분산처리
    -웹 서버를 앞에 두고 여러 대의 WAS들을 연결하여 로드밸런싱, 장애 극복(fail over/fail back) 가능
    -fail over: 하나의 WAS에 장애가 생기면 해당 WAS만 중지하고, 다른 WAS들이 해당 WAS가 하던 일을 대체한다.
    -fail back: 중지되었던 WAS를 다시 재작동한다.

 


WAS 구조: https://victorydntmd.tistory.com/121