고민하기

Web Server와 Web Application Server(WAS)

pythaac 2021. 7. 11. 18:06

Spring boot는 WAS 설정이 필요없는 Framework

  Jhipster를 설치하고 환경세팅하려다가 이러한 문구를 발견하였다[1].

Spring boot : 스프링에서 어려운 설정이나 WAS에 대한 설정없이 바로 개발에 들어갈 수 있도록 만드는 프레임워크

WAS라는 단어가 자주 보였는데, 나는 이러한 단어를 본 적이 없다. 찾아보니 풀어쓰면 Web Application Server였다. 아직 명확한 뜻을 이해하지 못했다. WAS가 뭘까?

 

WAS의 구조

  Web Application Server는 Web Server를 포함하는 개념이라고 한다. 정확히는 Web server + Web Container이다. 그리고 Web Container에 대한 설명에서 이러한 문구를 발견했다[2].

JSP와 Servlet을 실행시킬 수 있는 소프트웨어

웹 프로그래밍 수업에서 JSP와 Servlet을 배우지 않아서... 이 부분에 대해서도 간단히 찾아봤다.

 

JSP와 Servlet의 차이

우선 두 가지 모두 JAVA를 이용한 서버 개발에 사용되는 것이다. JSP와 Servlet을 비교한 내용은 아래와 같다[3].

  • JSP
    - HTML 내부에 JAVA 코드가 들어감
    - Hello world 예제코드[4]
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
	<h1>Hello world!</h1>
</body>
</html>​

 

  • Servlet
    - JAVA 코드에 HTML이 들어감
    - Hello world 예제코드[5]
package ...
import ...

public class HelloController extends HttpServlet{
    @Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		PrintWriter out = resp.getWriter();
		out.println("<html>");
		out.println("<body>");
		out.println("Hello!!! World!!!");
		out.println("</body>");
		out.println("</html>");
	}
}

 

예제코드를 보니 차이가 명확했다. JSP는 html이고, Servlet은 Java였다. 그리고 JSP는 결국 http request 요청을 받으면, html 내용을 해석하여 Servlet으로 바꾸고 Java 어플리케이션을 실행하여 응답하는 형식이라고 한다[3].

 

Web Container의 역할

  즉, Web Container는 Client의 요청에 따라 Java 어플리케이션을 생성해내고, 이 어플리케이션이 응답을 처리하도록 해주는 역할이다. 위 예제가 약간 부실할 수도 있지만, 두 예제를 비교하면 한 눈에 보기에도 JSP가 더 간단해보인다. Servlet 예제를 보면 html의 tag를 모두 하나씩 출력해주고 있다. 그러나 JSP가 결국 Web Container에서 Servlet으로 변환한다면, 속도 측면에서는 servlet이 더 효율적일 수도 있다는 생각이다.

 

Web server와 WAS의 차이

  그래서 현재까지 조사한 바로는 Web server와 WAS의 가장 큰 차이는 정적(static) 컨텐츠와 동적(dynamic) 컨텐츠의 제공이다. WAS는 Web server + Web Container이며, Web Container가 Java 어플리케이션을 통해 컨텐츠를 작성하고, Web server는 이미 작성된 file이 응답으로 client에게 돌아간다. 결국 WAS 흔히 말하는 web언어가 아닌 언어로 웹서버를 구축하기 위한 미들웨어라고 생각하면 될 것 같다.

 

정리

  먼저 이 내용을 정리하게 된 이유다. Spring을 해보면서 서버를 구축하기 위한 많은 과정이 생략되었다고 느꼈는데, 중간에 빠진 무언가를 찾을 수 있는 실마리였던 것 같다. Java로 서버를 구축해보지 않은 입장에서 이 부분은 나에게 중요한 내용이었다. Servlet을 더 살펴보면 더 많은 것이 이해될 거라 생각한다.

  두 번째로, 웹 서비스 아키텍처에 대한 이해에 도움이 되었다. 진작에 알았어야 하는 내용이지만... 여태 공부하면서 Java에도 웹에도 관심이 없었는데, Java로 웹서버를 구축하는 내용은 들여다 본 적도 없었다. 이제라도 이런 부분을 접해서 다행이고, 솔직히 재밌다.

  세 번째는 의문점인데, 정적/동적 컨텐츠의 정의이다. 우선 php도 요청에 따라 다양한 응답을 할 수 있다고 생각한다.  php는 WAS가 없다(컴파일하여 어플리케이션을 생성하는 것이 아니니까)라는 것은 이해가 되는데, WAS와 Web server의 차이가 동적/정적 컨텐츠라면, php는 정적 컨텐츠를 제공하는 것인지가 의문이다. 작성된 file로 응답을 하는 것이기 때문이라면 용어의 모호함이 있다고 생각한다.

 

