개요
웹 서버, WAS, Container가 무엇이고, 어떻게 동작하는지를 간단히 알아보자.
정적 페이지와 동적 페이지
우선 들어가기 전 정적 페이지와 동적 페이지에 대해 알아보자.
정적 페이지 (Static Page)
데이터베이스에서 정보를 가져오거나 별도의 서버에서의 처리가 없어도, 사용자들에게 보여줄 수 있는 페이지를 말한다.
어떤 사용자가 오든 간에 동일할 페이지를 제공하는 것이 특징이다. 정적인 요소에는 HTML, CSS, JS, 이미지 같은 요소들이 있다.
동적 페이지 (Dynamic Page)
어떠한 요청에 의하여 서버가 일을 수행하고 해당 결과가 포함된 파일을 보여주는 페이지. 사용자들마다 다른 페이지가 보일 수 있다. ex) 네이버 / 내 메일함.
웹 서버와 컨테이너, WAS
웹 서버 (Web Server)
- 웹 서버의 개념과 역할
- 웹 서버는 웹 브라우저와 같은 클라이언트의 HTTP 요청을 처리 및 응답하고 인터넷을 통해 요청된 콘텐츠를 제공한다.
- 일반적으로 HTML, CSS 및 JavaScript와 같은 정적 파일을 제공.
- 동적인 요청이 클라이언트로부터 들어왔을 때, 이를 컨테이너(Container)로 보내줌
- 웹 서버는 웹 브라우저와 같은 클라이언트의 HTTP 요청을 처리 및 응답하고 인터넷을 통해 요청된 콘텐츠를 제공한다.
- 웹 서버의 종류
- 아파치 HTTP 서버
- NGINX
- IIS (마이크로소프트 인터넷 정보 서비스)
- Node.js (자체 웹 서버를 내장)
웹 컨테이너 (Web Container)
서블릿 컨테이너 또는 애플리케이션 서버라고도 하는 웹 컨테이너는 웹 애플리케이션을 위한 런타임 환경을 제공하는 소프트웨어 환경이다. 서블릿, JSP(JavaServer Pages) 및 필터와 같은 웹 구성 요소의 수명 주기를 관리한다.
웹 컨테이너는 웹 서버와 웹 애플리케이션 간의 중간 계층 역할을 한다. 웹 서버에서 요청을 받아 처리하고 응답을 웹 서버로 다시 보낸다. JVM(Java Virtual Machine) 및 기타 필요한 라이브러리를 포함하는 런타임 환경을 제공하여 웹 애플리케이션이 그 안에서 실행될 수 있도록 한다.
- 웹 컨테이너 종류
- Apache Tomcat
- Jetty
- JBoss
- GlassFish
웹 컨테이너의 작동
- 클라이언트 웹 서버로 request를 보냄.
- 서블릿을 포함하는 WAS는 컨테이너로 요청을 보낸다.
- 컨테이너가 요청을 각 서블릿에게 넘겨준다.
- 서블릿은 컨테이너에게 관련 reponse를 넘겨준다.
- 컨테이너는 이를 서버에게 전달한다. 서버는 reponse을 클라이언트에게 전달한다.
WAS (Web Application Server)
웹 서버로부터 오는 동적인 요청을 처리하는 서버.
예를 들어, 네이버에 로그인하여 내 메일함에 들어간다고 가정하자. 메일함에 들어간다고 할 때, 개인의 고유한 정보를 보여주는 페이지다 보니 WAS에서는 DB에서 적절한 데이터를 가져와야 한다. 그다음에 원하는 데이터를 가공해, 파일로 해당 데이터를 보내준다.
Web Server가 필요한 이유
정적인 파일들은 웹 문서(HTML)가 클라이언트로 보내질 때 함께 보내지는게 아니다. 클라이언트는 HTML문서를 먼저 받고 그에 맞게 필요한 이미지, 파일 등을 다시 서버로 요청하면 그때서야 파일들을 받아온다.
이때 정적인 파일들은 Application Server(컨테이너)까지 가지 않고 웹 서버가 앞단에서 빠르게 보내줄 수 있다.
즉, Web Server에 정적 콘텐츠만 처리하도록 기능을 분배해 서버의 부담을 줄일 수 있다.
WAS가 필요한 이유
웹 페이지는 정적, 동적 콘텐츠가 존재. 웹 서버가 이를 다 처리할 수 없음.
그렇기에 WAS를 통해 요청에 맞는 데이터를 DB에서 가져와서 비즈니스 로직에 맞게 그때그때 결과를 만들어서 제공함으로써 자원을 효율적으로 사용할 수 있다.
'Web' 카테고리의 다른 글
[Web] Servlet and JVM (0) | 2023.02.22 |
---|