728x90
📌 웹 서버와 정적 페이지
정적 페이지(Static Pages)
- 저장된 콘텐츠 그대로 사용자에게 전달하는 웹 페이지이다.
- image, html, css, javaScript 파일 등이 있다.
웹서버(Web Server)
- 하드웨어에서 웹 서버는 웹 서버가 설치되어 있는 컴퓨터를 의미한다.
- 소프트웨어에서 웹 서버는 웹 브라우저 클라이언트로부터 HTTP 요청을 받아 정적인 콘텐츠를 제공하는 프로그램을 의미한다.
- 기능
- 클라이언트의 요청을 받아 정적인 콘텐츠를 제공한다.
- 이때 WAS를 거치지 않고 자원을 제공한다.
- 동적인 콘텐츠 제공을 위해 WAS에 요청을 전달하고, WAS가 처리한 응답을 클라이언트에 전달한다.
- 여기서 클라이언트는 일반적으로 웹 브라우저를 의미한다.
- ex) : Apache Server, Nginx(엔진엑스)
- 클라이언트의 요청을 받아 정적인 콘텐츠를 제공한다.
📌 웹 애플리케이션 서버와 동적 페이지
동적 페이지(Dynamic Pages)
- 동적인 콘텐츠를 반환한다.
- 예를 들어 Java Program을 통해 로직이 수행되고 나온 결과물을 말한다.
웹 애플리케이션 서버(Web Application Server)
- 정적인 콘텐츠뿐만 아니라 DB 조회 등 다양한 로직 처리를 요구하는 동적인 콘텐츠도 제공하는 Application Server이다.
- 웹 컨테이너(Web Container), 서블릿 컨테이너(Servlet Container)라고도 불린다.
- 역할
- 사실 웹서버와 WAS는 서로의 기능을 포함하거나 제공하기 때문에 그 경계가 모호하다고 할 수 있다.
- WAS가 애플리케이션 코드를 실행하는 데에 더 특화되어 있다.
- 주요 기능
- 프로그램 실행 환경과 DB에 접속하는 기능
- 비즈니스 로직 수행 기능
- ex) : Tomcat, Web Sphere
💡 여기서 드는 자연스러운 생각,
모든 요청을 WAS가 처리하면 되지 않을까? 정적인 콘텐츠와 동적인 콘텐츠 모두 처리가 가능하잖아?
📌 웹 서버가 필요한 이유?
- 웹 서버와 WAS는 각각 독립적으로 존재할 수 있다. 웹 시스템의 구성은 웹 서버 - WAS - DB가 일반적이다.
- 예를 들어 클라이언트가 정적인 콘텐츠를 요청했다고 가정하자. 이때 웹서버를 이용하면 웹 서버 내의 정적인 콘텐츠를 클라이언트로 바로 보낼 수 있다. 즉, 웹서버를 정적인 콘텐츠만 처리하도록 하여 WAS까지 요청이 가지 않아 WAS의 부담을 줄일 수 있는 것이다.
- 웹 서버를 WAS의 앞단에 배치하여 WAS의 내부를 외부에 노출시키지 않아 보안이 강화되는 이점도 얻을 수 있다.
- 정적 콘텐츠만 제공하기 때문에 웹 서버는 잘 죽지 않는다. 따라서 WAS, DB 장애 시에 웹 서버가 오류 화면을 제공할 수 있다.
🤔 WAS만 쓰면 안 되는 거야?
WAS는 DB 조회, 로직 처리에 집중하는 것만으로도 벅차다. 따라서 정적인 콘텐츠의 처리를 웹 서버에 맡겨 서버의 부하를 줄이는 것이 좋다.
🤔 만약 WAS, DB만으로 웹 시스템을 구성하게 된다면?
앞서 언급했듯이 WAS가 혼자 너무 많은 역할을 담당하게 되어 서버의 과부하가 우려된다. 만약 WAS가 장애를 일으켜 처리가 불가능하게 되면 클라이언트에게 오류 메시지를 보여줄 수도 없다.
💡 가장 이상적인 웹 시스템 구성은?
- 정적 리소스는 웹 서버가 처리한다.
- 웹서버는 애플리케이션의 로직 수행 같은 동적인 처리가 필요하면 WAS에 클라이언트의 요청을 위임한다.
- WAS는 중요한 로직 처리를 전담한다.
- 정적 리소스가 많이 사용된다면 웹 서버를 증설하고, 애플리케이션 리소스가 많이 사용되면 WAS를 증설하는 효율적인 관리가 필요하다.
참고 :
김영한 님의 스프링 MVC 1편
https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html
728x90
'넓고 얕은 웹 지식' 카테고리의 다른 글
NGINX 설치 및 간단히 알아보기 (0) | 2023.05.12 |
---|---|
프록시 서버(Proxy Server) 요약 정리 (0) | 2023.05.12 |
스레드 & 스레드 풀 1분 요약 정리 (0) | 2023.02.05 |
서블릿(Servlet) 1분 요약 정리 (0) | 2023.02.05 |
CSR, SSR (0) | 2022.10.30 |