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
'책벌레와 벌레 그 사이 어딘가 > 개념쌓기' 카테고리의 다른 글
[개념쌓기] 오버로딩&오버라이딩 (0) | 2022.12.31 |
---|---|
[개념쌓기] RDBMS & NoSQL (0) | 2022.12.30 |
[개념쌓기] RESTful하다 (0) | 2022.12.25 |
[개념쌓기]CSMA/CD? CSMA/CA? (0) | 2022.10.25 |
[개념쌓기]Spring, 왜 쓰는걸까? (2) | 2022.10.14 |
댓글