본문 바로가기
책벌레와 벌레 그 사이 어딘가/개념쌓기

[개념쌓기] WAS & WS

by veganwithbacon 2022. 12. 28.
반응형

WAS WERE?뭔 헛ㅅ

 

WS(Web Server)는 정적인 컨텐츠(html,css,js)를 제공하는 서버이다.

    ex) Apache, Nginx

 

WAS는 DB 조회나, 어떤 로직을 처리해야하는 동적 컨텐츠를 제공하는 서버이다.

    ex) Tomcat, Jeus

 

  한국의 코리안을 위한 짧은 쇼츠 요약 서머리

WS와 WAS의 제일 큰 차이는 어떤 타입의 컨텐츠를 제공하냐의 차이인 것이다.

웹 서버와 WAS는 각각 독립적으로 존재할 수 있다.

대부분의 WAS는 정적인 컨텐츠를 제공해주기 때문에, 웹 서버 없이 WAS만 존재할 수 있다.

그렇기에 WAS는 웹 서버를 내포하는 개념으로 말할 수 있다.

 

WAS 자체로 웹 서버의 역할을 수행하기 때문에 무조건적으로 웹 서버를 앞단에 두어야 할 이유는 없다.

무슨 말인지 궁금하면 아래 글도 잘 보자.

  웹 서버(Web Server)

- 정적인 파일(html,js,이미지 파일 등)을 제공하기 위한 서버로, HTTP 프로토콜에 의해 제공

- 정적인 파일로만 처리 가능한 것은 WAS로 요청을 넘기지않고 바로 요청 처리

  (자체 처리할 수 없는 정보에 대해 WAS에 처리를 요청한다)

- 요청이 많을 경우 웹서버에서는 웹문서를 WAS에서는 JSP페이지를 양분하여 처리함으로서 서버의 부담을 줄여주는

  역할도 가능   ex) apache, nginx, gws, etc...

 

 

  웹 어플리케이션 서버(Web Application Server)

:  JSP, ASP, PHP 등 사용자의 입력을 받아 무언가를 처리하고 결과를 보여 데이터를 처리하는 웹서버(DB조회, 로직처리 요구되는 컨텐츠) 

=> 정적인 데이터 처리가 가능하나, 부하가 많이 걸려 좋지 않다.

 

  WAS의 특징

- HTTP 기반으로 동작

- 웹 서버 기능 포함(정적 리소스 제공 가능)

-프로그램 코드를 실행해서 애플리케이션 로직 수행

  : 동적 HTML, HTTP API(JSON)제공

  : 서블릿, JSP, 스프링 MVC 동작

 

즉, 동적 데이터를 제공하기 위한 서버, 웹서버에서 처리할 수 없는 동적인 정보를 처리하여 웹서버에 정적인 정보를 제공

또한 일반적으로 웹서버의 기능을 내제해 웹 서버 없이도 서비스가 가능하다

- WAS와 DB가 연결되어 WAS에서 처리에 필요한 데이터를 꺼내와 원하는 정보로 가공

  ex) tomcat, jeus, web logic ...

 

 

=> 위와 같은 특징만 봐도 차이점이 어느 정도 보이지만, WS와 WAS의 차이에 대해 알아보자

  • WS는 정적 리소스(파일), WAS는 애플리케이션 로직
    • WS도 프로그램을 실행하는 기능을 포함하기도 한다
    • WAS가 WS의 기능을 제공하기도 한다
  • 자바는 서블릿 컨테이너 기능을 제공하면 WAS
    • 서블릿 없이 자바 코드를 실행하는 서버 프레임워크도 있다
  • WAS는 애플리케이션 코드를 실행하는데 더 특화

 

  WEB SERVER와 WAS를 나눠야하는 이유

1. 데이터 처리 방식이 달라 정적 컨텐츠를 굳이 WAS에서 처리하여 부하를 줄 필요가 없다

2. 사용자들에게 WAS는 공개될 필요가 없다(보안)

3. 여러대의 WAS를 연결 가능(로드밸런싱의 역할 및 fail over, fail back 처리에 유리)

4. 여러 웹 애플리케이션 서비스 가능(java 서버, C# 서버, php 서버 등을 하나의 웹서비스를 통해 서비스 가능)

 

이제는 잘봤다면, 이해가 될 것이다.

WAS가 해야 할 일의 부담을 줄이기 위해서가 첫번째고,

WAS의 환경설정 파일을 외부에 노출시키지 않도록 하기 위함이 두번째이다.

 

 

  아파치 웹서버와 아파치 톰캣의 차이

- 아파치 웹서버 : Web Server

- 아파치 톰캣 : WAS

 

  웹 시스템 구성 - WAS, DB

  • WAS, DB만으로 시스템 구성 가능 
  • WAS는 정적 리소스, 애플리케이션 로직 모두 제공 가능
  • WAS가 너무 많은 역할을 담당하면 서버 과부하가 우려된다
  • 중요한 애플리케이션 로직이 정적 리소스 때문에 수행이 어려울 수 있다.
  • WAS 장애 시 오류 화면도 노출 불가능(WAS는 자주 장애가 발생)

 

  웹 시스템 구성 - WS, WAS, DB

  • 정적 리소스는 WS가 처리
  • WS는 애플리케이션 로직 같은 동적인 처리가 필요하면 WAS에 요청을 위임
  • WAS는 중요한 애플리케이션 로직 처리 전담
  • 정적 리소스만 제공하는 WS는 잘 다운되지 않는다
  • 애플리케이션 로직이 동작하는 WAS 서버는 쉽게 다운된다
  • WAS, DB 장애 시 WS 오류 화면 제공 가능

  • 효율적인 리소스 관리
    • 정적 리소스가 많이 사용되면 WS 서버 증설
    • 애플리케이션 리소스가 많이 사용되면 WAS 증설

 

참고자료 : 

https://m.blog.naver.com/bluefish0121/221294387117 

https://victorydntmd.tistory.com/121 

https://velog.io/@away0419/WS-WAS-%EC%B0%A8%EC%9D%B4 

https://kkyu-coder.tistory.com/168 

 

반응형

댓글