WS / WAS 차이
< 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를 증설하면 되서
효율적인 리소스 관리가 가능해진다.