Back to the HTML

WS / WAS 차이

Backcoder 2022. 7. 22. 18:19

< WebServer / WebApplicationServer >

1. WS (Apache / NGINX)
- html / css / javascript 같은 Static 정적 요청 받아서 전달만 해줌
- 클라이언트쪽에서 렌더링 실행 ( 받아서 화면에 띄움 )
로직이 없는, "화면의 모양새" 만 전달해주는 서버


2. WAS ( TomCat / Jetty )
- 기본적으로 WS 역할 포함 (정적리소스 제공가능)
- 프로그램 코드를 실행해서 Application 로직을 실행하는
Servlet / JSP / SpringMVC / RestAPI / 같이 로직을 가진 요청을 받아서
웹 서버에서 작업을 수행해주고
실행 결과를 응답해서 보내주는 서버


=> 그렇다면 WS 기능까지 포함한 WAS만 쓰면 되지않을까?


회사에 일 잘하는 사람이 있다.
근데 일 잘한다고 이일 저일, 심지어 청소도 잘해서 청소까지 시켜버리면
과부화가 온다.


WAS 가 만능이긴 하다.
근데 복잡한 로직 요청을 수행하는건 그냥 WS 는 못한다. WAS 만 할줄 안다.
그럼 당연히 WAS 를 그 일 시키는게 효율적인 서버 사용이다.
(심지어 WAS 는 비싼 고급인력이다.)

실제로, WAS 만으로 서버를 돌리려 하면,
정적리소스 처리에 로직 처리까지 죽어라 혼자 일하다가 과부화와서
우리가 흔히 봤던 서버다운 페이지가 된다.

=> 그럼 어떻게 해?

WS 는 정적 리소스, HTML CSS JS 등을 뿌리는데 능숙하다.
게다가 싸고 효율적이다.

그럼 WS / WAS 를 섞어 쓰면 된다.


정석적인 웹 System 구성은

선두에 WS 를 세워서
정적 HTML CSS 등 리소스 요청을 처리하고

로직들어간 복잡한 요청이 들어오면
그럼 그때야 후방에 대기하고있던 WAS 가 처리한다.


WS : 행님 어려운 로직 요청 들어왔어요 도와주세요!

WAS : 아우 열심히구만. 동적리소스는 내가 처리함세. 거 html이나 잘 전달하시게!


이렇게 서버를 구성하면
정적리소스가 많이 사용되면 => WS 증설하고
동적API리소스 많이 사용된다싶으면 => WAS를 증설하면 되서
효율적인 리소스 관리가 가능해진다.