웹 서버와 WAS의 차이에 대해 명확히 알고 있지 않은 상태에서 개발자로 일을 한다는 생각이 들어서 이번에 두 서버의 차이에 대해 확실히 알고 넘어가기 위해 글을 정리하게 되었습니다.
1. 웹 서버란?

사용자가 브라우저 주소창에 url을 입력해서 페이지를 요청했을 때, http 요청을 받아들여 정적인 콘텐츠(ex. HTML 문서)를 사용자에게 전달해주는 역할을 말합니다.
- 웹 서버가 하는 일
- client에게 웹 리소스를 전달하거나, client로부터 콘텐츠를 전달받아 저장/처리하는 역할
- client로부터 동적인 요청(=DB에 접근하는 비즈니스 로직)이 들어왔을 때, WAS에게 요청하는 역할
- 웹 서버의 종류
2. WAS(Web Application Server)란?

웹 서버와 동일하게 HTTP 기반으로 동작하며, 웹 서버가 할 수 있는 대부분의 기능을 WAS에서도 처리할 수 있습니다. 서버사이드 코드를 처리할 수 있어 사용자에게 동적인 콘텐츠를 전달할 수 있으며, 주로 DB 서버와 같이 수행합니다.
3. 차이점
웹 서버는 정적인 콘텐츠(HTML, CSS, ..)를 client에게 보여주는 역할을 하며 WAS는 동적인 데이터를 위주로 처리합니다.
WAS에서도 웹 서버가 하는 일을 할 수 있는데 왜 서버를 분리하는 것일까요 ..?
4. 웹 서버와 WAS를 분리하는 이유

- WAS는 DB 조회 및 다양한 비즈니스 로직을 처리하는 데 집중해야 합니다. 따라서, 단순한 정적 콘텐츠는 웹 서버에게 맡김으로써 기능을 분리해 서버 부하를 방지해야 합니다. 만일, WAS가 정적 콘텐츠 요청까지 처리한다면 부하가 커지고 동적 콘텐츠 처리가 늦어지면서 수행 속도가 느려지게 됩니다.
- 사람들이 많이 접속하는 대용량 WAS인 경우, 서버 수가 여러 대일 수 있습니다. 만일, 사용 중에 WAS에 문제가 생겨 재시작해야 하는 경우가 생겼을 때 앞단의 웹 서버에서 WAS를 사용하지 못하도록 요청을 차단한 후 WAS를 재시작한다면 사용자들은 WAS에 문제가 생긴지 모른 상태로 이용할 수 있습니다. 규모가 커질 수록 웹 서버와 WAS를 분리하여 효율성, 배포 및 유지 보수 편의성을 높일 수 있습니다.
참고: https://yozm.wishket.com/magazine/detail/1780/