참고

[1] https://velog.io/@dsunni/JHipster-JHipster%EB%9E%80

 

[JHipster] JHipster란?

JHipster의 개념과 기본 실습

velog.io

[2] https://helloworld-88.tistory.com/71

 

[기본] WEB 과 WAS 차이

 WEB, WAS 란? ■ 웹서버(WEB)란? 웹서버는 말그래도 작성된 html페이지 등을 네트워크망에 종속되지 않고, 웹서비스를 할 수 있도록 어플리케이션 - 웹 서버(소프트웨어): 웹 브라우저 클라이언트로

helloworld-88.tistory.com

[3] https://javacpro.tistory.com/43

 

[JSP] JSP (JavaServer Pages ) 란 무엇인가?

JSP (JavaServer Pages ) 란 무엇인가? JSP 란 JavaServer Pages 의 약자이며 HTML 코드에 JAVA 코드를 넣어 동적웹페이지를 생성하는 웹어플리케이션 도구이다. JSP 가 실행되면 자바 서블릿(Servlet) 으로 변환..

javacpro.tistory.com

[4] https://m.blog.naver.com/lgr0406/221707091953

 

[JSP] ​Hello World 출력하기

1. 이클립스를 실행한다. 2. 프로젝트를 만든다. 3. 프로젝트 이름 설정 4. JSP 파일 만들기 5. JSP ...

blog.naver.com

[5] https://deveric.tistory.com/6

 

[Servlet] Servlet으로 Hello World 페이지 만들기

2019/07/04 - [Servlet] - [Servlet] 로컬에 Apache Tomcat 7 세팅하기 [Servlet] 로컬에 Apache Tomcat 7 세팅하기 Servlet을 세팅하기 위해서는 우선 서버를 설치해야 합니다. 로컬 컴퓨터에 서버를 세팅하는 프..

deveric.tistory.com

[6] https://ko.wikipedia.org/wiki/%EC%9B%B9_%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88

 

웹 컨테이너 - 위키백과, 우리 모두의 백과사전

웹 컨테이너(web container, 또는 서블릿 컨테이너)는 웹 서버의 컴포넌트 중 하나로 자바 서블릿과 상호작용한다. 웹 컨테이너는 서블릿의 생명주기를 관리하고, URL과 특정 서블릿을 맵핑하며 URL

ko.wikipedia.org

[7] https://galid1.tistory.com/486

 

Web - Web Server, Web Container, WAS 의 이해

WebSer Web Server(웹서버) - 웹서버란 사용자가 요청하는 정적 컨텐츠를 전달하는 소프트웨를 의미한다.(소프트웨어를 의미할때도 있고 하드웨어를 의미할때도 있음) - 동적인 웹페이지도 응답을 하

galid1.tistory.com

[8] https://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040203&docId=385973956&qb=cGhw&enc=utf8&section=kin.qna&rank=7&search_sort=0&spq=0 

 

php는 was서버로 뭘 쓰나요?

웹서버와 was의 차이를 공부하다가 JSP는 아파치 톰캣을 WAS로 사용한다고 배웠습니다. 그렇다면 PHP는 WAS로 뭘 사용하는지 궁금합니다.더불어 한 가지 더 궁금한 점은 XA...

kin.naver.com

[9] https://soyeondev.tistory.com/147

 

WAS와 Web server 특징과 종류

Web server의 개념 하드웨어 Web 서버가 설치되어 있는 컴퓨터 소프트웨어 클라이언트로부터 HTTP 요청을 받아 정적 컨텐츠(.html, jpg, .css 파일등)를 즉 각종 리소스를 제공하는 컴퓨터 프로그램 Web ser

soyeondev.tistory.com