Kim ByeungHyun
Web Server와 WAS의 차이 본문
웹 서버와 WAS의 차이
웹 서버
하드웨어, 소프트웨어 구분
하드웨어 : Web 서버가 설치되어 있는 컴퓨터
소프트웨어 : 웹 브라우저 클라이언트로부터 HTTP 요청을 받고, 정적인 컨텐츠(html,css)를 제공하는 컴퓨터 프로그램
웹 서버 기능
-Http 프로토콜을 기반으로, 클라이언트의 요청을 서비스하는 기능을 담당
요청에 맞게 두가지 기능 중 선택해서 제공
정적 컨텐츠 제공
- WAS를 거치지 않고 바로 자원 제공
동적 컨텐츠 제공을 위한 요청 전달
- 클라이언트 요청을 WAS에 보내고, WAS에서 처리한 결과를 클라이언트에게 전달
웹 서버 종류 : Apache, Nginx, IIS 등
WAS
Web Application Server의 약자
- DB 조회 및 다양한 로직 처리 요구시 동적인 컨턴츠를 제공하기 위해 만들어진 어플리케이션 서버
HTTP를 통해 어플리케이션을 수행하주는 미들웨어다.
WAS는 웹 컨터이너 혹은 서블릿 컨테이너라고도 불림
*컨테이너 : JSP, Servlet을 실행시킬수 있는 소프트웨어
역할
WAS = 웹 서버 + 웹 컨테이너
웹 서버의 기능들을 구조적으로 분리하여 처리하는 역할
- 보안, 스레드 처리, 분산 트랜잭션 등 분산 환경에서 사용됨 (주로 DB 서버와 함께 사용)
WAS 주요 기능
- 프로그램 실행 환경 및 DB 접속 기능 제공
- 여러 트랜잭션 관리 기능
- 업무 처리하는 비즈니스 로직 수행
WAS 종류 : Tomcat, JBoss 등
WAS로 웹 서버 역할까지 다 처리할수 있지 않을까?
WAS는 DB 조회, 다양한 로직을 처리하는 데 집중해야 함.
따라서 단순한 정적 컨텐츠는 웹 서버에게 맡기며 기능을 분리시켜 서버 부하를 방지하는 것
만약 WAS가 정적 컨텐츠 요청까지 처리하면,
부하가 커지고 동적 컨텐츠 처리가 지연되면서 수행 속도가 느려짐
→ 페이지 노출 시간 늘어나는 문제 발생
여러 대의 WAS를 연결지어 사용이 가능하다.
웹 서버를 앞 단에 두고, WAS에 오류가 발생하면 사용자가 이용하지 못하게 막아둔 뒤 재시작하여 해결 할 수 있음.
자원 이용의 효율성 및 장애 극복, 배포 및 유지 보수의 편의성 때문에 웹 서버와 WAS를 분리해서 사용하는 것
가장 효율적인 방법
- 웹 서버를 WAS 앞에 두고, 필요한 WAS들을 웹 서버에 플러그인 형태로 설정하면 효율적인 분산 처리가 가능함
클라이언트 요청을 먼저 웹 서버가 받은 다음, WAS에게 보내 관련덴 Servlet을 메모리에 올림
WAS는 web.xml을 참조해 Servlet에 대한 스레드를 생성 (스레드 풀 이용)
이때 HttpServletRequest와 HttpServletResponse 객체를 생성해 Servlet에게 전달
- 스레드는 Servlet의 service() 메소드를 호출
- service() 메소드는 요청에 맞게 doGet()이나 doPost() 메소드를 호출
doGet()이나 doPost() 메소드는 인자에 맞게 생성된 적절한 동적 페이지를 Response 객체에 담아 WAS에 전달
WAS는 Response 객체를 HttpResponse 형태로 바꿔 웹 서버로 전달
생성된 스레드 종료하고, HttpServletRequest와 HttpServletResponse 객체 제거
'공부 > Web' 카테고리의 다른 글
쿠키 세션, Security (0) | 2022.10.08 |
---|