Web 서버와 WAS

김재한·2024년 4월 18일
1

🌍 Web Server

클라이언트(웹 브라우저) 로 부터 HTTP 요청을 받아

HTML, 이미지 등과 같은 정적 콘텐츠를 응답해주는 역할을 한다.

Dynamic Processing 을 해주는 WAS와 함께 구성되기 때문에

  • 정적인 콘텐츠 요청시 : WAS를 거치지 않고 정적 콘텐츠를 제공한다.
  • 동적인 콘텐츠 요청시 : 요청을 WAS에 보내 응답을 받고, 클라이언트에게 전달한다.

대표적으로 Apache, Nginx 가 있다.

💡 정적 콘텐츠
요청 인자값에 상관없이 달라지지 않는 컨텐츠이다. 주로 HTML, CSS, Imgae, File 등이 있다.

WAS(Web Application Server)

HTTP 요청을 받아 정적 콘텐츠동적 콘텐츠 를 제공해 줄 수 있으며

요청 인자값에 따라 DB 조회서비스 로직을 수행해 동적 콘텐츠를 생성한다.

대표적으로 Tomcat, JBoss 등이 있다.

🏛️ 웹 서비스 아키텍처

Client - Web Server - WAS - DB 형식으로 구성한다.

WASJSP, Servlet 구동 환경을 제공해주므로 웹 컨테이너, 서블릿 컨테이너 라고도 불린다.

웹 서버가 필요한 이유 🤔

웹 서버를 함께 사용함으로써

  • 정적 컨텐츠에 대한 요청을 처리해 WAS부하를 줄이고, 수행 속도를 향상시킬 수 있다.
  • SSL에 대한 암복호화 처리로 보안성을 강화할 수 있다.
  • 여러대의 WAS에 연결 가능하다.

http request 처리 과정 📝

  • 웹 서버는 클라이언트로부터 HTTP 요청을 받는다
  • 동적 콘텐츠 요청인 경우 WAS로 보낸다.
  • WAS는 관련된 Servlet을 메모리에 올린다.
  • WAS는 web.xml을 참조하여 해당 Servlet에 대한 Thread를 생성한다. (이때 Thread Pool을 사용.)
  • HttpServletRequest와 HttpServletResponse 객체를 생성하여 Servlet에 전달된다.
    • Thread는 Servlet의 service() 메서드 호출
    • service()메서드는 요청에 맞게 doGet() 혹은 doPost()를 호출한다.
  • Protected doGet(HttpServletRequest req, HttpServletResponse res)
  • doGet() 혹은 doPost() 메서드는 인자에 맞게 생성된 적절한 동적 페이지를 Response에 담아 WAS에 전달한다.
  • WAS는 Response 객체를 HttpResponse 형태로 바꾸어 Web Server에 전달한다.
  • 생성된 Thread를 종료하고, HttpServletRequest와 HttpServletResponse 객체를 제거한다.

💡 웹 컨테이너
웹 서버가 보낸 JSP, PHP 등의 파일을 수행한 결과를 다시 웹 서버로 보내는 역할을 한다.

참고
https://yozm.wishket.com/magazine/detail/1780/
@leesomyoung
@ssssujini99

0개의 댓글