Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Kim ByeungHyun

Web Server와 WAS의 차이 본문

공부/Web

Web Server와 WAS의 차이

sandbackend 2023. 5. 14. 21:48

웹 서버와 WAS의 차이

 

웹 서버

하드웨어, 소프트웨어 구분

하드웨어 : Web 서버가 설치되어 있는 컴퓨터

소프트웨어 : 웹 브라우저 클라이언트로부터 HTTP 요청을 받고, 정적인 컨텐츠(html,css)를 제공하는 컴퓨터 프로그램

 

웹 서버 기능

-Http 프로토콜을 기반으로, 클라이언트의 요청을 서비스하는 기능을 담당

요청에 맞게 두가지 기능 중 선택해서 제공

정적 컨텐츠 제공

  • WAS를 거치지 않고 바로 자원 제공

동적 컨텐츠 제공을 위한 요청 전달

  • 클라이언트 요청을 WAS에 보내고, WAS에서 처리한 결과를 클라이언트에게 전달

웹 서버 종류 : Apache, Nginx, IIS 등

 

WAS

Web Application Server의 약자

  • DB 조회 및 다양한 로직 처리 요구시 동적인 컨턴츠를 제공하기 위해 만들어진 어플리케이션 서버

HTTP를 통해 어플리케이션을 수행하주는 미들웨어다.

WAS는 웹 컨터이너 혹은 서블릿 컨테이너라고도 불림

*컨테이너 : JSP, Servlet을 실행시킬수 있는 소프트웨어

역할

WAS = 웹 서버 + 웹 컨테이너

웹 서버의 기능들을 구조적으로 분리하여 처리하는 역할

  • 보안, 스레드 처리, 분산 트랜잭션 등 분산 환경에서 사용됨 (주로 DB 서버와 함께 사용)

WAS 주요 기능

  1. 프로그램 실행 환경 및 DB 접속 기능 제공
  2. 여러 트랜잭션 관리 기능
  3. 업무 처리하는 비즈니스 로직 수행

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