웹 서버와 웹 어플리케이션 서버

Wuchang·2023년 8월 8일

네트워크

목록 보기
5/5

웹 서버(Web Server)

기능

  • 웹 서버는 클라이언트로부터 HTTP 요청을 받아 정적인 콘텐츠(HTML, CSS, 이미지 등)를 WAS 를 통하지 않고 제공한다.
  • 동적인 컨텐츠에 대한 요청인 경우, 클라이언트의 http 요청을 WAS 로 보내고, WAS 에서 처리한 결과를 클라이언트에게 Response 한다.

예시

사용자가 웹 브라우저를 통해 웹 사이트에 접근하면, 웹 서버는 해당 요청을 받아 해당 HTML 파일이나 이미지 등을 전송한다. ex) path/home.html

종류

Apache, Nginx, IIS 등

웹 어플리케이션 서버(WAS)

역할

웹 애플리케이션 서버는 동적 콘텐츠 처리를 위한 비즈니스 로직을 수행한다. 클라이언트로부터의 동적 컨텐츠 요청이 들어오면, 해당 요청을 분석하고 데이터베이스와 상호작용하거나 계산 등을 수행한 후, 동적으로 생성된 HTML을 웹 서버를 통해 클라이언트에게 전달한다.
즉, 웹 컨테이너의 역할을 수행하는 것이다.

웹 컨테이너란?
서블릿(Servlet) 또는 JSP 같은 동적 자원 처리해주는 어플리케이션

주요기능

  • 프로그램 실행 환경과 DB 접속 기능 제공
  • 여러 개의 트랜잭션(논리적인 작업 단위) 관리 기능
  • 업무를 처리하는 비즈니스 로직 수행
  • 현재는 WAS가 가지고 있는 Web Server도 정적인 컨텐츠를 처리하는 데 있어서 성능상 큰 차이가 없다.

예시

사용자가 로그인을 시도하면, 웹 애플리케이션 서버는 사용자의 아이디와 비밀번호를 받아 데이터베이스와 상호작용하여 인증을 수행하고 결과를 동적으로 생성된 HTML 형태로 웹 서버를 통해 전달한다.

종류

Tomcat, JBoss, Jeus 등

Web Server 와 WAS 함께 쓰는 이유

서버 부하 방지

  • WAS는 DB 조회나 다양한 로직을 처리하느라 바쁘기 때문에 단순한 정적 컨텐츠는 Web Server에서 빠르게 클라이언트에 제공하는 것이 좋다.
  • WAS는 기본적으로 동적 컨텐츠를 제공하기 위해 존재하는 서버이다.
  • 만약 정적 컨텐츠 요청까지 WAS가 처리한다면 정적 데이터 처리로 인해 부하가 커지게 되고, 동적 컨텐츠의 처리가 지연됨에 따라 수행 속도가 느려진다. 즉, 이로 인해 페이지 노출 시간이 늘어나게 될 것이다.

물리적 분리로 보안 강화

  • SSL에 대한 암복호화 처리에 Web Server를 사용

여러대의 WAS 연결 가능

  • Load Balancing을 위해서 Web Server를 사용. 일종의 프록시 서버로 작동시켜 사용할 수 있다. 특히 대용량 웹 어플리케이션의 경우(여러 개의 서버 사용) Web Server와 WAS를 분리하여 무중단 운영을 위한 장애 극복에 쉽게 대응할 수 있다.
    예를 들어, 앞 단의 Web Server에서 오류가 발생한 WAS를 이용하지 못하도록 한 후 WAS를 재시작함으로써 사용자는 오류를 느끼지 못하고 이용할 수 있다.

Web Service Architecture


1. Web Server는 웹 브라우저 클라이언트로부터 HTTP 요청을 받는다.
2. Web Server는 클라이언트의 요청(Request)을 WAS에 보낸다.
3. WAS는 관련된 Servlet을 메모리에 올린다.
4. HttpServletRequest와 HttpServletResponse 객체를 생성하여 Servlet에 전달한다.
4-1. Thread는 Servlet의 service() 메서드를 호출한다.
4-2. service() 메서드는 요청에 맞게 doGet() 또는 doPost() 메서드를 호출한다.
5. doGet() 또는 doPost() 메서드는 인자에 맞게 생성된 적절한 동적 페이지를 Response 객체에 담아 WAS에 전달한다.
6. WAS는 Response 객체를 HttpResponse 형태로 바꾸어 Web Server에 전달한다.
7. 생성된 Thread를 종료하고, HttpServletRequest와 HttpServletResponse 객체를 제거한다.

Reference

https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html

profile
우창의 개발일지🐈

0개의 댓글