📄 정적 페이지와 동적 페이지
웹서버와 웹어플리케이션서버(이하 WAS)의 차이를 알기 전에 정적 페이지와 동적 페이지가 뭔지 이해하고 넘어가야 한다. 그래야 웹서버와 WAS의 차이를 정확하게 이해할 수 있기 때문이다. 정적페이지와 동적페이지는 모두 웹페이지이지만 처리되는 방법에 따라 구분되어 있다.
💾 정적 페이지
- 항상 같은 내용을 보여주는 웹페이지
- 사용자가 서버에 웹페이지를 요청하면 서버 안에 이미 만들어져 있는 파일(EX. HTML 파일, 이미지, JavaScript 파일 등)을 사용자에게 보여주는 경우에 해당
정적 페이지 장단점
장점
- 요청에 대한 파일만 전송하면 되기 때문에 추가적인 작업이 없어 빠르다.
- 웹서버만 구축하면 되므로 비용이 적게 든다.
단점
- 저장된 정보만 보여줄 수 있으므로 서비스가 한정적이다.
- CUD(추가/수정/삭제) 작업을 모두 수동으로 해야해서 관리가 힙들다.
👩💻 동적 페이지
- 요청에 따라 각각 다른 내용을 보여주는 웹페이지
- 사용자가 서버에 웹페이지를 요청하면, 웹 서버에 의해 실행되는 프로그램을 통해서 가공/수정된 데이터가 반영된 웹페이지를 사용자에게 보여주는 경우에 해당
동적페이지 장단점
장점
- 다양한 정보를 조합할 수 있기 때문에 제공할 수 있는 서비스가 다양하다.
- 웹 사이트 구조에 따라 CUD(추가/수정/삭제) 등의 작업이 용이하여 관리가 쉽다.
단점
- 사용자에게 웹페이지를 전달하기 전에 처리하는 작업이 필요하여 상대적으로 느리다.
- 웹서버 외에 추가적인 처리를 위한 어플리케이션 서버(WAS)가 필요하여 추가 비용이 든다.
🔩 웹서버와 WAS
사진 출처 : https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html
📤 웹서버
개념
웹 브라우저 클라이언트로부터 HTTP 요청을 받아 정적인 컨텐츠(.html, jpeg, .css 등)를 제공하는 컴퓨터 프로그램
기능
HTTP 프로토콜을 기반으로 하여 클라이언트(웹브라우저 또는 웹크롤러)의 요청을 서비스하는 기능 담당
- 기능 1) 정적인 컨텐츠를 제공하기 위해 WAS를 거치지 않고 바로 자원을 제공한다.
- 기능 2) 동적인 컨텐츠를 제공하기 위해 WAS에 요청을 전달하는 역할을 한다. 클라이언트의 요청을 WAS에 보내고, WAS가 처리한 결과를 클라이언트에게 전달한다.
📇 웹어플리케이션서버(WAS)
개념
- DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 어플리케이션 서버(Application Server)
- HTTP를 통해 컴퓨터나 장치에 어플리케이션을 수행해주는 미들웨어
- "웹 컨테이너(Web Container)" 혹은 "서블릿 컨테이너(Servlet Container)"라고도 불린다.
기능
- 프로그램 실행 환경과 DB 접속 기능 제공
- 여러 개의 트랜잭션(논리적인 작업 단위) 관리
- 업무를 처리하는 비즈니스 로직 수행
🔔 웹서버와 WAS 구분하는 이유
웹서버와 WAS의 필요성
- 웹서버를 통해 정적인 파일을 WAS까지 가지 않고도 빠르게 보낼 수 있다.
- 웹서버에서 정적인 컨텐츠만 처리하도록 기능을 분리하여 서버의 부담을 줄일 수 있다.
- 웹페이지에는 정적인 컨테츠와 동적인 컨텐츠가 모두 존재하므로 WAS가 필요하다.
- WAS를 통해 요청에 맞는 데이터를 DB에서 가져와서 비즈니스 로직에 맞게 그때 그때 결과를 만들어 제공함으로써 효율적으로 자원을 이용할 수 있다.
웹서버와 WAS를 분리하는 이유
- 서버 부하 방지
- WAS는 기본적으로 동적인 컨텐츠를 제공하기 위해 존재하는 서버이므로 WAS에서 정적인 컨테츠까지 처리한다면 정적 데이터 처리로 인해 부하가 커져 동적 컨텐츠의 처리가 지연됨에 따라 수행 속도가 느려진다.
- 물리적으로 분리하여 보안 강화
- 여러 대의 WAS 연결 가능
- fail over(장애 극복), fail back 처리에 유리
- 특히 대용량 웹어플리케이션의 경우(여러 개의 서버 사용) 웹서버와 WAS를 분리하여 무중단 운영을 위한 장애 극복에 쉽게 대응할 수 있다.
예를 들어 WAS에서 오류가 발생하면, 앞단의 웹서버에서 WAS를 이용하지 못하게 한 후 WAS를 재시작함으로써 사용자는 오류를 느끼지 못하게 할 수 있다.
- 여러 웹 어플리케이션 서비스 사용 가능
결론 : 자원 이용의 효율성 및 장애 극복, 배포 및 유지 보수의 편의성을 위해 웹서버와 WAS 분리
Reference