본문 바로가기
C++ 200제/코딩 IT 정보

웹서버 was 서버 차이 3가지 - 동적 컨텐츠 요청

by vicddory 2019. 10. 4.

WAS와 웹서버

웹서버 (Web Server)

클라이언트가 서버에 페이지 요청을 하면 요청을 받아 정적 컨텐츠(.html, .png, .css등)를 제공하는 서버입니다. 클라이언트에서 요청이 올 때 가장 앞에서 요청에 대한 처리를 합니다.


클라이언트의 요청을 기다리고 요청에 대한 데이터를 만들어서 응답하는 역할 (정적 데이터)

CASE

정적 컨텐츠를 요청(request)했나요?


  1. 정적 컨텐츠구나! 내가 제공해줄게 => .html, .png 등 응답(response)
  2. 정적 콘텐츠가 아니구나.. 웹서버에서 간단히 처리 못 합니다. WAS에게 처리를 부탁해야겠네요! => 결국 WAS가 처리해준 컨텐츠를 받은 웹서버는 응답(response)을 해줍니다.


대표 : Apache, nginx


WAS (Web Application Server)

동적 콘텐츠를 제공하기 위해 만들어진 애플리케이션 서버 (DB조회, 로직처리가 요구되는 컨텐츠)


JSP, Servlet 구동 환경 제공

컨테이너, 웹 컨테이너, 서블릿 컨테이너라고도 부릅니다.


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


동작 프로세스

  1. 웹서버로부터 요청이 오면 컨테이너가 받아서 처리합니다.
  2. 컨테이너는 web.xml을 참조하여 해당 서블릿에 대한 스레드(thread) 생성하고 httpServletRequest와 httpServletResponse 객체를 생성하여 전달합니다.
  3. 컨테이너는 서블릿을 호출합니다.
  4. 호출된 서블릿의 작업을 담당하게 된 쓰레드(2번에서 만든 쓰레드)는 doPost() 또는 doGet()을 호출합니다.
  5. 호출된 doPost(), doGet() 메소드는 생성된 동적 페이지를 Response객체에 담아 컨테이너에 전달합니다.
  6. 컨테이너는 전달받은 Response 객체를 HTTPResponse 형태로 바꿔 웹서버에 전달하고 생성되었던 쓰레드를 종료하고 httpServletRequest, httpServletResponse 객체를 소멸시킵니다.


대표 : Tomcat, Jeus, JBoss


웹서버 was 차이 몇 가지 알아보기웹서버 was 차이 몇 가지 알아보기

WAS와 웹서버 차이

동적 콘텐츠 처리를 수행 가능한가 아닌가.

WAS는 정적, 동적 처리 둘 다 가능하지만, 정적처리를 WAS가 하게 되면 부하가 많이 걸려서 좋지 않습니다.


톰캣(WAS)에는 아파치(웹서버)의 기능(웹서비스데몬, Httpd)를 포함하고 있다.

일반적인 WAS, Web Server 구조가 아닌 거로 알고 있음.


WAS, Web Server를 따로 두고 쓰는 이유가 성능 때문이라고 하는 건 잘못되었다.

톰캣5.5 이상부터는 httpd의 native모듈을 사용해서 정적파일을 처리하는 기능을 제공하는데 이것이 순수 아파치 Httpd만 사용하는 것과 비교해서 성능이 전혀 떨어지지 않기 때문입니다.


그런데도 톰캣 앞에 아파치를 두는 이유는 하나의 서버에서 php 애플리케이션과 java 애플리케이션을 함께 사용하거나, httpd 서버를 간단한 로드밸런싱을 위해서 사용해야 할 때 필요하기 때문입니다.


웹서버 was 차이 몇 가지 알아보기웹서버 was 차이 몇 가지 알아보기

관련 글

[웹 초보자] HTML CSS Javascript 기본 이해하기

server-client 통신 프로그래밍 방법론 간단 정리

C# 비동기 프로세스 제어 소스, async task process

TCP/IP 우아한 종료 때문에 민망했던 경험

댓글