웹 서버? 웹 어플리케이션 서버?
웹 서버에 대해 공부하면서, 웹 서버와 웹 어플리케이션 서버로 구분된다는 사실을 알게되었고, 잘 정리가 된 블로그를 읽고 나름대로 정리(?)를 해보려고 한다.
웹 서버와 웹 어플리케이션 서버의 차이점을 정리하기에 앞서, 웹 서비스는 어떤 구조로 이루어져 있고, 웹 서비스를 이루고 있는 웹서버와 웹 어플리케이션 서버가 무엇인지를 정리해 보려고 한다.
웹 서비스 구조
- Client → 웹 서버 → DB
- Client → 웹 어플리케이션 서버 → DB
- Client → 웹 서버 → 웹 어플리케이션 서버 → DB
웹 서비스는 위처럼 다양한 구조를 가질 수 있다.
웹 서버만 사용할 수도, 웹 어플리케이션 서버만 사용할 수도, 둘 다 사용할 수도 있다.
이러한 구조를 쉽게 이해하기 위해서는 웹 서버와 웹 어플리케이션 서버가 각각 어떤 역할을 하는지 정리가 필요하다.
웹 서버(Web Server)
웹 서버는 HTTP 요청을 받아 HTML, CSS, Javascript, Image 등의 정적인 정보를 반환하는 역할을 한다.
대표적으로 IIS, Apach, Nginx 등이 있다.
정적인 웹 리소스들을 클라이언트로 전달하고, 클라이언트로부터 콘텐츠를 전달받아 저장하거나 처리한다.
사용자로부터 동적인 요청이 들어왔을 때, 해당 요청을 WAS에게 요청한다.
웹 어플리케이션 서버(Web Application Server)
웹 어플리케이션 서버는 비즈니스 로직을 처리할 수 있어 사용자에게 동적 서버 콘텐츠를 전달할 수 있다.
동적 서버 콘텐츠를 전달한다는 것으로 일반 웹 서버와 구별되며, 주로 데이터베이스 서버와 같이 서비스를 수행한다.
대표적으로 Tomcat, JBoss, Jeus 등이 있다.
웹 서버와 웹 어플리케이션 서버를 분리하는 이유
웹 서버는 정적인 컨텐츠를 웹 어플리케이션 서버는 동적인 컨텐츠를 전달한다는 차이가 있지만, 기능으로만 봤을 때는 웹 어플리케이션에서 두가지 역할을 모두 할 수 있어보인다.
역할을 분리함으로서 더 효율적으로 사용자에게 서비스를 제공할 수 있게 된다.
만약 WAS가 정적 컨텐츠 요청까지 처리하게 된다면, 부하가 커지고 동적 컨텐츠 처리가 지연되면서 수행 속도가 느려지고 이에 따라 페이지 노출 시간이 늘어나는 문제가 발생하여 효율성이 크게 떨어지게 된다.
위 그림과 같이 웹 서버를 앞단에 두고 WAS는 웹 서버가 처리하기 힘든 서버 사이드 코드의 로직등을 수행하여 웹서버와 함께 사용자에게 양질의 컨텐츠를 제공할 수 있다.
사람들이 많이 접속하는 대용량 WAS인 경우, 서버의 수가 여러 대인 경우, 사용 중인 WAS에서 문제가 생겨서 WAS를 재시작해야하는 경우 앞단의 웹서버에서 해당 WAS를 사용하지 못하도록 요청을 차단한 후 WAS를 재시작 한다면, 사용자들은 WAS에 문제가 발생한지 모르고 이용이 가능하다. 이런 처리를 장애극복기능이라 한다.
즉 규모가 커질수록 웹서버와 웹 어플리케이션서버를 분리하는 것이다.
참고자료
'Back-end' 카테고리의 다른 글
ElastAlert (1) | 2024.06.09 |
---|---|
Slack으로 OAuth 사용하기 (0) | 2022.10.31 |
[HTTP] 응답 상태 코드 정리 (0) | 2021.09.14 |
[REST API]REST API란? (0) | 2021.08.29 |
[WEB] HTTPS와 SSL인증서 (0) | 2021.08.29 |