728x90
반응형
1. 웹서버(Web Server)
클라이언트(ex. 웹 브라우저)의 요청을 받아 정적인 컨텐츠(HTML, CSS, 이미지, JavaScript 파일 등)을 처리하고 응답하는 역할
- 특징
- 정적 컨텐츠 제공
- HTML, CSS, 이미지, JavaScript 파일과 같은 정적인 리소스를 클라이언트에 전달
- WAS에 거치지 않고 바로 자원 제공
- HTTP 요청 처리
- 주로 HTTP/HTTPS 프로토콜을 통해 클라이언트의 요청을 처리하고 응답
- 동적인 컨텐츠 제공을 위한 요청 전달
- 클라이언트의 요청을 WAS로 보내고 WAS가 처리한 결과를 클라이언트에게 전달
- 기능의 단순성
- 요청된 정적 파일을 찾아 반환하는 것이 주요 기능이기 때문에 매우 단순한 구조
- 정적 컨텐츠 제공
- 대표적인 예
- Apache HTTP Server
- Nginx
- 클라이언트가 브라우저에서 특정 URL을 요청하면, 웹서버는 해당 요청을 받고 서버에 저장된 HTML 페이지나 이미지 파일 등을 찾아 클라이언트에게 전달
2. WAS(Web Application Server)
동적인 웹 어플리케이션을 실행하고 제공하는 서버
동적인 컨텐츠(데이터베이스 조회, 사용자 세션 관리 등)를 처리하는 로직이 포함된 어플리케이션 실행
- WAS = Web Server + Web Container
- 웹 컨테이너(Web Container) or 서블릿 컨테이너(Servlet Container) 라고도 불림
- Container란 JSP, Servlet을 실행시킬 수 있는 소프트웨어
- 즉, WAS는 JSP, Servlet 구동 환경 제공
- 특징
- 동적 컨텐츠 관리
- 서버에서 실행되는 코드(JSP, Servlet, Spring 등)를 통해 데이터베이스와의 상호작용, 비즈니스 로직 처리 등 등을 수행
- 어플리케이션 관리
- 웹 어플리케이션을 실행하고 데이터베이스와의 연결, 트랜잭션 관리, 세션 관리 등의 어플리케이션의 전반적인 로직 관리
- 웹 서버 기능 포함
- 내부적으로 웹 서버의 기능을 가지고 있어 정적인 컨텐츠도 함께 처리 가능
- 동적 컨텐츠 관리
- 대표적인 예
- Tomcat
- JBoss
- WebLogin
- WebSphere
- 클라이언트가 로그인 요청을 보내면, WAS는 요청을 받아서 데이터베이스를 조회하고 사용자가 입력한 정보가 맞는지 확인한 후, 결과에 따라 응답을 생성하여 클라이언트에 반환
3. 웹서버와 WAS 차이
구분 | 웹서버(Web Server) | WAS(Web Application Server) |
주요 역할 | 정적 컨텐츠 제공 (HTML, CSS, 이미지 등) | 동적 컨텐츠 처리 (어플리케이션 로직 실행) |
처리 대상 | 정적 파일 (HTML, CSS, JS, 이미지 등) | 동적 요청 (JSP, Servlet, 비즈니스 로직, DB 연동 등) |
기능 | HTTP 요청 처리 및 정적 리소스 반환 | 어플리케이션 실행, 트랜잭션 처리, 비즈니스 로직 처리 |
예시 | Apache, Nginx | Tomcat, JBoss, WebLogic |
특징 | 경량화, 빠른 정적 파일 처리 | 무거운 작업(비즈니스 로직, DB 처리, 트랜잭션 관리 등) 담당 |
4. 웹서버와 WAS 사용
- 일반적으로 웹서버와 WAS는 함께 배포되어 각자 역할 분담
- 즉, 웹서버가 클라이언트로부터 받은 요청을 해석한 후, 정적 컨텐츠는 직접 처리하고, 동적 컨텐츠 요청(예: 데이터베이스 조회, 사용자 인증 등)은 WAS로 전달하여 처리
- 이러한 방식으로 웹서버와 WAS가 협력함으로써 시스템의 성능을 최적화하고, 각각의 서버가 자신의 역할에 집중하여 효율적으로 동작
- 예시
- Nginx + Tomcat
- Apache + Tomcat
- Nginx나 Apache는 클라이언트의 HTTP 요청을 받아 정적 리소스는 직접 처리하고, 동적 요청은 Tomcat 같은 WAS로 전달
- Tomcat은 동적 요청을 처리하고, 결과를 Nginx나 Apache를 통해 클라이언트에게 전달
5. 웹서버와 WAS를 구분하는 이유
- 웹서버가 필요한 이유
- 클라이언트에 정적인 컨텐츠를 보내는 과정
- 이미지 파일과 같은 정적인 컨텐츠들은 웹 문서가 클라이언트로 전달될 때 함께 가는 것이 아니라 클라이언트는 웹 문서를 받고 그에 맞는 이미지 파일 등을 다시 서버에 요청하여 그때 이미지 파일 등을 받아옴
- 웹서버를 통해 정적인 컨텐츠를 WAS까지 가지 않고 빠르게 전달하여 기능을 분배함으로써 서버의 부담 감소
- 클라이언트에 정적인 컨텐츠를 보내는 과정
- WAS가 필요한 이유
- 웹 페이지는 정적 컨텐츠와 동적 컨텐츠가 모두 존재
- 사용자의 요청에 맞게 적절한 동적 컨텐츠를 만들어서 제공해야 함
- 이때, 웹서버만을 이용한다면 사용자가 원하는 요청에 대한 결과값을 모두 미리 만들어 놓고 서비스를 해야 함
- 하지만 이렇게 수행하면 자원이 절대적으로 부족하다는 문제점 발생
- 따라서 WAS를 통해 요청에 맞는 데이터를 DB에서 가져와서 비즈니스 로직에 맞게 그때 그때 결과를 만들어서 제공함으로써 자원을 효율적으로 사용
6. 최근 동향
- 최근에는 Nginx와 같은 웹서버가 매우 가볍고 빠른 성능을 제공하여, 웹서버와 WAS를 분리하지 않고 Nginx나 Apache 같은 웹서버를 WAS처럼 활용하는 경우도 있음
- 또한 Spring Boot와 같은 프레임워크는 자체적으로 내장 WAS(Tomcat)를 포함하여, 단일 어플리케이션에서 정적 및 동적 콘텐츠를 모두 처리할 수 있음
결론적으로, 웹서버는 정적 콘텐츠 처리, WAS는 동적 콘텐츠 처리를 담당하며, 협력하여 웹 어플리케이션의 성능과 확장성을 높이는 방식으로 사용
728x90
반응형