Web Server (웹 서버)
웹 서버란, HTTP 프로토콜을 기반으로 동작하는 서버로,
동작하는 방식은 클라이언트가 웹 서버에 HTTP 요청을 보내면 웹 서버는 HTTP로 응답하여 정적 리소스를 제공합니다.
대표적인 웹 서버
- Nginx
- Apache
WAS - Web Application Server (웹 어플리케이션 서버)
WAS도 Web 서버처럼 HTTP 프로토콜을 기반으로 동작하고 웹 서버 기능을 포함하여 동적 리소스도 제공 할 수 있는 Application 서버입니다.
WAS는 서블릿 컨테이너 또는 웹 컨테이너를 제공하고 컨테이너를 통해 프로그램 코드를 실행해 애플리케이션 로직을 수행하거나 DB 조회 등.. 동적 리소스를 제공합니다.
대표적인 WAS
- Tomcat (톰캣)
- Jetty
- Undertow
Web 서버와 WAS의 차이?
간단하게 정리하면 Web 서버는 정적 리소스를 제공, WAS는 애플리케이션 로직까지 실행할 수 있다라고 정리할 수 있습니다.
하지만 Web 서버도 프로그램을 실행하는 기능을 포함하고 Was도 웹 서버의 기능을 제공하기 때문에 이 둘의 차이가 애매합니다.
명백한 차이가 있다고 하면 서블릿 컨테이너가 있다, 없다의 차이라고 할 수 있고 WAS는 애플리케이션 코드를 실행하는데 더 특화되있다고 할 수 있습니다.
웹 서비스의 구조 - Web 서버와 WAS의 분리
WAS는 Web서버의 기능을 포함했기 때문에 WAS와 DB만으로 시스템을 웹 서비스를 구성가능 합니다.
하지만 WAS만으로 웹 서비스를 구성하였을 시 다음과 같은 문제가 발생할 수 있습니다.
WAS가 너무 많은 역할을 담당하기 때문에 서버 과부하 위험이 있을 수 있고 가장 비싼 애플리케이션 로직이 정적 리소스 때문에 수행이 어려울 수 있습니다.
그리고 만약 WAS에 장애가 발생했다면 리소스를 전달할 수 없기 때문에 오류 화면도 노출이 불가능하다는 단점이 있습니다.
WAS로만 웹 서비스 설계시 위와 같은 문제점으로 인해 다음과 같이 웹 서비스 구조를 변경하게 됩니다.
Web - WAS 분리
Web 서버는 정적인 리소스를 처리하고, 애플리케이션 로직같은 동적인 처리가 필요하면 WAS에 요청을 합니다.
WAS는 중요한 애플리케이션 로직을 전담하여 처리합니다.
이렇게 Web과 WAS를 분리한다면 다음과 같은 장점을 얻을 수 있습니다.
- WAS에 장애가 발생하더라도 Web 서버가 오류화면 HTML을 제공 => 정적 리소스만을 제공하는 Web서버는 잘 죽지 않지만 애플리케이션 로직을 수행하는 WAS 서버는 잘 죽음.
- 효율적인 리소스 관리 => 정적 리소스가 많이 사용되면 Web 서버 증설, 동적 리소스가 많이 사용되면 WAS 증설
'◼ CS 기초 지식 > [네트워크]' 카테고리의 다른 글
왜 WAS와 Web Server를 같이 사용하는걸까? (2) | 2023.06.24 |
---|---|
Tread Pool(쓰레드 풀)이란? (0) | 2023.03.22 |
HTTP 메서드 종류 및 속성 (0) | 2023.03.20 |
HTTP란? 무상태성과 비연결성에 대해 알아보자. (0) | 2023.03.17 |
프록시 ( Proxy ) 란 ? 어떤 역할을 하는가? (1) | 2022.09.30 |