-
웹 서버(Web Server)와 웹 애플리케이션 서버(Web Application Server, WAS)의 차이웹 개발 2025. 2. 10. 09:06
웹 서버(Web Server)와 웹 애플리케이션 서버(Web Application Server, WAS) 의 차이를 Application이란 단어를 중점으로 비교합니다.
웹 애플리케이션 서버(Web Application Server, WAS)의 구조도를 보고, 웹 애플리케이션 서버(Web Application Server, WAS)안에 웹 서버(Web Server)가 있음을 확인한 후
웹 서버(Web Server)와 웹 애플리케이션 서버(Web Application Server, WAS)를 분리하는 이유에 대한 이야기를 추가적으로 합니다.
최종적으로 웹 서버(Web Server)와 웹 애플리케이션 서버(Web Application Server, WAS)의 종류를 확인한 후 마무리되는 문서입니다.1. 웹 서버(Web Server)와 웹 애플리케이션 서버(Web Application Server, WAS)의 차이점
웹 서버를 서칭해도, 웹 애플리케이션 서버를 서칭해도 정의와 관련된 문서가 먼저 나오기 보다, 이 두 가지의 차이점을 작성한 문서가 먼저 나옵니다.
웹 서버(Web Server)와 웹 애플리케이션 서버(Web Application Server, WAS)는 둘 다 "서버"의 역할을 하고 있고, 연속된 위치에 존재하기 때문에 주로 차이점을 비교하는 과정을 통해 정의를 구체화시키는듯 합니다.
우선, "서버"의 역할을 한다는 건 클라이언트가 데이터를 요청하면 요청한 데이터를 내어주는 역할을 한다는 겁니다. 웹 애플리케이션 서버(Web Application Server)는 웹 서버(Web Server)에서 애플리케이션(Application)이란 단어가 추가돼 있는데, 정확히 이 포인트를 집중하면 이 두 가지를 깔끔하게 이해할 수 있습니다.
애플리케이션은 사용자의 입력을 받아서 특정한 로직을 수행하는 프로그램을 의미하고, 이때, 특정한 로직은 회원가입, 로그인, 게시글 작성 등과 같은 기능을 담당하는 코드를 말합니다. 프로그램은 Java, Python, PHP 등 프로그래밍 언어로 작성되고, 사용자의 입력 데이터를 기반으로 데이터베이스와 연동하여 결과를 생성합니다.
이렇게 사용자의 데이터를 바탕으로 매번 다른 결과를 반환하는 서버가 바로 웹 애플리케이션 서버, WAS인 것입니다. 사용자의 데이터를 기반해 때마다 다른 결과를 반환하는 걸 "동적이다"라고 표현합니다.
그렇다면, 애플리케이션이란 단어가 빠진 웹 서버는 그렇지 않은 결과를 반환하겠죠. "정적이다"고 말할 수 있는 것들을요.즉, HTML, CSS, JavaScript, 이미지 파일과 같은 변하지 않는 리소스를 클라이언트에게 그대로 제공하는 역할을 합니다.
결론적으로, "클라이언트에게 어떤 웹을 반환하는가"가 두 서버가 가지는 가장 큰 차이점입니다.
웹 애플리케이션 서버(Web Application Server, WAS)는 사용자의 요청을 처리하고, 데이터베이스 또는 비즈니스 로직을 기반으로 동적인 응답을 생성하여 클라이언트에 반환합니다.
웹 서버(Web Server) 는 정적인 리소스(HTML, CSS, JavaScript, 이미지 등) 를 클라이언트에 반환합니다.
즉, 웹 애플리케이션 서버(지금부터 WAS라고 표현하겠습니다)는 사용자의 요청에 따라 내용이 달라지는 웹을 반환하고, 웹 서버는 항상 같은 정적인 웹을 반환하는 차이가 있습니다.
아래는 클라이언트에게 반환되어 보여지는 동적인, 정적인 웹 페이지들의 예시입니다.
동적인 웹 페이지 예시 정적인 웹 페이지 예시 언론사 로고는 https://blog.naver.com/kpfjra_/221542239279 에서 들고 왔습니다 아래는 정적인 페이지와 동적인 페이지를 클라이언트에게 반환할 때의 흐름을 표현한 구조입니다.
정적인 페이지에서는 데이터베이스가 요구되지 않고 있습니다. 클라이언트 → 웹 서버 → 클라이언트의 흐름으로 처리되고 있고,
동적인 페이지는 클라이언트 → 웹 애플리케이션 서버 → 데이터베이스 → 웹 애플리케이션 서버 → 클라이언트 흐름으로 처리되고 있습니다.
2. WAS의 Architecture
https://youtu.be/31tKPguQ1sk?si=C-uKghKrqAMEc0Qv 그런데 사실 WAS는 웹 서버까지 포함하고 있습니다.
*아래는 Spring 프레임워크를 아신다면 오픈
더보기저기서 서블릿(Servlet)은 Spring 기준으로 보면,
@Controller 레이어 아래의 @GetMapping 같은 요청 처리 메서드들이
내부적으로 Spring MVC의 DispatcherServlet을 통해 동작한다고 가볍게 이해하면 됩니다.
굳이 이렇게 분리해서 쓰곤 하는겁니다.
3. 왜 분리하는거죠?
1. 기능을 분리하여 서버 부하 방지
웹 서버는 정적 리소스를, 웹 애플리케이션 서버는 동적 응답만 처리하여 각각의 책임을 줄이고 서버 부하를 방지합니다.
Tomcat 5.5 는 서버 부하를 방지시켜주나, 아래에 이어질 다양한 이점들에 의해 여전히 분리가 선호됩니다.
2. 물리적으로 분리하여 보안 강화
서버를 물리적으로 분리하면 보안 문제가 하나의 서버에서 다른 서버로 전파되지 않습니다.
웹 서버가 해킹당해도 애플리케이션 서버의 중요한 데이터는 보호된다는 것입니다.
3. 여러 대의 WAS를 연결 가능
여러 대의 WAS를 준비하고 로드 밸런서라는 것을 통해 웹 서버와 연결하여 트래픽을 분산시켜 부하를 줄입니다.
4. 여러 웹 어플리케이션 서비스 가능
각 WAS가 다른 언어로 개발된 애플리케이션을 처리할 수 있습니다.
4. 웹 서버(Web Server)와 웹 애플리케이션 서버(Web Application Server, WAS)의 종류
대표 웹 서버 웹 서버에는 Apache HTTP Server, Nginx, IIS (Internet Information Services) 등이 있으며, 이 중 Apache가 가장 대중적으로 사용됩니다.
대표 웹 애플리케이션 서버 웹 애플리케이션 서버는 Tomcat, JBoss, WebSphere 등이 있습니다. 특히 Tomcat은 Spring 프레임워크에서 기본 의존성으로 내장되어 자주 사용됩니다.
참고자료
https://blog.naver.com/kpfjra_/221542239279
https://blog.naver.com/good_ray/222081363509
'웹 개발' 카테고리의 다른 글
Mockito의 Mock, Stub, Spy (0) 2025.03.30 입력값 검증의 범위와 책임 (0) 2025.03.30 개발자 도구(DevTools)로 API 요청 확인하기 (0) 2025.03.14 웹 API란? (1) 2025.03.02 SOAP와 REST 차이점과 REST로의 전환 이유 (0) 2025.02.25