웹 어플리케이션은 크게
Client -> WebServer(or Web Application Server) -> DB
로 구성된다.
웹서버(ex. nginx, apache)는 정적 컨텐츠를 client에게 전달하는 역할을 수행하고, WAS(tomcat...)는 웹서버 기능 + 어플리케이션 기능(비지니스 로직)을 수행한다.
WAS가 웹서버의 역할까지 수행할 수 있기 때문에 웹서버를 굳이 사용하지 않고 WAS만을 사용할 수도 있지만, WAS가 정적컨텐츠를 내려주는 역할까지 수행할 경우
- 비용이 많이 드는 WAS에서 정적 컨텐츠를 내려주는 역할까지 수행하는 것은 비용낭비
- WAS서버가 내려가는 경우, ERROR메세지를 담은 화면조차 보여줄 수 없다. (접근 자체가 불가능)
같은 문제가 발생하게 되어, 주로
Client -> WebServer -> Web Application Server -> DB 의 구조를 가지고
정적 컨텐츠 요청의 경우 WAS까지 가지 않고 WebServer에서 컨텐츠를 내려주며, 어플리케이션 로직과 관련 된 요청이 들어오는 경우 WebServer가 WAS에 요청을 위임하도록 한다.