웹은 HTTP 기반이며, HTTP 메시지에 모든 것을 전송한다.
∘ HTML, TEXT
∘ IMAGE, 음성, 영상, 파일
∘ JSON, XML(API)
∘ 거의 모든 형태의 데이터 전송 가능
∘ 서버 간에 데이터를 주고 받을 때도 대부분 HTTP 사용
클라이언트(주로 웹 브라우저)로부터 HTTP 요청을 받아 정적인 콘텐츠(HTML< CSS, JavaScript, 이미지 등)를 제공하는 역할을 담당합니다.
클라이언트 : 웹 서버에서 주소(URL)를 가지고 통신 규칙(http)에 맞게 요청하면, 알맞은 내용(html)을 응답 받음
서버 : 클라이언트의 요청을 기다리고, 웹 요청(http)에 대한 데이터를 만들어서 응답한다. 이때 데이터는 웹에서 처리할 수 있는 html, css, 이미지 등 정적인 데이터로 한정
Apache HTTP Server
Nginx
Microsoft IIS
HTTP 프로토콜을 기반으로 하여 클라이언트(웹 브라우저 또는 웹 크롤러)의 요청을 서비스로 하는 기능을 담당한다.
요청에 따라 아래 두 가지 기능 중 적절하게 선택하여 수행한다.
기능 1)
∘ 정적인 컨텐츠 제공
∘ WAS를 거치지 않고 바로 자원을 제공한다.
기능 2)
∘ 동적인 컨텐츠 제공을 위한 요청 전달
∘ 클라이언트의 요청(Request)을 WAS에 보내고, WAS가 처리한 결과를 클라이언트에게 전달(응답, Response)한다.
클라이언트에 이미지 파일(정적 컨텐츠)을 보내는 과정을 생각해보면,
∘ 이미지 파일과 같은 정적인 파일들을 웹 문서(HTML 문서)가 클라이언트로 보내질 때 함께 가는 것이 아니다.
∘ 클라이언트는 HTML 문서를 먼저 받고 그에 맞게 필요한 이미지 파일들을 다시 서버로 요청하면 그떄서야 받아온다.
∘ Web Server를 통해 정적인 파일들을 Application Server까지 가지 않고 앞단에서 빠르게 보내줄 수 있다.
∘ 따라서 Web Server에서는 정적 컨텐츠만 처리하도록 기능을 분배하여 서버의 부담을 줄일 수 있다.
동적 컨텐츠(서버 측 로직을 통해 생성된 데이터) 처리를 담당하는 서버로, 데이터베이스와의 상호작용이나 비즈니스 로직 수행 등을 통해 클라이언트 요청에 응답합니다.
ex) 동적 HTML, HTTP API(JSON)
ex) 서블릿, JSP, 스프링 MVC
| 항목 | 웹 서버(Web Server) | WAS(Web Application Server) |
|---|---|---|
| 주요 역할 | 정적 컨텐츠 제공 | 동적 컨텐츠 처리, 비즈니스 로직 실행 |
| 처리 대상 | HTML, CSS, JavaScript, 이미지 등 | 애플리케이션 로직, 데이터베이스 연동 |
| 동작 방식 | 클라이언트 요청을 직접 처리하거나 WAS로 전달 | 웹 서버로부터 요청받은 동적 컨텐츠 생성 |
| 성능 | 가벼움, 정적 컨텐츠에 최적화 | 상대적으로 무거움, 로직 처리에 최적화 |
| 예시 | Apache HTTP Server, Nginx | Tomcat, WebLogic, WildFly |
결론적으로, 자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성을 위해 Web Server, WAS를 각기 사용
클라이언트 - WAS - DB
장점
∘ WAS, DB 만으로 시스템 구성 가능
∘ WAS는 정적 리소스, 애플리케이션 로직 모두 제공 가능
단점
∘ WAS가 너무 많은 역할 담앙을 해서 서버 과부하가 우려된다.
∘ WAS 장애시 오류 화면도 노출 불가능
클라이언트 - WebServer - WAS - DB
정적 리소스는 웹 서버가 처리한다.
웹 서버는 애플리케이션 로직 같은 동적인 처리가 필요하면 WAS에 요청을 위임한다.
WAS는 중요한 애플리키이션 로직 처리를 전담한다.
효율적인 리소스 관리가 가능하다.
∘ 정적 리소스 사용량 ⬆️ : Web Server 증설
∘ 동적 리소스 사용량 ⬆️ : Web Application Server 증설
애플리케이션 로직이 등장하는 WAS 서버는 잘 죽는다.
정적 리소스만 제공하는 Web Server는 잘 죽지 않는다.
∘ WAS, DB 장애시 Web Server가 오류 화면 제공이 가능하다.