Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- ExceptionResolver
- Service 계층 테스트
- Test
- Java
- 일상
- OS
- Test Doulbe
- 인프콘2023
- mapstruct
- FCM
- 2024회고
- Spring
- 테크쇼
- Test code
- 소프티어
- 공룡책
- MySQL
- db
- modelmapper
- 자바
- JPA
- proxyFactory
- 2025 계획
- enumSet
- Coputer Science
- 직장인 회고
- softeer
- Junit 5
- Server
- 갓생
Archives
- Today
- Total
공부내용공유
WAS, WEB Server 란? 본문
Static Page 와 Dynamic Page
Static page
- Web Server는 경로와 일치하는 File Contents를 반환한다.
- 항상 동일한 페이지를 반환한다.
- html, css, javascript 파일등등
- DB가 사용되지 않는다.
- loading 시간이 dynamic page 보다 훨씬 적다
Dynamic Page
- 인자의 내용에 맞게 동적인 페이지를 반환한다.
- 즉, WAS 에서 실행되는 프로그램에(servlet, jsp) 의해 만들어진 결과물
- 1번째 사진의 doGet을 servelt에다 구현한다.
- DB 가 사용되어진다.
- loading 시간이 상대적으로 길다.
Web Server 와 WAS 의 차이
Web Server
- Web Server 의 개념
- 소프트웨어와 하드웨어로 구분된다.
- 하드웨어 - Web 서버가 설치되어 있는 컴퓨터
- 소프트웨어 - 클라이언트로부터 HTTP 요청을 받아, 정적인 컨텐츠를 제공하는 컴퓨터 프로그램
- 소프트웨어와 하드웨어로 구분된다.
- Web Server의 기능
- HTTP 프로토콜을 기반으로 클라이언트에게 서비스를 제공한다.
- 기능 1)
- 정적인 컨텐츠 제공
- WAS를 거치지 않고 바로 제공한다.
- 기능 2)
- 동적인 컨텐츠 제공을 위한 요청
- WAS에게 동적인 컨텐츠를 요청하고 결과물을 클라이언트에게 전달한다.
- 기능 1)
- HTTP 프로토콜을 기반으로 클라이언트에게 서비스를 제공한다.
- Web Server 가 필요한 이유
- 웹 문서 (html) 에 여러 img 파일이 있다 할때 img 파일은 한꺼번에 같이 가는게 아니라 html 문서를 먼저 받고 또 그에 해당하는 img파일을 불러온다. 이때 Web Server을 통해 WAS까지 가지 않고 바로 전달받아 성능을 높일 수 있다.
- 즉, Web Server는 정적 컨텐츠를 처리하도록 하여 서버의 부하를 나눌 수 있다.
WAS(Web Application Server)
- WAS 의 개념
- DB 조회나 다양한 로직 구현을 요구하는 동적인 컨텐츠를 처리하기 위한 Application Server
- HTTP를 통해 컴퓨터나 장치에 어플리케이션을 수행해주는 middleware이다.
- 웹 컨테이너 혹은 서블릿 컨테이너라고 불린다.
- container 란 JSP , Servlet을 실행시킬 수 있는 소프트웨어를 말한다.
- 즉, WAS는 JSP, Servlet 구동 환경을 제공한다.
- WAS 의 역할
- WAS = Web Server + Web Container
- Web Server의 기능을 구조적으로 분리하여 처리하고자 하는 모적으로 만들어졌다.
- 분산 트랜잭션, 보안, 메세징, 쓰레드 처리등의 기능을 처리하는 분산환경에서 사용된다.
- 주로 DB 서버와 같이 실행된다.
- WAS의 주요 역할
- 프로그램 실행 환경과 DB접속 기능 제공
- 여러개의 트랜잭션 관리 기능
- 비즈니스 로직 처리
- WAS 가 필요한 이유
- 큰 어플리케이션들은 다양한 content들을 가지고 있고, 다양한 요청을 받게된다.
- 이때 Web Server로만 처리를 하려면 모든 content들을 다 준비하고 있어야 하고 이렇게 수행하기에는 자원의 낭비가 너무 심하다.
- WAS를 이용해서, 요청에 맞는 데이터를 DB에서 갖고와 비즈니스 로직을 통해 상황에 맞는 컨텐츠를 그때 그때 만들어 자원을 효율적으로 사용할 수 있다.
WAS, Web Server 사용의 이점
- 기능을 분리하여 서버 부하 방지
- WAS는 DB조회나 비즈니스 로직을 처리하느라 바쁘기 때문에 정적인 컨텐츠는 Web Server에서 빠르게 클라이언트에게 전달하는것이 좋다.
- 만약 정적 컨텐츠도 WAS가 처리하게 되면, 정적 데이터 처리로 인해 부하가 더 커지고, 동적 컨텐츠 처리 속도도 같이 느려질 것이다.
- 물리적으로 분리하여 보안 강화
- SSL에 대한 암복호화 처리에 Web Server를 사용
- 여러 대의 WAS를 연결 가능
- Load Balancing을 위하여 WAS 사용이 가능하다.
- 대용량 웹 어플리케이션의 경우 WAS 와 Web Server를 분리하여 무중단 운영을 위한 장애 극복에 도움이 된다.
- 예를 들면 Web Server에서 오류가 난 WAS를 사용하지 못하게 하여 클라이언트는 오류가 난 사실을 모르게 할 수 있다.
- 여러 웹 어플리케이션 서비스 가능
- 하나의 서버에서 PHP Application과 Java Application을 함께 사용하는 경우
- 즉 자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성을 위해 WAS , Web Server를 분리한다.
동작 과정
- Web Server 가 client로부터 Request 를 받는다.
- Web Server는 Request를 WAS에게 보낸다.
- WAS 는 관련된 Servlet를 메모리에 올린다.
- WAS는 web.xml을 참조하여 해당 Servlet에대한 Thread를 생성한다.
- HttpServletRequest와 HttpServletResponse 객체를 생성하여 Servlet에 전달한다.
- thread는 Servelt의 Service()를 호출한다.
- Sevice() 메서드는 request에 맞게 doGet 혹은 doPost를 실행한다.
- doGet , doPost는 인자에 맞게 생성된 적절한 동적 페이지를 reponse 객체에 담아 WAS에게 전달한다.
- WAS는 response 객체를 HTTPResponse형태로 바꾸어 Web Server에게 전달한다.
- 생성된 thread를 종료하고 HttpServletRequest와 HttpServlet 객체를 제거한다.