관리 메뉴

JIE0025

[WEB] Web Server, Web Application Server (WAS)의 차이점 본문

백엔드/웹, 배포

[WEB] Web Server, Web Application Server (WAS)의 차이점

Kangjieun11 2023. 5. 1. 00:19
728x90

 

✅ 개요

웹과 서버에 대해 공부를 하다보면  

웹서버와 웹애플리케이션이라는 말을 자주 듣게된다.

 

둘의 차이를 확실하게 알고 있어야

웹 애플리케이션을 만들 때 각각이 어떤 역할을 하는지 이해하고 개발이 가능하다. 

 

웹서버와 웹애플리케이션 서버를 알게 되면 아래 키워드에 대해서도 자연스럽게 알 수 있게 된다 😄

->  NGINX, Apache / Tomcat, Servlet Containner...

 

 

✅ 정적 페이지와 동적 페이지

⏺ 정적 페이지 (Static Pages)

파일 경로 이름을 받는다. 이 경로와 일치하는 파일의 contents를 반환한다.

이름 그대로 <정적>이라서 항상 동일한 페이지가 반환된다. 

 

대학생 시절 막 만들어보던 html, css, javascript 파일과 같이 컴퓨터에 저장되어 있는 파일들을 예로 들 수 있다.

(언제나 같은 화면을 반환한다!)

 

⏺ 동적 페이지 (Dynamic Pages)

동적인 컨텐츠가 반환되는 페이지

웹서버에 의해 실행되는 프로그램을 통해 만들어진 결과물

 

 


 

✅ 웹서버와 웹애플리케이션의 역할과 상호작용

⏺ 웹서버

  • 웹서버는 클라이언트로부터 HTTP요청을 받으면 요청된 정적 파일(html, css, js, img 등)을 응답으로 제공한다.
  • 만약 동적인 컨텐츠가 필요한 경우, 웹서버는 웹어플리케이션서버로 해당요청을 전달한다.
  • Apache Server, Nginx, IIS(Windows 전용) 등

 

⏺ 웹애플리케이션서버 (WAS)

  • 웹애플리케이션 서버는 요청을 받아 어플리케이션 로직을 실행한다. 
  • DB/ File System등과 상호작용하며 동적인 웹페이지를 생성한다. 
  • 생성된 동적 컨텐츠는 웹서버로 다시 전송된다.
  • 이 페이지를 클라이언트에게 응답한다
  • 웹컨테이너/서블릿컨테이너 라고도 불린다. 
    • 컨테이너 : JSP, Servlet을 실행시킬 수 있는 소프트웨어
  • WAS는 JSP, Servlet 구동 환경을 제공한다. 

 

✔️ JSP 

html 문서에 java코드를 삽입해 동적으로 HTML페이지를 생성하는 기술

 

✔️ Servlet

클라이언트로부터 요청을 처리하고 응답을 생성하는 자바 클래스 

웹서버와 함께 동작한다. 

서블릿컨테이너가 적절한 서블릿을 호출한다.

Thread 쓰레드 기반으로 동작한다. -- 많은 수의 클라이언트 요청에 대해서 빠르게 응답 가능하다.

 

 

 

웹서버와 웹애플리케이션서버를 함께 사용하며, 정적 동적페이지를 자유롭게 응답할 수 있다. 

 

 

 

 

🤔 왜 웹서버가 필요할까?   웹애플리케이션 서버로 모두 처리하면 안될까?

웹페이지는 정적/동적컨텐츠가 모두 존재하는데 ...

웹애플리케이션서버를 통해 정적/동적 컨텐츠를 보내줄 수 는 없는걸까? 문뜩 그런 생각이 들수 있다. 

 

웹애플리케이션서버는 DB조회 등 동적 컨텐츠를 만들기 위해 이런저런 로직 처리를 하기 때문에 모든 요청을 웹애플리케이션 서버가 감당할 필요는 없다.  만약 웹애플리케이션서버가 정적컨텐츠까지 처리하면, 동적 컨텐츠 처리가 지연될 수 있고 이는 수행속도에 영향을 미친다. 

 

✔️  결국 정적/동적 컨텐츠의 요청을 분리함으로써 서버의 부하를 방지할 수 있다.

 

 

 

✅ 스프링부트와 연결 지어보면?

스프링부트는 웹애플리케이션을 개발하기 위한 프레임워크이다. 

스프링 부트는 WAS상에서 실행된다.

 

내장된 Tomcat (서블릿 컨테이너)를 제공하고, 이를 통해 웹 애플리케이션이 실행될 수 있다. 

 

즉 제공되는 내장 서블릿 컨테이너를 통해 

별도의 WAS 설치 없이 스프링부트 애플리케이션을 실행할 수 있다. 

 

 

우리가 spring.io 사이트에서 프로젝트 설정해 다운받고, 실행시켰을 때 바로 작동할 수 있는게 바로 이 내장 서블릿컨테이너(WAS)를 갖고 있기 때문이다!!!

 

⏺ Apache,   Tomcat,   Apache-Tomcat

계속 보다보니까

아파치는 웹서버,

톰캣은 웹애플리케이션서버라는게 어느정도 감은 온다. 

 

- 아파치는 정적인 웹페이지를 서비스하고, 클라이언트로부터 받은 요청에 맞는 정적 파일을 응답한다. 

- 톰캣은 동적인 웹페이지(JSP, Servlet)을 서비스하고, 클라이언트로부터 받은 요청에 맞는 동적 파일을 응답한다.

 

 

아파치-톰캣 : 서블릿 컨테이너

Spring Boot 에서는 Servlet을 단위로 하여 Client 의 요청을 처리한다.

 

서블릿컨테이너는 서블릿의 생명주기를 관리하고, 각 요청에 따라 서블릿을 실행한다.

 

아파치톰캣

 

Apache Tomcat 은

Servlet Container나 자체적인 Web Server 가 내장이 되어있다.

이 때문에 외부의 HTTP 요청을 받을 수 있다.

 

Apache Tomcat 은 WAS 기능을 일부 가지고 있는 Servlet Container 라고 봐야한다!

 

 

 

 

스프링부트는 내장된 아파치 톰캣에 의해 동적인 웹처리가 가능해진다는 결론이다.

 

 

 


 

 

오늘은 간단하게 웹서버와 웹애플리케이션서버의 차이점에 대해 알아봤다.

다음은 웹서버와 로드밸런서의 차이점에 대해 알아보는 글을 적으러 오겠다

 

 


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