본문 바로가기

Programming/Servlet

DAY 104. Servlet에 앞서 (Web Server VS WAS)

 

 

참조 링크

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

 

[Web] Web Server와 WAS의 차이와 웹 서비스 구조 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

 

 

 

참조 사이트 : https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html

 

(이 사진 한 장으로 Web Server와 WAS 에 대해서 확실히 이해할 수 있었다. 정말 감사하신 분...)

 

 

 

웹 통신 기본 구조

 

◆ Web Server

클라이언트로부터 HTTP 요청을 받아서 HTML 문서나 각종 리소스를 전달하는 컴퓨터이다.

사용자에게 HTML페이지나 jpg, png 같은 이미지 (정적인 데이터)를 HTTP 프로토콜을 통해서 웹 브라우저에 제공하는 서버이다.

내부의 내용이 이미 만들어져 있는 정적인 요소들을 보여주는 역할을 한다.

요청에 대해서 매핑되어 있는 정적인 요소 결과들만 내려준다.

 

 

[Web Server의 기능]

클라이언트로부터 HTTP 요청을 받을 수 있다.

1. 정적 컨텐츠 요청 시 html, jpg, css.. 등 정적 컨텐츠를 제공할 수 있다.

2. 동적 컨텐츠 요청 시 WAS로 전달하여 처리된 결과를 클라이언트에게 전달한다.

 

 

Web Server 종류

  • Apache
  • Windows IIS
  • NGINX

 

 


 

 

◆ Web Application Server a.k.a WAS

웹 애플리케이션과 서버 환경을 만들어 동작시키는 기능을 제공하는 소프트웨어 프레임 워크, 애플리케이션 서버

웹 애플리케이션을 실행시키고 필요한 기능을 수행한 결과를 웹 서버에게 전달한다.

사용자가 요청한 서비스의 결과를 스크립트 언어로 가공하여 생성한 동적 페이지를 사용자 별로 보여주는 역할을 한다.

웹 서버 + 웹 컨테이너가 합해진 형식

DB 연동, 사용자에 따라서 다른 화면을 만들어주거나, 게시글 수정&삭제할 수 있다.

 

 

[WAS의 기능]

클라이언트로부터 HTTP 요청을 받을 수 있다.

(대부분 WAS는 Web Server 내장한다.)

요청에 맞는 정적 컨텐츠를 제공할 수 있다.

DB조회나 다양한 Logic 처리를 통해 동적 컨텐츠를 제공할 수 있다.

 

 

 

WAS 종류

  • TOMCAT
  • Wildfly
  • jeus

 

 


 

◇ 서블릿 컨테이너 & JSP 컨테이너

 

서블릿 컨테이너

서블릿의 생명주기 관리, HttpServletRequest/HttpResponse 객체 생성, 멀티 스레딩 구성, 동적 페이지 구성 등

웹 서버에서 온 요청을 받아 서블릿 class를 관리하는 역할을 한다.

 

 

JSP 컨테이너

JSP파일을 다시 JAVA 코드로 변경하고 class 파일로 전환하여 메모리 공간에 로드한 뒤, 실행 가능하게 만드는 작업을 진행

처리 결과를 HTML 파일로 만들어주는 작업

 

 


 

Web Server VS WAS

 

📌 왜 굳이 함께 사용할까?

 

 

  • 기능을 분리하여 서버 부하를 방지한다.

→ WAS에서 DB 조회 등 페이지를 만들기 위한 다양한 로직을 처리하는데, 단순 정적 콘텐츠 제공까지 하면 다른 작업을 위한 리소스들 때문에 지연이 발생할 수 있다.

 

  • 물리적으로 분리하여 보안 강화

→ Web Server를 앞단에 두어서 공격 당해도 중요 정보가 담긴 DB, Logic까지는 닿지 못하게 한다.

 

  • 여러 대의 WAS를 연결 할 수 있다.

→ Load Balancing(로드 밸런싱), fail over(장애 극복), fail back

→ 대용량 웹 어플리케이션의 경우는 두 가지를 분리하여 무중단 운영을 위한 장애 극복에 쉽게 대응할 수 있다.

 

  • 다른 종류의 WAS로 서비스 할 수 있다.

 

  • 여러 대의 WAS Health check

→ 서버에 주기적으로 HTTP 요청을 보내서 서버의 상태를 확인할 수 있다.

 

 

 

 

  Web Server WAS
장점 - 빠른 처리 속도 (요청에 따른 결과 페이지만 전송)
- 구현이 쉽다. (HTML같은 단순한 문서로만 구성되어있음)
- 서비스의 다양성 (여러 데이터를 활용할 수 있다.)
- 글의 추가, 수정, 삭제가 쉽다. (문서의 내용이 변경될 경우, 직접 수정하지 않는다.)
단점 - 한정적인 서비스 (만들어진 정보만 보여주기 때문)
- 글의 추가, 수정, 삭제가 어렵다. (문서의 내용이 변경될 경우 직접 수정한다.)
- 느린 처리 속도 (데이터를 처리하여 결과를 전송)
- 구현이 어렵다. 구조가 복잡하다. (서비스에 해당하는 소스를 직접 작성한다.)