본문 바로가기

공부

Web Server(정적콘텐츠) vs WAS(Web Application Server, 동적콘텐츠)

정적 콘텐츠(Static content) : 내용이 고정되어 변하지 않는 콘텐츠. 이미지파일, html문서와 같이 서버에 저장되어 있고 클라이언트로부터 요청이 있을 때마다 동일한 내용 제공
동적 콘텐츠(Dynamic content) : 사용자의 요청이나 특정 조건에 따라 실시간으로 생성되거나 변경되는 콘텐츠

HTTP(Hypertext Transfer Protocol)란?
인터넷에서 데이터를 주고받는 데 사용되는 프로토콜. 컴퓨터나 장치 간 통신을 위한 규칙과 절차의 집합을 말한다. HTTP는 웹 서버와 클라이언트(일반적으로 웹 브라우저) 간에 데이터를 전송하기 위한 규약이다. 즉, WWW(World Wide Web)에서 HTML 문서를 송수신 하기 위한 표준 프로토콜을 말한다.

프로토콜이란?
컴퓨터 내부에서, 또는 컴퓨터 사이에서데이터의 교환 방식을 정의하는 규칙 체계
웹서버란? 웹페이지에서 변하지 않는 부분
 클라이언트가 url에 페이지 입력해 요청하면 브라우저는 해당 url에 대한 http 요청을 생성해 웹서버에 전송, (http 요청에는 사용자가 어떤 페이지를 요청했는지 정보가 담겨 있음) 웹서버는 이 http 요청을 받아들여, 요청된 페이지나 콘텐츠를 찾는다. (1) 단순히 저장되어 있는 정적인 웹 콘텐츠들을 클라이언트로 전달하고 전달받아 저장하거나 처리한다. (2)클라이언트가 동적인 요청을 하면 해당 요청을 WAS에 요청하기도 한다.
 요청된 페이지가 정적 콘텐츠(html문서 등)이면 웹서버는 이를 찾아서 http 응답으로 다시 사용자 브라우저로 전송한다. 대표적인 웹서버로는 Apache, Nginx, Microsoft IIS 가 있다.

 간단하게 말하면, 웹서버는 정적 콘텐츠를 관리하고 저장하는 역할을 수행하며, 클라이언트 요청을 받아들이고 그에 맞는 정적 파일을 응답으로 제공하는 것이다(웹 페이지 전달과 같은 단순 기능 수행).

ex ) HTTP로 만든 웹페이지 틀
WAS(Web Application Server)란? 웹페이지에서 계속 변하는 부분, Controller
 웹서버와 동일하게 http가 기반이다. 클라이언트의 요청을 받아들여 웹 애플리케이션을 실행하고 관리한다. 웹 어플리케이션 실행 환경을 제공하고 클라이언트 요청에 따라 동적 콘텐츠를 생성, 전달한다. 주로 웹서버와 함께 사용되며(웹서버가 동적콘텐츠가 필요하면 해당 요청을 WAS에 전달하여 처리), DB와도 함께 수행된다.
 WAS는 벡엔드 시스템(대표적으로 DB)과 상호작용하며, 다른 서버와 통신을 통해 필요 데이터를 가져오고, 요청에 따라 데이터 처리, 비즈니스 로직 실행, 웹페이지 생성 등을 수행한다. 웹 애플리케이션의 실행과 관리를 담당하여, 웹 애플리케이션의 성능, 확장성, 안정성을 보장하는데 중요한 역할을 한다. 데이터베이스 연동, 트랜잭션 관리, 보안 기능, 세션 관리, 쓰레드 풀 관리 기능 등을 제공한다.

 웹 컨테이너(Web Container), 서블릿 컨테이너(Servlet Container) 라고도 불린다. 여기서 컨테이너는 JSP, Servlet을 실행시킬 수 있는 소프트웨어를 말하므로 WAS는 JSP, Servlet의 구동 환경을 제공한다. 주요 WAS로는 Apache Tomcat, Oracle WebLogic Server, IBM WebSphere Application Server 등이 있다.

 간단하게 말하면, 인터넷에서 http를 통해 클라이언트의 장치에 웹 애플리케이션을 수행해 주는 미들웨어로 볼 수 있으며 동적 서버 콘텐츠를 수행해 일반적인 웹서버와 구별되며, 데이터베이스 서버와 함께 수행된다.

ex) JSP로 만든 동적 웹페이지


왜 WAS만 사용하지 않고 웹서버를 같이 쓸까?
 웹 페이지는 정적, 동적 컨텐츠가 모두 존재한다. WAS만을 사용해도 웹페이지를 구성할 수 있지만, 클라이언트의 모든 요청을 서버로 받는 것은 비효율적이고 업무량이 많아지면 부하가 걸려 컨텐츠 처리 속력이 느려질 수 있다. 따라서 웹서버와 WAS에 적절하게 업무를 분배하면 효율성이 올라가게 된다. 즉, 웹 서버를 애플리케이션 서버 앞단에 위치시켜 정적 컨텐츠를 처리하도록 기능을 분배시켜 서버의 부담을 줄일 수 있다. 따라서 웹 애플리케이션을 구성할 때는 웹 서버와 WAS 서버를 함께 사용하여 역할을 분담하고 최적의 성능을 내도록 해야 한다. + 보안

출처 https://story.pxd.co.kr/1647

'공부' 카테고리의 다른 글

인터프리터 언어(JavaScripts) vs 컴파일 언어(Java)  (0) 2024.03.20