웹 서버와 WAS 개념 정리

권하준·2024년 3월 4일
1

Spring Boot

목록 보기
1/14

스프링 부트를 공부하면서 어디서 많이 들어본듯하면서 스쳐간 단어들이 많이 있다.
그 중 많이 언급된 단어로 '톰캣', '아파치' 등이 있다.
이것들이 뭔가 찾아보니 웹 서버니, 웹 애플리케이션 서버니 뭐니 비슷해보이는 용어들이 튀어나와서 이것들을 정리하는 글을 써보고자 한다.

1. Client VS Server


위 그림이 클라이언트-서버 모델의 구조이다.
그림처럼 클라이언트단에서 서버에게 자원(text, image, file, html 등)을 요청하면, 서버는 그에 대한 응답을 해주는 단순한 구조이다.
여기서 클라이언트-서버 간의 데이터의 전송을 웹(Web) 을 통하는 방식의 서버를 웹서버(Web Server) 라고 부른다.

2. Web Server


웹 서버의 개념은 다음과 같다.

🎈 웹 서버(Web Server)
웹 브라우저와 같은 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹 페이지를 반환하는 컴퓨터 프로그램 [출처]

이처럼 웹서버는 http 포로토콜을 사용하여 요청된 자원을 반환하는 서버 프로그램을 말한다.
흔히 인터넷 브라우저를 통해 웹 페이지를 탐색하는 경우를 생각하면 편하다.
그런데 이러한 웹서버의 동작 방식에는 치명적인 한계가 있는데, 그것은 바로 웹서버는 정적 웹 페이지의 경우에서만 사용될 수 있다는 점이다.

🎈 정적 웹 페이지(Static Web Page)
서버에 저장된 그대로 웹 브라우저에 전달되는 웹 페이지 [출처]

🎈 동적 웹 페이지(Dinamic Web Page)
정적 웹 페이지와 반대로, 실행시에 웹 페이지가 변환되어 전달되는 웹 페이지 [출처]

✨ 정적 웹 페이지

정적 웹의 예시로 회사 상품 소개 페이지 등을 들 수 있다.
만약 로그인 등의 기능을 포함하지 않으면서 상품을 설명하는 내용만 포함하는 단순한 페이지의 경우, 언제 누가 들어가든 미리 서버에 저장된 정보 그대로 클라이언트에게 전달할 것이다.
이처럼 저장된 정보 그대로 전달되는 웹 페이지를 정적 웹 페이지라 부른다.
정적 웹 페이지 예시

✨ 동적 웹 페이지

반대로 동적 웹의 예로 네이버 카페 페이지를 생각해보자.
로그인한 사용자에 따라서 공개되는 글의 목록이 달라질 것이고, 다른 사용자가 글을 올리는대로 실시간으로 페이지가 변환될 것이다.
웹 서버 소프트웨어는 이런 실시간으로 변화시키는 과정을 처리하지 못한다.

웹 서버의 대표적인 예로 아파치(Apache) 등이 있다.

3. 웹 컨테이너


웹 컨테이너는 위에서 설명한 동적 웹 페이지의 변환 과정을 처리해주는 소프트웨어다.
웹 서버가 클라이언트로 부터 동적 웹 페이지에 대한 요청을 받으면, 이를 웹 컨테이너에 전달하여 처리한다. 이후 변환 결과를 다시 받아오고 클라이언트에게 전달하는 방식으로 작동한다.
여기서 웹 컨테이너는 자바 서블릿, JSP에 대한 처리를 다룬다.

🎈 자바 서블릿(Java Servlet)
자바를 사용하여 웹 페이지를 동적으로 생성하는 기술 [출처]

🎈 JSP(Java Server Pages)
html 내부에 자바 코드를 삽입하여 동적 웹 페이지를 생성하는 스크립트 언어 [출처]

🎈 서블릿 VS JSP
서블릿: 자바 코드 안에서 html을 기술
JSP: HTML 문서 안에 자바 코드를 포함

4. WAS(Web Application Server)


웹 애플리케이션 서버는 웹 서버와 웹 컨테이너를 포함하는 개념이라고 볼 수 있다.
웹 서버와는 다르게 동적 웹 페이지를 처리할 수 있다는 장점을 가진다.
아래 이미지에서 웹 애플리케이션 서버의 구조를 보여준다. [이미지 출처]

WAS의 대표적인 예시로 톰캣(Tomcat) 등이 있다.

5. 웹 서버 VS WAS


위에서 살펴본 내용에 따르면 웹 애플리케이션 서버만으로도 정적 웹과 동적 웹 모두 처리할 수 있다.
그러나 WAS로 모든 웹 페이지를 처리하지 않고, 웹 서버와 WAS를 구별하고 함께 사용하는 모습을 많이 볼수 있다.

✨ 웹 서버와 WAS의 장단점

웹 서버WAS
장점트래픽이 적고 처리 속도가 빠름동적 웹 페이지와 정적 웹 페이지 모두 처리 가능
단점동적 웹 페이지를 처리하지 못함높은 트래픽 발생, 부하가 많이 걸림

위의 장단점 덕분에, 일반석으로 웹 서버와 WAS를 분리하여 클라이언트의 요청을 효율적으로 처리한다.

profile
자바 BE 개발자 지망생입니다.

0개의 댓글