웹 동작 방식
클라이언트(브라우저)가 HTTP(URL)을 통해 요청을 보내면 HTML, CSS, 이미지와 같은 정적 콘텐츠를 응답으로 보내게 되고 그것을 받은 클라이언트가 해석하여 페이지로 보여준다.
Static pages와 Dynamic Pages
Static Pages
- Web Server는 파일 경로의 이름을 받아 경로와 일치하는 file contents를 반환
- 항상 동일한 페이지를 반환
- Ex) image, html, css, javascript 파일과 같이 컴퓨터에 저장되어 있는 파일들
Dynamic Pages
- 인자의 내용에 맞게 동적인 Contents를 반환
- 웹 서버에 의해서 실행되는 프로그램을 통해서 만들어진 결과물(WAS)위에서 돌아가는 프로그램
Web Server와 WAS의 차이
Web Server
소프트웨어와 하드웨어로 구분된다.
- 하드웨어
- Web 서버가 설치되어 있는 컴퓨터
- 소프트웨어
- 웹 브라우저 클라이언트로 부터 HTTP 요청을 받아 정적인 컨텐츠(.html, .jpeg, .css 등)을 제공하는 컴퓨터 프로그램
Web Server의 역할
HTTP 프로토콜을 기반으로 하여 클라이언트의 요청을 서비스 하는 기능 담당
요청에 따라 두 가지 기능 중 적절하게 선택하여 수행
- 정적인 컨텐츠 제공
- WAS를 거치지 않고 바로 자원을 제공한다
- 동적인 컨텐츠 제공을 위한 요청 전달
- 클라이언트의 요청을 WAS에 보내고, WAS가 처리한 결과를 클라이언트에게 전달한다.
Web Server의 예
- Apache Server
- Nginx
- IIS 등
WAS(Web Application Server)
DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기위해 만들어진 Application Server
HTTP를 통해 컴퓨터나 장치에 어플리케이션을 수행해주는 미들웨어이다.
웹 컨테이너(Web Container), 서블릿 컨테이너(Servlet Container)라고도 불림
WAS의 역할
WAS = Web Server + Web Container
웹서버 기능들을 구조적으로 분리하여 처리하고자하는 목적으로 제시됨
- 분산 트랜잭션
- 보안
- 메시징
- 쓰레드 처리 등
DB와 서버와 같이 수행됨
WAS의 주요 기능
- 프로그램 실행 환경과 DB 접속 기능 제공
- 여러 개의 트랜잭션 관리 기능
- 업무를 처리하는 비지니스 로직 수행
WAS가 필요한 이유
웹 페이지는 정적 컨텐츠와 동적 컨텐츠가 모두 존재한다.
- 사용자의 요청에 맞게 적절한 동적 컨텐츠를 만들어서 제공해야 한다.
- 웹 서버만을 이용하게 되면 그에 맞는 결과가 정적 파일로 존재해야 한다.
따라서 WAS를 통해 요청에 맞는 데이터를 DB에서 가져와 비즈니스 로직에 맞게 결과를 만들어 제공함으로 자원을 효율적으로 사용할 수 있다.
WAS와 Web Server를 분리하는 이유
기능 분리를 통한 서버 부하 방지
WAS만으로도 웹서비스를 제공 가능하지만 WAS는 DB조회 등 동적인 웹 페이지를 위한 다양한 동작을 하기 때문에 바쁘다. 따라서 웹 서버를 통해 정적인 컨텐츠를 제공하여 부하를 방지한다.물리적으로 분리하여 보안 강화
SSL에 대한 암복호화 처리에 웹서버를 사용한다.여러대의 WAS를 연결 가능
Load Balancing을 위해 Web Server를 사용 가능하다
- fail over(장애 극복), fail back 처리에 유리
- 여러대의 서버를 사용하는 대용량 웹 어플리케이션의 경우 웹 서버와 WAS를 분리하여 무중단 운영을 위한 장애 극복에 쉽게 대응할 수 있다.
- 여러 웹 어플리케이션 서비스 가능
하나의 웹 서버로 다양한 WAS를 이용하게 만들 수 있다.