728x90
반응형
1. Web Sever와 WAS의 개념
- Web Server(웹 서버)
- 웹 서버는 소프트웨어와 하드웨어로 구분되며 하드웨어는 Web 서버가 설치되어 있는 컴퓨터이며 소프트웨어는 클라이언트로부터 HTTP 요청을 받아 정적인 컨텐츠를 제공하는 컴퓨터 프로그램이다. 여기서 정적 컨텐츠는 HTML, CSS 및 이미지 파일 등이 해당된다.
- 웹 서버는 클라이언트로부터 HTTP 요청을 받으면 해당 요청이 정적 컨텐츠만 필요한 경우 WAS를 거치지 않고 정적 컨텐츠를 클라이언트로 제공한다. 반면 동적 컨텐츠 요청인 경우 해당 요청을 WAS로 보내서 WAS로부터 받은 결과값을 클라이언트에게 응답한다.
- 웹 서버의 예시 : Apache, Nginx, IIS 등
- WAS(Web Application Server)
- 애플리케이션을 수행해주는 미들웨어이며 ‘웹 컨테이너’ 또는 ‘서블릿 컨테이너’ 라고도 불린다. 즉, WAS는 Web Server와 Web Container을 합친 개념이다.
- DB 및 비지니스 로직 수행이 필요한 동적인 컨텐츠를 제공하는 역할을 한다. 프로그램 실행 환경과 DB 접속 기능을 제공한다. 여러 트랜잭션을 관리한다.
- WAS도 Web Server의 역할을 할 수 있으며, 현재 WAS의 기술력으론 Web Server 역할도 도맡아 정적 컨텐츠까지 처리할 수 있는 충분한 성능을 보여준다.
- WAS의 예시 : Tomcat, Jeus 등
2. 두 가지로 서버를 분리하는 이유는 무엇일까
두 가지 서버 모두 사용하는 이유가 존재한다.
✔️Web Sever를 사용하는 이유
클라이언트에게 정적 컨텐츠를 보낼 때 서버에서 HTML 문서를 먼저 보내주고 필요한 이미지 파일들을 다시 서버에 요청해서 받아와야 한다. 이때 WAS까지 갈 필요 없이 앞단인 Web Server에서 처리해서 이미지 파일들을 클라이언트에게 보내면 더 빠르게 요청을 처리할 수 있어 효율적이다.
✔️WAS를 사용하는 이유
웹 서버만 사용하게 되면 사용자가 원하는 요청에 대한 결과값을 모두 미리 준비된 상태에서 서비스를 해야 하는데 실질적으로 자원이 충분하지 않은 상태에선 불가능한 상황이다.
따라서 WAS를 통해 요청에 맞는 데이터를 DB에서 가져와서 비즈니스 로직에 맞게 결과값을 만들어 제공함으로써 자원을 효율적으로 사용할 수 있다.
👉즉 Web Server를 앞에 두고 여러 대의 WAS들을 Web Server에 플러그인 형태로 연결하면 효율적으로 분산 처리가 가능하다.
그래서 두 가지 서버를 모두 사용하는 경우에는 아래와 같은 장점 및 특징이 있다.
- 기능을 분리하여 서버 부하를 방지한다.
- WAS는 DB조회 및 비즈니스 로직을 수행해야 하기 때문에 단순히 정적 컨텐츠를 처리하는 역할은 앞단 Web Server에 빠르게 수행하여 처리하는 것이 효율적이다. 이처럼 하나의 서버가 하나의 역할만을수행하여 서버 부하를 방지할 수 있다.
- 보안 강화
- 물리적으로 서버를 분리하여 Web Server의 reverse proxy를 통해 WAS 서버를 외부에 노출하지 않을 수 있다.
- 여러 WAS를 연결할 수 있다.
- 대용량 웹 애플리케이션의 경우 여러 대의 WAS를 연결하여 Web Server와 WAS를 분리하여 무중단 운영을 할 수 있다. 어느 한 개의 WAS에 문제가 생기면 Web Server은 Health Check를 통해 이를 파악하여 장애가 생긴 WAS를 제외하고 다른 WAS들로 요청을 보내게 되어 운영이 중단되지 않게 한다.
- Web Server가 로드밸런싱을 해준다. 로드밸런싱이란 둘 이상의 컴퓨터 자원들에게 처리해야 할 작업을 나눠주는 것을 의미한다.
- fail over(장애 극복), fail back 처리에 유리하다. fail over이란 에러가 발생할 경우 이를 조치하기 위해 예비 운용 환경으로 자동 전환 되는 처리이며, fail back은 fail over에 따라 전환된 운용 환경을 에러가 발생하기 전의 상태로 되돌리는 처리다.
- 캐싱
- Web Server의 캐시 기능을 통해 클라이언트에서 자주 요청하는 리소스들을 저장해두었다가 요청이 들어오면 빠르게 해당 리소스를 응답해준다.
- 여러 웹 애플리케이션을 서비스 할 수 있다.
- 예를 들어 java 애플리케이션, php 애플리케이션을 하나의 웹서비스를 통해 서비스 가능하다.
반응형
'Engineering' 카테고리의 다른 글
SSR과 CSR 비교하기 (0) | 2022.03.17 |
---|